ceedling 1.1.9 → 1.2.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 (1130) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -0
  3. data/.simplecov +73 -0
  4. data/GIT_COMMIT_SHA +1 -1
  5. data/Gemfile +84 -8
  6. data/Gemfile.lock +38 -8
  7. data/README.md +53 -30
  8. data/Rakefile +768 -16
  9. data/assets/{project.yml → features/project.yml} +4 -1
  10. data/assets/fixtures/bullseye_branch_coverage/src/branchy.c +24 -0
  11. data/assets/fixtures/bullseye_branch_coverage/src/branchy.h +14 -0
  12. data/assets/fixtures/bullseye_branch_coverage/test/test_branchy.c +18 -0
  13. data/assets/fixtures/cppcheck_findings/findings.c +23 -0
  14. data/assets/fixtures/cppcheck_findings/findings.h +13 -0
  15. data/assets/fixtures/header_include_path_validation/alt_drivers/foo.h +6 -0
  16. data/assets/fixtures/header_include_path_validation/bar.h +6 -0
  17. data/assets/fixtures/header_include_path_validation/drivers/foo.h +6 -0
  18. data/assets/fixtures/header_include_path_validation/dup.h +6 -0
  19. data/assets/fixtures/header_include_path_validation/other_inc/dup.h +6 -0
  20. data/assets/fixtures/header_include_path_validation/test_ambiguous_mock.c +15 -0
  21. data/assets/fixtures/header_include_path_validation/test_bare_mock.c +11 -0
  22. data/assets/fixtures/header_include_path_validation/test_bogus_mock_path.c +11 -0
  23. data/assets/fixtures/header_include_path_validation/test_bogus_vanilla_path.c +10 -0
  24. data/assets/fixtures/header_include_path_validation/test_include_outranks_test_include_path.c +16 -0
  25. data/assets/fixtures/header_include_path_validation/test_pathed_mock.c +11 -0
  26. data/assets/fixtures/header_include_path_validation/test_pathed_mock_ambiguous.c +14 -0
  27. data/assets/fixtures/header_include_path_validation/test_test_include_path_outranks_include.c +17 -0
  28. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.c +6 -0
  29. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.h +6 -0
  30. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.c +6 -0
  31. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.h +6 -0
  32. data/assets/fixtures/implicit_source_header_correspondence/gamma/dup_gamma.c +6 -0
  33. data/assets/fixtures/implicit_source_header_correspondence/test_dup_alpha.c +10 -0
  34. data/assets/fixtures/implicit_source_header_correspondence/test_dup_bare.c +10 -0
  35. data/assets/fixtures/implicit_source_header_correspondence/test_dup_beta.c +10 -0
  36. data/assets/fixtures/implicit_source_header_correspondence/test_dup_override.c +19 -0
  37. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive.c +19 -0
  38. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive_noop.c +16 -0
  39. data/assets/fixtures/parent_directory_references/alpha/extra.c +4 -0
  40. data/assets/fixtures/parent_directory_references/common/helper.c +6 -0
  41. data/assets/fixtures/parent_directory_references/common/helper.h +6 -0
  42. data/assets/fixtures/parent_directory_references/unit/test_dotdot_include.c +10 -0
  43. data/assets/fixtures/parent_directory_references/unit/test_dotdot_source.c +16 -0
  44. data/assets/fixtures/plain_inline_module.h +9 -0
  45. data/assets/fixtures/same_named_modules/include/drivers/spi/config.h +6 -0
  46. data/assets/fixtures/same_named_modules/include/drivers/uart/config.h +6 -0
  47. data/assets/fixtures/same_named_modules/src/drivers/spi/config.c +8 -0
  48. data/assets/fixtures/same_named_modules/src/drivers/uart/config.c +10 -0
  49. data/assets/fixtures/same_named_modules/test/test_both_configs.c +26 -0
  50. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked.c +20 -0
  51. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked_traditional.c +19 -0
  52. data/assets/fixtures/same_named_modules/test/test_both_modules.c +19 -0
  53. data/assets/fixtures/same_named_modules/test/test_uart_config_bare.c +19 -0
  54. data/assets/fixtures/same_named_modules/test/test_uart_config_partial_only.c +20 -0
  55. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.c +6 -0
  56. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.h +6 -0
  57. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.c +6 -0
  58. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.h +6 -0
  59. data/assets/fixtures/sources_with_duplicate_basenames/main.c +11 -0
  60. data/assets/fixtures/sources_with_duplicate_basenames/test_baz_bar.c +10 -0
  61. data/assets/fixtures/sources_with_duplicate_basenames/test_both_bars.c +12 -0
  62. data/assets/fixtures/sources_with_duplicate_basenames/test_foo_bar.c +10 -0
  63. data/assets/{test_example_file_boom.c → fixtures/test_nosanitize_boom.c} +9 -0
  64. data/assets/{test_example_file_crash_assert.c → fixtures/test_nosanitize_crash_assert.c} +8 -0
  65. data/assets/{test_example_file_crash_sigsegv.c → fixtures/test_nosanitize_crash_sigsegv.c} +8 -0
  66. data/assets/{test_example_file_crash_sigsegv_with_param.c → fixtures/test_nosanitize_crash_sigsegv_with_param.c} +8 -0
  67. data/assets/fixtures/test_nosanitize_heap_buffer_overflow.c +31 -0
  68. data/assets/fixtures/test_nosanitize_leak.c +34 -0
  69. data/assets/fixtures/test_nosanitize_two_findings.c +36 -0
  70. data/assets/{test_example_file_ub_shift_overflow.c → fixtures/test_nosanitize_ub_shift_overflow.c} +9 -0
  71. data/assets/fixtures/test_plain_inline_module.c +15 -0
  72. data/assets/fixtures/test_source_file_duplicate_basenames/alpha/calc.c +4 -0
  73. data/assets/fixtures/test_source_file_duplicate_basenames/beta/calc.c +4 -0
  74. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_alpha.c +15 -0
  75. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_ambiguous.c +15 -0
  76. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_beta.c +15 -0
  77. data/assets/fixtures/tests_with_conditional_includes/src/feature_extra2.h +13 -0
  78. data/assets/fixtures/tests_with_conditional_includes/src/macro_target_extra.h +13 -0
  79. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.c +19 -3
  80. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.h +1 -0
  81. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.c +17 -1
  82. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget.c +12 -4
  83. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget_feature.c +8 -5
  84. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.c +7 -0
  85. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.h +6 -0
  86. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.c +16 -0
  87. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.h +6 -0
  88. data/assets/fixtures/tests_with_conditional_mocks/src/FeatureConfig.h +6 -0
  89. data/assets/fixtures/tests_with_conditional_mocks/src/Gpt.h +6 -0
  90. data/assets/fixtures/tests_with_conditional_mocks/src/MyModuleConfig.h +17 -0
  91. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart1.h +6 -0
  92. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart2.h +6 -0
  93. data/assets/fixtures/tests_with_conditional_mocks/src/drivers/widget.h +6 -0
  94. data/assets/fixtures/tests_with_conditional_mocks/src/reader.c +7 -0
  95. data/assets/fixtures/tests_with_conditional_mocks/src/reader.h +6 -0
  96. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01.c +21 -0
  97. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01_legacy.c +16 -0
  98. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_02.c +31 -0
  99. data/assets/fixtures/tests_with_conditional_mocks/test/test_FeatureConfig.c +15 -0
  100. data/assets/fixtures/tests_with_conditional_mocks/test/test_reader.c +13 -0
  101. data/assets/fixtures/tests_with_duplicate_test_names/integration/test_foo.c +21 -0
  102. data/assets/fixtures/tests_with_duplicate_test_names/unit/test_foo.c +21 -0
  103. data/assets/fixtures/tests_with_fallback_conditionals/src/conditional_module.c +28 -0
  104. data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/test/test_conditionals.c +8 -1
  105. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_lower.s +2 -0
  106. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_upper.S +13 -0
  107. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.c +13 -0
  108. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.h +13 -0
  109. data/assets/fixtures/tests_with_multiple_assembly_extensions/test/test_counter_module.c +27 -0
  110. data/assets/fixtures/tests_with_subdir_includes/src/module/app/config.h +13 -0
  111. data/assets/fixtures/tests_with_subdir_includes/src/module/drivers/config.h +13 -0
  112. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.c +30 -0
  113. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.h +13 -0
  114. data/assets/fixtures/tests_with_subdir_includes/src/shared/config.h +13 -0
  115. data/assets/fixtures/tests_with_subdir_includes/test/test_sensor.c +32 -0
  116. data/bin/actionator.rb +234 -0
  117. data/bin/app_cfg.rb +7 -0
  118. data/bin/cli.rb +78 -47
  119. data/bin/cli_handler.rb +89 -57
  120. data/bin/cli_helper.rb +90 -49
  121. data/bin/cli_options_transform.rb +22 -0
  122. data/bin/{configinator.rb → composinator.rb} +39 -32
  123. data/bin/mixin_resolvinator.rb +124 -0
  124. data/bin/mixin_standardizer.rb +31 -61
  125. data/bin/mixinator.rb +27 -29
  126. data/bin/mixins.rb +0 -5
  127. data/bin/objects.yml +20 -7
  128. data/bin/path_validator.rb +6 -5
  129. data/bin/projectinator.rb +51 -142
  130. data/bin/rake_patches.rb +36 -2
  131. data/bin/recursive_merger.rb +7 -1
  132. data/bin/versionator.rb +2 -3
  133. data/ceedling.gemspec +83 -12
  134. data/docs/BreakingChanges.md +46 -2
  135. data/docs/CONTRIBUTING.md +45 -29
  136. data/docs/CeedlingPullRequestChecklist.md +10 -9
  137. data/docs/Changelog.md +337 -37
  138. data/docs/KnownIssues.md +39 -4
  139. data/docs/ReleaseNotes.md +288 -12
  140. data/docs/SECURITY.md +86 -4
  141. data/docs/ThrowTheSwitchCodingStandard.md +21 -3
  142. data/docs/overrides/main.html +32 -0
  143. data/examples/temp_sensor/mixin/add_bullseye.yml +19 -0
  144. data/examples/wondrous_forest/README.md +3 -0
  145. data/examples/wondrous_forest/src/sensors/light/Calibration.c +21 -0
  146. data/examples/wondrous_forest/src/sensors/light/Calibration.h +14 -0
  147. data/examples/wondrous_forest/src/sensors/soil/Calibration.c +23 -0
  148. data/examples/wondrous_forest/src/sensors/soil/Calibration.h +14 -0
  149. data/examples/wondrous_forest/test/TestCalibration.c +39 -0
  150. data/lib/ceedling/batchinator.rb +81 -22
  151. data/lib/ceedling/c_extractor/README.md +61 -0
  152. data/lib/ceedling/c_extractor/c_extractor.rb +33 -2
  153. data/lib/ceedling/c_extractor/c_extractor_code_text.rb +18 -10
  154. data/lib/ceedling/c_extractor/c_extractor_constants.rb +10 -10
  155. data/lib/ceedling/c_extractor/c_extractor_declarations.rb +14 -14
  156. data/lib/ceedling/c_extractor/c_extractor_functions.rb +10 -13
  157. data/lib/ceedling/c_extractor/c_extractor_preprocessing.rb +77 -0
  158. data/lib/ceedling/c_extractor/c_extractor_types.rb +8 -5
  159. data/lib/ceedling/ceedling.h +33 -0
  160. data/lib/ceedling/config/config_matchinator.rb +36 -13
  161. data/lib/ceedling/config/configurator.rb +366 -530
  162. data/lib/ceedling/config/configurator_builder.rb +253 -365
  163. data/lib/ceedling/config/configurator_plugins.rb +68 -102
  164. data/lib/ceedling/config/configurator_setup.rb +343 -610
  165. data/lib/ceedling/config/configurator_validator.rb +114 -142
  166. data/lib/ceedling/config/line_marker_suppressors.rb +67 -0
  167. data/lib/ceedling/constants.rb +60 -6
  168. data/lib/ceedling/defaults.rb +28 -14
  169. data/lib/ceedling/defineinator.rb +9 -4
  170. data/lib/ceedling/dependencies/README.md +69 -0
  171. data/lib/ceedling/dependencies/dependency_cache_store.rb +160 -0
  172. data/lib/ceedling/dependencies/dependency_debug_tree.rb +129 -0
  173. data/lib/ceedling/dependencies/dependency_differ.rb +127 -0
  174. data/lib/ceedling/dependencies/dependency_hasher.rb +94 -0
  175. data/lib/ceedling/dependencies/dependency_path_normalizer.rb +80 -0
  176. data/lib/ceedling/dependencies/dependency_tracker.rb +405 -0
  177. data/lib/ceedling/dependencies/dependinator.rb +65 -0
  178. data/lib/ceedling/dependencies/gcc_dependency_parser.rb +86 -0
  179. data/lib/ceedling/encodinator.rb +23 -11
  180. data/lib/ceedling/file_finder.rb +373 -89
  181. data/lib/ceedling/file_finder_helper.rb +44 -33
  182. data/lib/ceedling/file_path_collection_utils.rb +17 -4
  183. data/lib/ceedling/file_path_utils.rb +310 -52
  184. data/lib/ceedling/file_wrapper.rb +245 -8
  185. data/lib/ceedling/filename_extension.rb +91 -0
  186. data/lib/ceedling/flaginator.rb +6 -2
  187. data/lib/ceedling/generators/generator.rb +202 -75
  188. data/lib/ceedling/generators/generator_helper.rb +116 -69
  189. data/lib/ceedling/generators/generator_mocks.rb +13 -8
  190. data/lib/ceedling/generators/generator_partials.rb +93 -25
  191. data/lib/ceedling/generators/generator_test_results.rb +29 -17
  192. data/lib/ceedling/generators/generator_test_results_backtrace.rb +199 -107
  193. data/lib/ceedling/generators/generator_test_results_sanity_checker.rb +1 -1
  194. data/lib/ceedling/includes/include_factory.rb +21 -6
  195. data/lib/ceedling/includes/include_pathinator.rb +40 -4
  196. data/lib/ceedling/includes/includes.rb +215 -61
  197. data/lib/ceedling/loginator.rb +13 -4
  198. data/lib/ceedling/objects.yml +218 -33
  199. data/lib/ceedling/parsing_parcels.rb +39 -13
  200. data/lib/ceedling/partials/README.md +53 -0
  201. data/lib/ceedling/partials/partializer.rb +272 -117
  202. data/lib/ceedling/partials/partializer_config.rb +141 -8
  203. data/lib/ceedling/partials/partializer_helper.rb +88 -2
  204. data/lib/ceedling/partials/partializer_utils.rb +1 -1
  205. data/lib/ceedling/partials/partials.rb +4 -4
  206. data/lib/ceedling/path_matcher.rb +163 -0
  207. data/lib/ceedling/path_mirror.rb +73 -0
  208. data/lib/ceedling/plugins/plugin.rb +1 -1
  209. data/lib/ceedling/plugins/plugin_manager.rb +31 -15
  210. data/lib/ceedling/plugins/plugin_manager_helper.rb +5 -1
  211. data/lib/ceedling/plugins/plugin_reportinator.rb +36 -7
  212. data/lib/ceedling/plugins/plugin_reportinator_helper.rb +3 -3
  213. data/lib/ceedling/plugins/report_log_writer_plugin.rb +66 -0
  214. data/lib/ceedling/plugins/report_tests_stdout_plugin.rb +18 -5
  215. data/lib/ceedling/preprocess/README.md +135 -120
  216. data/lib/ceedling/preprocess/c_comment_scanner.rb +9 -7
  217. data/lib/ceedling/preprocess/c_preprocessor_conditionals.rb +27 -10
  218. data/lib/ceedling/preprocess/preprocessinator.rb +253 -217
  219. data/lib/ceedling/preprocess/preprocessinator_bare_includes_extractor.rb +7 -10
  220. data/lib/ceedling/preprocess/preprocessinator_code_finder.rb +8 -6
  221. data/lib/ceedling/preprocess/preprocessinator_comment_stripper.rb +5 -3
  222. data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +86 -82
  223. data/lib/ceedling/preprocess/preprocessinator_includes_handler.rb +182 -163
  224. data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +174 -8
  225. data/lib/ceedling/preprocess/preprocessinator_reconstructor.rb +41 -20
  226. data/lib/ceedling/quote_include_isolator.rb +129 -0
  227. data/lib/ceedling/rake_app/rake_task_registry.rb +9 -9
  228. data/lib/ceedling/rake_app/rake_wrapper.rb +0 -13
  229. data/lib/ceedling/rake_app/rakefile_component_resolver.rb +24 -12
  230. data/lib/ceedling/rakefile.rb +2 -1
  231. data/lib/ceedling/{tasks_base.rake → rakefiles/base/tasks_base.rake} +1 -1
  232. data/lib/ceedling/{tasks_filesystem.rake → rakefiles/base/tasks_filesystem.rake} +3 -0
  233. data/lib/ceedling/rakefiles/release/rules_release.rake +52 -0
  234. data/lib/ceedling/{erb_wrapper.rb → rakefiles/release/tasks_release.rake} +5 -8
  235. data/lib/ceedling/rakefiles/tests/rules_tests.rake +43 -0
  236. data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +80 -0
  237. data/lib/ceedling/{tasks_tests.rake → rakefiles/tests/tasks_tests.rake} +11 -20
  238. data/lib/ceedling/rakefiles/tests/tasks_tests_generate.rake +55 -0
  239. data/lib/ceedling/release_invoker/README.md +35 -0
  240. data/lib/ceedling/release_invoker/release_build_executor.rb +263 -0
  241. data/lib/ceedling/release_invoker/release_build_planner.rb +80 -0
  242. data/lib/ceedling/release_invoker/release_invoker.rb +78 -0
  243. data/lib/ceedling/release_invoker/release_invoker_types.rb +40 -0
  244. data/lib/ceedling/reportinator.rb +18 -2
  245. data/lib/ceedling/ruby_expandinator.rb +40 -1
  246. data/lib/ceedling/setupinator.rb +9 -3
  247. data/lib/ceedling/system_wrapper.rb +17 -0
  248. data/lib/ceedling/templateinator.rb +146 -0
  249. data/lib/ceedling/test_context_extractor.rb +59 -28
  250. data/lib/ceedling/test_invoker/HEADER_COLLISIONS.md +41 -0
  251. data/lib/ceedling/test_invoker/PIPELINE.md +142 -0
  252. data/lib/ceedling/test_invoker/README.md +6 -0
  253. data/lib/ceedling/test_invoker/mock_locator.rb +49 -0
  254. data/lib/ceedling/test_invoker/partials_manager.rb +426 -0
  255. data/lib/ceedling/test_invoker/standin_headerinator.rb +136 -0
  256. data/lib/ceedling/test_invoker/test_bare_includes_extractinator.rb +117 -0
  257. data/lib/ceedling/test_invoker/test_build_executor.rb +783 -415
  258. data/lib/ceedling/test_invoker/test_build_planner.rb +175 -70
  259. data/lib/ceedling/test_invoker/test_build_setup.rb +132 -241
  260. data/lib/ceedling/test_invoker/test_build_validations.rb +102 -0
  261. data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +148 -0
  262. data/lib/ceedling/test_invoker/test_includes_extractinator.rb +34 -0
  263. data/lib/ceedling/test_invoker/test_includes_preprocessinator.rb +118 -0
  264. data/lib/ceedling/test_invoker/test_includes_reconcilinator.rb +149 -0
  265. data/lib/ceedling/test_invoker/test_invoker.rb +16 -183
  266. data/lib/ceedling/test_invoker/test_invoker_types.rb +85 -16
  267. data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +121 -0
  268. data/lib/ceedling/test_invoker/test_pipeline_manager.rb +303 -0
  269. data/lib/ceedling/test_invoker/test_runner_generatinator.rb +105 -0
  270. data/lib/ceedling/test_invoker/test_search_paths.rb +73 -0
  271. data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +78 -0
  272. data/lib/ceedling/tool_executor.rb +42 -13
  273. data/lib/ceedling/tool_executor_helper.rb +1 -1
  274. data/lib/ceedling/tool_validator.rb +124 -123
  275. data/lib/ceedling/yaml_wrapper.rb +5 -3
  276. data/lib/version.rb +19 -2
  277. data/mkdocs.prerelease.yml +42 -0
  278. data/mkdocs.yml +10 -2
  279. data/plugins/bullseye/bullseye.rake +70 -107
  280. data/plugins/bullseye/config/defaults.yml +12 -54
  281. data/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  282. data/plugins/bullseye/lib/bullseye.rb +511 -120
  283. data/plugins/bullseye/lib/bullseye_constants.rb +100 -0
  284. data/plugins/command_hooks/lib/command_hooks.rb +117 -199
  285. data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +72 -27
  286. data/plugins/cppcheck/config/defaults.yml +6 -1
  287. data/plugins/cppcheck/config/defaults_cppcheck.rb +5 -1
  288. data/plugins/cppcheck/cppcheck.rake +7 -1
  289. data/plugins/cppcheck/lib/cppcheck.rb +175 -26
  290. data/plugins/cppcheck/lib/cppcheck_constants.rb +12 -0
  291. data/plugins/cppcheck/lib/cppcheck_reports.rb +5 -1
  292. data/plugins/dependencies/Rakefile +14 -2
  293. data/plugins/dependencies/config/defaults.yml +9 -6
  294. data/plugins/dependencies/dependencies.rake +46 -76
  295. data/plugins/dependencies/example/boss/project.yml +1 -1
  296. data/plugins/dependencies/example/supervisor/project.yml +1 -1
  297. data/plugins/dependencies/example/version.tar.gzip +0 -0
  298. data/plugins/dependencies/lib/dependencies.rb +232 -427
  299. data/plugins/dependencies/lib/dependency_commands.rb +72 -0
  300. data/plugins/dependencies/lib/dependency_environment.rb +57 -0
  301. data/plugins/dependencies/lib/dependency_spec.rb +145 -0
  302. data/plugins/fff/.rspec +1 -0
  303. data/plugins/fff/Rakefile +14 -2
  304. data/plugins/fff/examples/fff_example/project.yml +1 -1
  305. data/plugins/fff/lib/fff.rb +30 -9
  306. data/plugins/fff/lib/fff_mock_generator.rb +142 -128
  307. data/plugins/fff/spec/fff_mock_header_generator_spec.rb +15 -0
  308. data/plugins/fff/spec/fff_mock_source_generator_spec.rb +14 -0
  309. data/plugins/fff/spec/spec_helper.rb +45 -0
  310. data/plugins/fff/src/fff_unity_helper.h +5 -0
  311. data/plugins/fff/vendor/fff/fakegen.rb +5 -4
  312. data/plugins/fff/vendor/fff/fff.h +4 -4
  313. data/plugins/gcov/config/defaults.yml +5 -0
  314. data/plugins/gcov/gcov.rake +12 -8
  315. data/plugins/gcov/lib/console_reportinator.rb +140 -20
  316. data/plugins/gcov/lib/gcov.rb +155 -60
  317. data/plugins/gcov/lib/gcov_constants.rb +4 -7
  318. data/plugins/gcov/lib/gcov_reportinator.rb +90 -0
  319. data/plugins/gcov/lib/gcov_types.rb +62 -1
  320. data/plugins/gcov/lib/gcovr_reportinator.rb +255 -213
  321. data/plugins/gcov/lib/reportgenerator_reportinator.rb +122 -44
  322. data/plugins/module_generator/Rakefile +4 -4
  323. data/plugins/module_generator/config/module_generator.yml +0 -1
  324. data/plugins/module_generator/example/project.yml +1 -1
  325. data/plugins/module_generator/lib/module_generator.rb +117 -87
  326. data/plugins/module_generator/lib/module_generator_options.rb +150 -0
  327. data/plugins/module_generator/lib/module_generator_project.rb +45 -0
  328. data/plugins/module_generator/lib/module_generator_request.rb +83 -0
  329. data/plugins/module_generator/lib/module_generator_test_file.rb +68 -0
  330. data/plugins/module_generator/lib/module_generator_unity.rb +24 -0
  331. data/plugins/module_generator/module_generator.rake +24 -46
  332. data/plugins/report_build_warnings_log/config/defaults.yml +4 -1
  333. data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +47 -55
  334. data/plugins/report_build_warnings_log/lib/warning_collector.rb +140 -0
  335. data/plugins/report_build_warnings_log/lib/warning_reports.rb +135 -0
  336. data/plugins/report_tests_gtestlike_stdout/assets/test_results.template +3 -0
  337. data/{spec/units/configurator_builder_spec.rb → plugins/report_tests_gtestlike_stdout/config/defaults.yml} +6 -10
  338. data/plugins/report_tests_gtestlike_stdout/lib/gtestlike_report.rb +168 -0
  339. data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +25 -1
  340. data/plugins/report_tests_ide_stdout/assets/test_results.template +50 -0
  341. data/plugins/report_tests_ide_stdout/config/defaults.yml +13 -0
  342. data/plugins/report_tests_ide_stdout/lib/ide_report_lines.rb +103 -0
  343. data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +12 -4
  344. data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +33 -51
  345. data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +286 -295
  346. data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +22 -35
  347. data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +91 -133
  348. data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +72 -86
  349. data/plugins/report_tests_log_factory/lib/tests_reporter.rb +31 -12
  350. data/plugins/report_tests_pretty_stdout/assets/{template.erb → test_results.template} +8 -8
  351. data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +18 -48
  352. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +13 -2
  353. data/plugins/sanitize/config/defaults.yml +44 -0
  354. data/plugins/sanitize/config/defaults_sanitize.rb +20 -0
  355. data/plugins/sanitize/lib/sanitize.rb +174 -0
  356. data/plugins/sanitize/lib/sanitize_config.rb +110 -0
  357. data/plugins/sanitize/lib/sanitize_constants.rb +13 -0
  358. data/plugins/sanitize/lib/sanitize_findings.rb +85 -0
  359. data/plugins/sanitize/lib/sanitize_records.rb +115 -0
  360. data/plugins/sanitize/lib/sanitize_reports.rb +135 -0
  361. data/plugins/sanitize/sanitize.rake +108 -0
  362. data/plugins/valgrind/config/defaults.yml +7 -1
  363. data/plugins/valgrind/config/defaults_valgrind.rb +6 -1
  364. data/plugins/valgrind/lib/valgrind.rb +202 -39
  365. data/plugins/valgrind/lib/valgrind_constants.rb +4 -0
  366. data/plugins/valgrind/lib/valgrind_report.rb +52 -0
  367. data/plugins/valgrind/valgrind.rake +33 -11
  368. data/site-local/404.html +248 -14
  369. data/site-local/configuration/environment-vars.html +248 -14
  370. data/site-local/configuration/global-collections.html +248 -19
  371. data/site-local/configuration/index.html +249 -15
  372. data/site-local/configuration/loading.html +260 -22
  373. data/site-local/configuration/mixins.html +252 -17
  374. data/site-local/configuration/parallel-builds.html +248 -14
  375. data/site-local/configuration/project-file.html +275 -30
  376. data/site-local/configuration/reference/cexception.html +255 -20
  377. data/site-local/configuration/reference/cmock.html +281 -14
  378. data/site-local/configuration/reference/defines.html +262 -19
  379. data/site-local/configuration/reference/environment.html +251 -17
  380. data/site-local/configuration/reference/extension.html +361 -16
  381. data/site-local/configuration/reference/files.html +262 -14
  382. data/site-local/configuration/reference/flags.html +270 -19
  383. data/site-local/configuration/reference/index.html +248 -14
  384. data/site-local/configuration/reference/libraries.html +248 -14
  385. data/site-local/configuration/reference/mixins.html +248 -14
  386. data/site-local/configuration/reference/partials.html +249 -19
  387. data/site-local/configuration/reference/paths.html +275 -15
  388. data/site-local/configuration/reference/plugins.html +248 -14
  389. data/site-local/configuration/reference/project.html +291 -14
  390. data/site-local/configuration/reference/release-build.html +256 -14
  391. data/site-local/configuration/reference/test-build.html +290 -24
  392. data/site-local/configuration/reference/test-runner.html +288 -17
  393. data/site-local/configuration/reference/tools.html +254 -14
  394. data/site-local/configuration/reference/unity.html +280 -15
  395. data/site-local/configuration/which-ceedling.html +248 -14
  396. data/site-local/development/index.html +261 -14
  397. data/site-local/development/plugins/configuration.html +269 -17
  398. data/site-local/development/plugins/index.html +267 -15
  399. data/site-local/development/plugins/plugin-subclass.html +906 -154
  400. data/site-local/development/plugins/rake-tasks.html +276 -14
  401. data/site-local/development/releases.html +4708 -0
  402. data/site-local/development/workflow.html +1030 -51
  403. data/site-local/getting-started/builds.html +4607 -0
  404. data/site-local/getting-started/command-line.html +418 -34
  405. data/site-local/getting-started/example-projects/cipher-quest.html +248 -14
  406. data/site-local/getting-started/example-projects/index.html +249 -15
  407. data/site-local/getting-started/example-projects/temp-sensor.html +248 -14
  408. data/site-local/getting-started/example-projects/wondrous-forest.html +248 -14
  409. data/site-local/getting-started/index.html +255 -14
  410. data/site-local/getting-started/installation.html +258 -22
  411. data/site-local/getting-started/quick-start.html +251 -15
  412. data/site-local/help.html +255 -14
  413. data/site-local/index.html +292 -22
  414. data/site-local/overview/build-system.html +249 -15
  415. data/site-local/overview/index.html +248 -14
  416. data/site-local/overview/test-environments.html +257 -14
  417. data/site-local/overview/tools-and-frameworks.html +248 -14
  418. data/site-local/plugins/beep.html +251 -14
  419. data/site-local/plugins/bullseye/index.html +5079 -0
  420. data/site-local/plugins/bullseye/licensing.html +4840 -0
  421. data/site-local/plugins/command-hooks.html +265 -27
  422. data/site-local/plugins/compile-commands-json-db.html +256 -17
  423. data/site-local/plugins/cppcheck.html +1081 -262
  424. data/site-local/plugins/dependencies.html +934 -242
  425. data/site-local/plugins/fff.html +297 -16
  426. data/site-local/plugins/gcov/examples.html +251 -14
  427. data/site-local/plugins/gcov/gcovr.html +686 -31
  428. data/site-local/plugins/gcov/index.html +251 -14
  429. data/site-local/plugins/gcov/overview.html +259 -18
  430. data/site-local/plugins/gcov/reportgenerator.html +563 -28
  431. data/site-local/plugins/gcov/reporting.html +348 -100
  432. data/site-local/plugins/gcov/setup.html +253 -15
  433. data/site-local/plugins/gcov/tool-versions.html +301 -19
  434. data/site-local/plugins/gcov/troubleshooting.html +273 -36
  435. data/site-local/plugins/index.html +294 -36
  436. data/site-local/plugins/module-generator.html +779 -195
  437. data/site-local/plugins/report-build-warnings-log.html +578 -33
  438. data/site-local/plugins/report-tests-gtestlike-stdout.html +467 -84
  439. data/site-local/plugins/report-tests-ide-stdout.html +654 -51
  440. data/site-local/plugins/report-tests-log-factory.html +337 -70
  441. data/site-local/plugins/report-tests-pretty-stdout.html +251 -14
  442. data/site-local/plugins/report-tests-raw-output-log.html +251 -14
  443. data/site-local/plugins/report-tests-teamcity-stdout.html +251 -14
  444. data/site-local/plugins/sanitize.html +5332 -0
  445. data/site-local/plugins/valgrind.html +416 -26
  446. data/site-local/{plugins/bullseye.html → project/index.html} +297 -217
  447. data/site-local/project/release-history.html +251 -17
  448. data/site-local/project/sbom.html +4726 -0
  449. data/site-local/project/upgrade.html +250 -16
  450. data/site-local/reference/build-directives.html +257 -14
  451. data/site-local/reference/command-line.html +373 -16
  452. data/site-local/reference/environment-vars.html +248 -14
  453. data/site-local/reference/gcov-plugin.html +492 -18
  454. data/site-local/reference/global-collections.html +249 -15
  455. data/site-local/reference/index.html +248 -14
  456. data/site-local/reference/partials-macros.html +258 -14
  457. data/site-local/reference/project-configuration.html +248 -14
  458. data/site-local/sitemap.xml.gz +0 -0
  459. data/site-local/snapshot/assets/{project.yml → features/project.yml} +4 -1
  460. data/site-local/snapshot/examples/cipher_quest/index.html +248 -14
  461. data/site-local/snapshot/examples/temp_sensor/index.html +248 -14
  462. data/site-local/snapshot/examples/wondrous_forest/index.html +265 -25
  463. data/site-local/snapshot/plugins/bullseye/config/defaults.yml +24 -0
  464. data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  465. data/site-local/snapshot/plugins/gcov/config/defaults.yml +5 -0
  466. data/site-local/testing-guide/build-directives.html +332 -22
  467. data/site-local/testing-guide/conventions.html +678 -153
  468. data/site-local/testing-guide/frameworks.html +248 -14
  469. data/site-local/testing-guide/index.html +248 -21
  470. data/site-local/testing-guide/partials/configuration.html +248 -14
  471. data/site-local/testing-guide/partials/conventions.html +316 -17
  472. data/site-local/testing-guide/partials/directives.html +456 -48
  473. data/site-local/testing-guide/partials/example.html +248 -14
  474. data/site-local/testing-guide/partials/index.html +255 -14
  475. data/site-local/testing-guide/partials/overview.html +248 -14
  476. data/site-local/testing-guide/partials/variables.html +248 -14
  477. data/site-local/testing-guide/test-cases.html +248 -14
  478. data/site-local/testing-guide/test-sample.html +248 -14
  479. data/site-local/testing-guide/test-suite-anatomy.html +248 -14
  480. data/spec/integration/actionator_file_operations_spec.rb +287 -0
  481. data/spec/integration/analysis_tool_output_spec.rb +204 -0
  482. data/spec/{units/c_extractor/c_extractor_integration_spec.rb → integration/c_extractor_composition_spec.rb} +196 -17
  483. data/spec/integration/command_hooks_plugin_spec.rb +152 -0
  484. data/spec/integration/compile_commands_json_db_spec.rb +76 -0
  485. data/spec/integration/configurator_pipeline_spec.rb +180 -0
  486. data/spec/integration/configurator_plugins_spec.rb +122 -0
  487. data/spec/integration/configurator_validation_spec.rb +98 -0
  488. data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +396 -0
  489. data/spec/integration/dependencies/dependency_tracker_core_spec.rb +244 -0
  490. data/spec/integration/dependencies/dependency_tracker_diagnose_spec.rb +224 -0
  491. data/spec/integration/dependencies/dependency_tracker_filename_handling_spec.rb +118 -0
  492. data/spec/integration/dependencies/dependency_tracker_gcc_deps_spec.rb +199 -0
  493. data/spec/integration/dependencies/dependency_tracker_pruning_spec.rb +167 -0
  494. data/spec/integration/dependencies_plugin_spec.rb +473 -0
  495. data/spec/integration/erb_dependency_removed_spec.rb +167 -0
  496. data/spec/integration/includes_extraction_spec.rb +612 -0
  497. data/spec/integration/mixin_loading_spec.rb +414 -0
  498. data/spec/integration/module_generator_spec.rb +436 -0
  499. data/spec/integration/partials_fallback_preprocessing_spec.rb +316 -0
  500. data/spec/integration/partials_header_composition_spec.rb +889 -0
  501. data/spec/integration/partials_module_resolution_spec.rb +372 -0
  502. data/spec/integration/partials_symbol_linkage_spec.rb +371 -0
  503. data/spec/integration/preprocessing_transient_io_retry_spec.rb +135 -0
  504. data/spec/integration/quote_include_isolator_spec.rb +167 -0
  505. data/spec/integration/report_build_warnings_log_spec.rb +170 -0
  506. data/spec/integration/report_tests_log_factory_spec.rb +100 -0
  507. data/spec/integration/sanitizer_exclusions_spec.rb +126 -0
  508. data/spec/integration/system_harness_sanitizers_spec.rb +104 -0
  509. data/spec/integration/test_build_parallel_barrier_spec.rb +89 -0
  510. data/spec/integration/test_executable_manifest_spec.rb +118 -0
  511. data/spec/integration/test_includes_extractinator_spec.rb +293 -0
  512. data/spec/integration/tool_executor_spec.rb +224 -0
  513. data/spec/integration/tool_validator_spec.rb +133 -0
  514. data/spec/integration/vendor_copy_transient_io_retry_spec.rb +130 -0
  515. data/spec/manual/stress_test.rb +1 -1
  516. data/spec/support/config_yaml_helper.rb +17 -0
  517. data/spec/support/fixtures/sanitizer_reports/clang_asan_heap.txt +45 -0
  518. data/spec/support/fixtures/sanitizer_reports/clang_ubsan_shift.txt +5 -0
  519. data/spec/support/fixtures/sanitizer_reports/gcc_heap.txt +47 -0
  520. data/spec/support/fixtures/sanitizer_reports/gcc_leak.txt +10 -0
  521. data/spec/support/fixtures/sanitizer_reports/gcc_segv.txt +6 -0
  522. data/spec/support/fixtures/sanitizer_reports/gcc_ubsan_shift.txt +6 -0
  523. data/spec/support/fixtures/templates/bullseye__all_pass.txt +6 -0
  524. data/spec/support/fixtures/templates/bullseye__coverage_branches_only.txt +6 -0
  525. data/spec/support/fixtures/templates/bullseye__coverage_functions_only.txt +6 -0
  526. data/spec/support/fixtures/templates/bullseye__coverage_none.txt +6 -0
  527. data/spec/support/fixtures/templates/bullseye__empty.txt +6 -0
  528. data/spec/support/fixtures/templates/bullseye__gcov_context.txt +6 -0
  529. data/spec/support/fixtures/templates/bullseye__mixed_all.txt +6 -0
  530. data/spec/support/fixtures/templates/bullseye__one_failure_matching.txt +6 -0
  531. data/spec/support/fixtures/templates/bullseye__one_failure_multiline.txt +6 -0
  532. data/spec/support/fixtures/templates/bullseye__one_failure_no_message.txt +6 -0
  533. data/spec/support/fixtures/templates/bullseye__one_failure_nonmatching.txt +6 -0
  534. data/spec/support/fixtures/templates/bullseye__one_ignore_no_message.txt +6 -0
  535. data/spec/support/fixtures/templates/bullseye__one_ignore_with_message.txt +6 -0
  536. data/spec/support/fixtures/templates/bullseye__stdout_only.txt +6 -0
  537. data/spec/support/fixtures/templates/ide__all_pass.txt +10 -0
  538. data/spec/support/fixtures/templates/ide__coverage_branches_only.txt +10 -0
  539. data/spec/support/fixtures/templates/ide__coverage_functions_only.txt +10 -0
  540. data/spec/support/fixtures/templates/ide__coverage_none.txt +10 -0
  541. data/spec/support/fixtures/templates/ide__empty.txt +8 -0
  542. data/spec/support/fixtures/templates/ide__gcov_context.txt +28 -0
  543. data/spec/support/fixtures/templates/ide__mixed_all.txt +29 -0
  544. data/spec/support/fixtures/templates/ide__one_failure_matching.txt +15 -0
  545. data/spec/support/fixtures/templates/ide__one_failure_multiline.txt +17 -0
  546. data/spec/support/fixtures/templates/ide__one_failure_no_message.txt +15 -0
  547. data/spec/support/fixtures/templates/ide__one_failure_nonmatching.txt +15 -0
  548. data/spec/support/fixtures/templates/ide__one_ignore_no_message.txt +15 -0
  549. data/spec/support/fixtures/templates/ide__one_ignore_with_message.txt +15 -0
  550. data/spec/support/fixtures/templates/ide__stdout_only.txt +16 -0
  551. data/spec/support/fixtures/templates/pretty__all_pass.txt +8 -0
  552. data/spec/support/fixtures/templates/pretty__coverage_branches_only.txt +8 -0
  553. data/spec/support/fixtures/templates/pretty__coverage_functions_only.txt +8 -0
  554. data/spec/support/fixtures/templates/pretty__coverage_none.txt +8 -0
  555. data/spec/support/fixtures/templates/pretty__empty.txt +6 -0
  556. data/spec/support/fixtures/templates/pretty__gcov_context.txt +31 -0
  557. data/spec/support/fixtures/templates/pretty__mixed_all.txt +35 -0
  558. data/spec/support/fixtures/templates/pretty__one_failure_matching.txt +15 -0
  559. data/spec/support/fixtures/templates/pretty__one_failure_multiline.txt +17 -0
  560. data/spec/support/fixtures/templates/pretty__one_failure_no_message.txt +15 -0
  561. data/spec/support/fixtures/templates/pretty__one_failure_nonmatching.txt +15 -0
  562. data/spec/support/fixtures/templates/pretty__one_ignore_no_message.txt +15 -0
  563. data/spec/support/fixtures/templates/pretty__one_ignore_with_message.txt +15 -0
  564. data/spec/support/fixtures/templates/pretty__stdout_only.txt +15 -0
  565. data/spec/support/fixtures/valgrind_reports/sigsegv.log +51 -0
  566. data/spec/support/fixtures/valgrind_reports/sigsegv.xml +182 -0
  567. data/spec/support/include_guard_helper.rb +20 -0
  568. data/spec/support/integration/configurator_integration_helper.rb +159 -0
  569. data/spec/support/integration/dependency_tracker_integration_helper.rb +136 -0
  570. data/spec/support/integration/partials_generation_integration_helper.rb +726 -0
  571. data/spec/support/integration/spec_integration_helper.rb +285 -0
  572. data/spec/support/integration/test_includes_harness.rb +259 -0
  573. data/spec/support/integration/tool_executor_integration_helper.rb +55 -0
  574. data/spec/support/spec_helper.rb +41 -0
  575. data/spec/support/system/sanitizers/asan_ubsan.yml +82 -0
  576. data/spec/support/system/sanitizers/asan_ubsan_leaks.yml +57 -0
  577. data/spec/support/system/simplecov_boot.rb +66 -0
  578. data/spec/support/system/spec_system_helper.rb +376 -16
  579. data/spec/support/system/system_context.rb +181 -59
  580. data/spec/support/template_render_cases.rb +166 -0
  581. data/spec/system/bracket_path_handling_spec.rb +175 -0
  582. data/spec/system/build_output_mirroring_spec.rb +89 -0
  583. data/spec/system/build_recovery_spec.rb +382 -0
  584. data/spec/system/bullseye_deployment_spec.rb +102 -0
  585. data/spec/system/cli_surface_spec.rb +245 -0
  586. data/spec/system/command_hooks_spec.rb +117 -0
  587. data/spec/system/conditional_include_macro_visibility_spec.rb +32 -124
  588. data/spec/system/conditional_mock_includes_spec.rb +181 -0
  589. data/spec/system/cppcheck_deployment_spec.rb +26 -8
  590. data/spec/system/delta_builds_spec.rb +751 -0
  591. data/spec/system/deployment_as_gem_spec.rb +7 -0
  592. data/spec/system/deployment_as_vendor_spec.rb +29 -145
  593. data/spec/system/dumpconfig_spec.rb +137 -0
  594. data/spec/system/encoding_stress_spec.rb +7 -4
  595. data/spec/system/example_cipher_quest_spec.rb +25 -100
  596. data/spec/system/example_temp_sensor_spec.rb +30 -172
  597. data/spec/system/example_wondrous_forest_spec.rb +25 -62
  598. data/spec/system/extension_multiple_values_spec.rb +75 -0
  599. data/spec/system/files_paths_reporting_spec.rb +154 -0
  600. data/spec/system/gcov_deployment_spec.rb +72 -3
  601. data/spec/system/header_include_path_validation_spec.rb +222 -0
  602. data/spec/system/implicit_source_header_correspondence_disambiguation_spec.rb +100 -0
  603. data/spec/system/include_path_reconciliation_spec.rb +64 -0
  604. data/spec/system/mixin_ordering_spec.rb +30 -415
  605. data/spec/system/mocks_partials_configuration_validation_spec.rb +126 -0
  606. data/spec/system/parent_directory_reference_spec.rb +114 -0
  607. data/spec/system/partials_module_disambiguation_spec.rb +143 -0
  608. data/spec/system/pinned_thread_count_spec.rb +102 -0
  609. data/spec/system/plugin_delta_builds_spec.rb +179 -0
  610. data/spec/system/preprocessing_encoding_spec.rb +87 -4
  611. data/spec/system/preprocessing_fallback_conditionals_spec.rb +19 -25
  612. data/spec/system/preprocessing_parameterized_tests_spec.rb +2 -2
  613. data/spec/system/rake_release_task_path_disambiguation_spec.rb +97 -0
  614. data/spec/system/rake_test_task_path_disambiguation_spec.rb +118 -0
  615. data/spec/system/report_and_tooling_plugins_spec.rb +327 -0
  616. data/spec/system/ruby_replacement_spec.rb +1 -1
  617. data/spec/system/same_named_modules_spec.rb +115 -0
  618. data/spec/system/sanitize_deployment_spec.rb +64 -0
  619. data/spec/system/shuffle_tests_spec.rb +139 -0
  620. data/spec/system/sibling_header_collision_spec.rb +620 -0
  621. data/spec/system/subdir_include_preservation_spec.rb +63 -0
  622. data/spec/system/support/bullseye_common_test_cases.rb +369 -0
  623. data/spec/system/support/bullseye_helpers.rb +70 -0
  624. data/spec/system/support/common_test_cases.rb +167 -43
  625. data/spec/system/support/cppcheck_common_test_cases.rb +80 -0
  626. data/spec/system/support/cppcheck_helpers.rb +10 -8
  627. data/spec/system/support/gcov_common_test_cases.rb +173 -37
  628. data/spec/system/support/gcov_helpers.rb +3 -3
  629. data/spec/system/support/gcov_partials_test_cases.rb +48 -2
  630. data/spec/system/support/sanitize_common_test_cases.rb +222 -0
  631. data/spec/system/support/sanitize_helpers.rb +27 -0
  632. data/spec/system/support/valgrind_common_test_cases.rb +116 -16
  633. data/spec/system/support/valgrind_helpers.rb +3 -4
  634. data/spec/system/test_pipeline_stop_points_spec.rb +160 -0
  635. data/spec/system/test_runner_system_include_spec.rb +19 -41
  636. data/spec/system/test_source_file_directive_spec.rb +235 -0
  637. data/spec/system/upgrade_as_vendor_spec.rb +25 -46
  638. data/spec/system/valgrind_deployment_spec.rb +41 -0
  639. data/spec/units/batchinator_spec.rb +314 -0
  640. data/spec/units/bin/actionator_spec.rb +412 -0
  641. data/spec/units/bin/app_cfg_spec.rb +90 -0
  642. data/spec/units/bin/cli_handler_spec.rb +204 -0
  643. data/spec/units/bin/cli_helper_spec.rb +238 -10
  644. data/spec/units/bin/cli_options_transform_spec.rb +49 -0
  645. data/spec/units/bin/composinator_spec.rb +236 -0
  646. data/spec/units/bin/{projectinator_mixin_spec.rb → mixin_resolvinator_spec.rb} +122 -83
  647. data/spec/units/bin/mixin_standardizer_spec.rb +4 -3
  648. data/spec/units/bin/mixinator_spec.rb +58 -22
  649. data/spec/units/bin/path_validator_spec.rb +112 -0
  650. data/spec/units/bin/projectinator_spec.rb +223 -0
  651. data/spec/units/bin/rake_patches_spec.rb +52 -0
  652. data/spec/units/bin/recursive_merger_spec.rb +22 -0
  653. data/spec/units/bin/versionator_spec.rb +104 -0
  654. data/spec/units/c_extractor/c_extractor_code_text_spec.rb +4 -4
  655. data/spec/units/c_extractor/c_extractor_declarations_spec.rb +70 -0
  656. data/spec/units/c_extractor/c_extractor_functions_spec.rb +75 -1
  657. data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +158 -0
  658. data/spec/units/c_extractor/c_extractor_spec.rb +236 -6
  659. data/spec/units/ceedling/templateinator_golden_spec.rb +84 -0
  660. data/spec/units/ceedling/templateinator_spec.rb +188 -0
  661. data/spec/units/config/configurator_builder_spec.rb +444 -0
  662. data/spec/units/config/configurator_plugins_spec.rb +160 -0
  663. data/spec/units/config/configurator_setup_spec.rb +706 -6
  664. data/spec/units/config/configurator_spec.rb +952 -0
  665. data/spec/units/config/configurator_validator_spec.rb +259 -0
  666. data/spec/units/config/line_marker_suppressors_spec.rb +89 -0
  667. data/spec/units/config_matchinator_spec.rb +103 -0
  668. data/spec/units/defineinator_spec.rb +158 -0
  669. data/spec/units/dependencies/dependency_cache_store_spec.rb +364 -0
  670. data/spec/units/dependencies/dependency_debug_tree_spec.rb +189 -0
  671. data/spec/units/dependencies/dependency_differ_spec.rb +139 -0
  672. data/spec/units/dependencies/dependency_hasher_spec.rb +141 -0
  673. data/spec/units/dependencies/dependency_path_normalizer_spec.rb +111 -0
  674. data/spec/units/dependencies/dependency_tracker_spec.rb +905 -0
  675. data/spec/units/dependencies/dependinator_spec.rb +99 -0
  676. data/spec/units/dependencies/gcc_dependency_parser_spec.rb +152 -0
  677. data/spec/units/encodinator_spec.rb +92 -0
  678. data/spec/units/file_finder_helper_spec.rb +99 -15
  679. data/spec/units/file_finder_spec.rb +495 -0
  680. data/spec/units/file_path_collection_utils_spec.rb +9 -0
  681. data/spec/units/file_path_utils_spec.rb +736 -0
  682. data/spec/units/file_wrapper_spec.rb +447 -0
  683. data/spec/units/filename_extension_spec.rb +120 -0
  684. data/spec/units/flaginator_spec.rb +114 -0
  685. data/spec/units/generators/generator_helper_spec.rb +113 -0
  686. data/spec/units/generators/generator_mocks_spec.rb +131 -0
  687. data/spec/units/generators/generator_partials_spec.rb +366 -77
  688. data/spec/units/generators/generator_spec.rb +317 -0
  689. data/spec/units/generators/generator_test_results_backtrace_spec.rb +169 -9
  690. data/spec/units/generators/generator_test_results_sanity_checker_spec.rb +14 -6
  691. data/spec/units/generators/generator_test_results_spec.rb +65 -8
  692. data/spec/units/generators/generator_test_runner_spec.rb +1 -1
  693. data/spec/units/includes/include_factory_spec.rb +53 -0
  694. data/spec/units/includes/include_pathinator_spec.rb +269 -0
  695. data/spec/units/includes/include_spec.rb +8 -4
  696. data/spec/units/includes/includes_spec.rb +326 -18
  697. data/spec/units/mock_locator_spec.rb +74 -0
  698. data/spec/units/parsing_parcels_spec.rb +65 -0
  699. data/spec/units/partials/partializer_config_spec.rb +284 -18
  700. data/spec/units/partials/partializer_helper_spec.rb +122 -0
  701. data/spec/units/partials/partializer_spec.rb +474 -36
  702. data/spec/units/partials/partializer_utils_spec.rb +4 -4
  703. data/spec/units/partials_manager_spec.rb +539 -0
  704. data/spec/units/path_matcher_spec.rb +193 -0
  705. data/spec/units/path_mirror_spec.rb +103 -0
  706. data/spec/units/plugin_manager_spec.rb +77 -0
  707. data/spec/units/plugin_reportinator_spec.rb +78 -3
  708. data/spec/units/plugins/bullseye_spec.rb +1068 -0
  709. data/spec/units/plugins/command_hooks_spec.rb +157 -0
  710. data/spec/units/plugins/compile_commands_json_db_spec.rb +145 -0
  711. data/spec/units/plugins/console_reportinator_spec.rb +370 -0
  712. data/spec/units/plugins/cppcheck_spec.rb +330 -4
  713. data/spec/units/plugins/cppunit_tests_reporter_spec.rb +118 -0
  714. data/spec/units/plugins/dependencies_spec.rb +295 -0
  715. data/spec/units/plugins/dependency_commands_spec.rb +83 -0
  716. data/spec/units/plugins/dependency_environment_spec.rb +64 -0
  717. data/spec/units/plugins/dependency_spec_spec.rb +170 -0
  718. data/spec/units/plugins/gcov_reportinator_spec.rb +272 -0
  719. data/spec/units/plugins/gcov_spec.rb +521 -0
  720. data/spec/units/plugins/gcovr_reportinator_spec.rb +795 -0
  721. data/spec/units/plugins/gtestlike_report_spec.rb +363 -0
  722. data/spec/units/plugins/html_tests_reporter_spec.rb +158 -0
  723. data/spec/units/plugins/ide_report_lines_spec.rb +229 -0
  724. data/spec/units/plugins/json_tests_reporter_spec.rb +87 -0
  725. data/spec/units/plugins/junit_tests_reporter_spec.rb +237 -0
  726. data/spec/units/plugins/module_generator_options_spec.rb +185 -0
  727. data/spec/units/plugins/module_generator_project_spec.rb +55 -0
  728. data/spec/units/plugins/module_generator_request_spec.rb +107 -0
  729. data/spec/units/plugins/module_generator_spec.rb +214 -0
  730. data/spec/units/plugins/module_generator_test_file_spec.rb +102 -0
  731. data/spec/units/plugins/module_generator_unity_spec.rb +37 -0
  732. data/spec/units/plugins/report_build_warnings_log_spec.rb +199 -0
  733. data/spec/units/plugins/report_log_writer_plugin_spec.rb +94 -0
  734. data/spec/units/plugins/report_tests_gtestlike_stdout_spec.rb +274 -0
  735. data/spec/units/plugins/report_tests_ide_stdout_spec.rb +140 -0
  736. data/spec/units/plugins/report_tests_log_factory_spec.rb +210 -0
  737. data/spec/units/plugins/report_tests_pretty_stdout_spec.rb +83 -0
  738. data/spec/units/plugins/report_tests_raw_output_log_spec.rb +98 -0
  739. data/spec/units/plugins/report_tests_stdout_plugin_spec.rb +145 -0
  740. data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +121 -0
  741. data/spec/units/plugins/reportgenerator_reportinator_spec.rb +410 -0
  742. data/spec/units/plugins/sanitize_config_spec.rb +119 -0
  743. data/spec/units/plugins/sanitize_findings_spec.rb +69 -0
  744. data/spec/units/plugins/sanitize_records_spec.rb +114 -0
  745. data/spec/units/plugins/sanitize_reports_spec.rb +84 -0
  746. data/spec/units/plugins/sanitize_spec.rb +300 -0
  747. data/spec/units/plugins/tests_reporter_spec.rb +89 -0
  748. data/spec/units/plugins/valgrind_spec.rb +560 -0
  749. data/spec/units/plugins/warning_collector_spec.rb +185 -0
  750. data/spec/units/plugins/warning_reports_spec.rb +150 -0
  751. data/spec/units/preprocess/c_comment_scanner_spec.rb +17 -17
  752. data/spec/units/preprocess/c_preprocessor_conditionals_spec.rb +94 -0
  753. data/spec/units/preprocess/preprocessinator_bare_includes_extractor_spec.rb +73 -0
  754. data/spec/units/preprocess/preprocessinator_code_finder_spec.rb +35 -16
  755. data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +129 -48
  756. data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +292 -9
  757. data/spec/units/preprocess/preprocessinator_includes_handler_spec.rb +294 -16
  758. data/spec/units/preprocess/preprocessinator_line_marker_includes_extractor_spec.rb +356 -6
  759. data/spec/units/preprocess/preprocessinator_reconstructor_spec.rb +58 -4
  760. data/spec/units/preprocess/preprocessinator_spec.rb +693 -5
  761. data/spec/units/quote_include_isolator_spec.rb +176 -0
  762. data/spec/units/rake_app/rake_invocation_tracker_spec.rb +94 -0
  763. data/spec/units/rake_app/rake_task_registry_spec.rb +263 -0
  764. data/spec/units/rake_app/rake_utils_spec.rb +54 -0
  765. data/spec/units/rake_app/rake_wrapper_spec.rb +64 -0
  766. data/spec/units/rake_app/rakefile_component_resolver_spec.rb +182 -0
  767. data/spec/units/release_build_executor_spec.rb +404 -0
  768. data/spec/units/release_build_planner_spec.rb +144 -0
  769. data/spec/units/release_invoker_spec.rb +127 -0
  770. data/spec/units/reportinator_spec.rb +35 -0
  771. data/spec/units/ruby_expandinator_spec.rb +36 -0
  772. data/spec/units/standin_headerinator_spec.rb +168 -0
  773. data/spec/units/system_wrapper_spec.rb +16 -0
  774. data/spec/units/test_build_executor_spec.rb +1653 -8
  775. data/spec/units/test_build_planner_spec.rb +878 -0
  776. data/spec/units/test_build_setup_spec.rb +583 -0
  777. data/spec/units/test_context_extractor_spec.rb +51 -3
  778. data/spec/units/test_file_preprocessinator_spec.rb +206 -0
  779. data/spec/units/test_includes_extractinator_spec.rb +764 -0
  780. data/spec/units/test_invoker/objects_wiring_spec.rb +31 -0
  781. data/spec/units/test_invoker_spec.rb +147 -0
  782. data/spec/units/test_invoker_types_spec.rb +182 -0
  783. data/spec/units/test_pipeline_helpers_spec.rb +100 -0
  784. data/spec/units/test_pipeline_manager_spec.rb +415 -0
  785. data/spec/units/test_runner_generatinator_spec.rb +215 -0
  786. data/spec/units/test_runner_manager_spec.rb +70 -0
  787. data/spec/units/test_search_paths_spec.rb +84 -0
  788. data/spec/units/test_source_file_directive_resolver_spec.rb +239 -0
  789. data/spec/units/tool_executor_helper_spec.rb +1 -1
  790. data/spec/units/tool_executor_spec.rb +571 -2
  791. data/spec/units/tool_validator_spec.rb +303 -24
  792. data/spec/units/version_spec.rb +74 -0
  793. data/spec/units/yaml_wrapper_spec.rb +4 -1
  794. data/vendor/cmock/docs/CMock_Summary.md +11 -0
  795. data/vendor/cmock/lib/cmock_config.rb +1 -0
  796. data/vendor/cmock/lib/cmock_generator.rb +5 -1
  797. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +31 -0
  798. data/vendor/cmock/vendor/unity/auto/generate_module.rb +4 -4
  799. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +8 -2
  800. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +2 -2
  801. data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +7 -0
  802. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +4 -0
  803. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  804. data/vendor/cmock/vendor/unity/src/unity_internals.h +21 -7
  805. data/vendor/cmock/vendor/unity/test/Makefile +9 -2
  806. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -0
  807. data/vendor/cmock/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  808. data/vendor/cmock/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  809. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  810. data/vendor/cmock/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  811. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +78 -0
  812. data/vendor/cmock/vendor/unity/test/tests/test_unity_test_summary.rb +58 -0
  813. data/vendor/diy/lib/diy/factory.rb +5 -4
  814. data/vendor/diy/lib/diy.rb +5 -4
  815. data/vendor/diy/sample_code/car.rb +5 -4
  816. data/vendor/diy/sample_code/chassis.rb +5 -4
  817. data/vendor/diy/sample_code/diy_example.rb +5 -4
  818. data/vendor/diy/sample_code/engine.rb +5 -4
  819. data/vendor/diy/sample_code/objects.yml +5 -4
  820. data/vendor/diy/test/constructor.rb +5 -4
  821. data/vendor/diy/test/diy_test.rb +5 -4
  822. data/vendor/diy/test/factory_test.rb +5 -4
  823. data/vendor/diy/test/files/broken_construction.yml +5 -4
  824. data/vendor/diy/test/files/cat/cat.rb +5 -4
  825. data/vendor/diy/test/files/cat/extra_conflict.yml +5 -4
  826. data/vendor/diy/test/files/cat/heritage.rb +5 -4
  827. data/vendor/diy/test/files/cat/needs_input.yml +5 -4
  828. data/vendor/diy/test/files/cat/the_cat_lineage.rb +5 -4
  829. data/vendor/diy/test/files/dog/dog_model.rb +5 -4
  830. data/vendor/diy/test/files/dog/dog_presenter.rb +5 -4
  831. data/vendor/diy/test/files/dog/dog_view.rb +5 -4
  832. data/vendor/diy/test/files/dog/file_resolver.rb +5 -4
  833. data/vendor/diy/test/files/dog/other_thing.rb +5 -4
  834. data/vendor/diy/test/files/dog/simple.yml +5 -4
  835. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +5 -4
  836. data/vendor/diy/test/files/donkey/foo.rb +5 -4
  837. data/vendor/diy/test/files/factory/beef.rb +5 -4
  838. data/vendor/diy/test/files/factory/dog.rb +5 -4
  839. data/vendor/diy/test/files/factory/factory.yml +5 -4
  840. data/vendor/diy/test/files/factory/farm/llama.rb +5 -4
  841. data/vendor/diy/test/files/factory/farm/pork.rb +5 -4
  842. data/vendor/diy/test/files/factory/kitten.rb +5 -4
  843. data/vendor/diy/test/files/fud/objects.yml +5 -4
  844. data/vendor/diy/test/files/fud/toy.rb +5 -4
  845. data/vendor/diy/test/files/functions/attached_things_builder.rb +5 -4
  846. data/vendor/diy/test/files/functions/invalid_method.yml +5 -4
  847. data/vendor/diy/test/files/functions/method_extractor.rb +5 -4
  848. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -4
  849. data/vendor/diy/test/files/functions/objects.yml +5 -4
  850. data/vendor/diy/test/files/functions/thing.rb +5 -4
  851. data/vendor/diy/test/files/functions/thing_builder.rb +5 -4
  852. data/vendor/diy/test/files/functions/things_builder.rb +5 -4
  853. data/vendor/diy/test/files/gnu/objects.yml +5 -4
  854. data/vendor/diy/test/files/gnu/thinger.rb +5 -4
  855. data/vendor/diy/test/files/goat/base.rb +5 -4
  856. data/vendor/diy/test/files/goat/can.rb +5 -4
  857. data/vendor/diy/test/files/goat/goat.rb +5 -4
  858. data/vendor/diy/test/files/goat/objects.yml +5 -4
  859. data/vendor/diy/test/files/goat/paper.rb +5 -4
  860. data/vendor/diy/test/files/goat/plane.rb +5 -4
  861. data/vendor/diy/test/files/goat/shirt.rb +5 -4
  862. data/vendor/diy/test/files/goat/wings.rb +5 -4
  863. data/vendor/diy/test/files/horse/holder_thing.rb +5 -4
  864. data/vendor/diy/test/files/horse/objects.yml +5 -4
  865. data/vendor/diy/test/files/namespace/animal/bird.rb +5 -4
  866. data/vendor/diy/test/files/namespace/animal/cat.rb +5 -4
  867. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +5 -4
  868. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +5 -4
  869. data/vendor/diy/test/files/namespace/bad_module_specified.yml +5 -4
  870. data/vendor/diy/test/files/namespace/class_name_combine.yml +5 -4
  871. data/vendor/diy/test/files/namespace/no_module_specified.yml +5 -4
  872. data/vendor/diy/test/files/namespace/objects.yml +5 -4
  873. data/vendor/diy/test/files/namespace/road.rb +5 -4
  874. data/vendor/diy/test/files/namespace/sky.rb +5 -4
  875. data/vendor/diy/test/files/namespace/subcontext.yml +5 -4
  876. data/vendor/diy/test/files/non_singleton/air.rb +5 -4
  877. data/vendor/diy/test/files/non_singleton/fat_cat.rb +5 -4
  878. data/vendor/diy/test/files/non_singleton/objects.yml +5 -4
  879. data/vendor/diy/test/files/non_singleton/pig.rb +5 -4
  880. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +5 -4
  881. data/vendor/diy/test/files/non_singleton/tick.rb +5 -4
  882. data/vendor/diy/test/files/non_singleton/yard.rb +5 -4
  883. data/vendor/diy/test/files/yak/core_model.rb +5 -4
  884. data/vendor/diy/test/files/yak/core_presenter.rb +5 -4
  885. data/vendor/diy/test/files/yak/core_view.rb +5 -4
  886. data/vendor/diy/test/files/yak/data_source.rb +5 -4
  887. data/vendor/diy/test/files/yak/fringe_model.rb +5 -4
  888. data/vendor/diy/test/files/yak/fringe_presenter.rb +5 -4
  889. data/vendor/diy/test/files/yak/fringe_view.rb +5 -4
  890. data/vendor/diy/test/files/yak/giant_squid.rb +5 -4
  891. data/vendor/diy/test/files/yak/krill.rb +5 -4
  892. data/vendor/diy/test/files/yak/my_objects.yml +5 -4
  893. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +5 -4
  894. data/vendor/diy/test/test_helper.rb +5 -4
  895. data/vendor/unity/auto/generate_module.rb +4 -4
  896. data/vendor/unity/auto/generate_test_runner.rb +5 -1
  897. data/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  898. data/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  899. data/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  900. data/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  901. data/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  902. data/vendor/unity/test/tests/test_generate_test_runner.rb +29 -0
  903. metadata +770 -285
  904. data/assets/tests_with_fallback_conditionals/src/conditional_module.c +0 -18
  905. data/bin/actions_wrapper.rb +0 -51
  906. data/docs/mkdocs/assets/images/ceedling-logo-circle.png +0 -0
  907. data/docs/mkdocs/assets/images/ceedling.svg +0 -90
  908. data/docs/mkdocs/assets/images/favicon.png +0 -0
  909. data/docs/mkdocs/assets/stylesheets/admonitions.css +0 -152
  910. data/docs/mkdocs/assets/stylesheets/fixes-local.css +0 -15
  911. data/docs/mkdocs/assets/stylesheets/styling.css +0 -102
  912. data/docs/mkdocs/configuration/environment-vars.md +0 -14
  913. data/docs/mkdocs/configuration/global-collections.md +0 -156
  914. data/docs/mkdocs/configuration/index.md +0 -75
  915. data/docs/mkdocs/configuration/loading.md +0 -89
  916. data/docs/mkdocs/configuration/mixins.md +0 -607
  917. data/docs/mkdocs/configuration/parallel-builds.md +0 -97
  918. data/docs/mkdocs/configuration/project-file.md +0 -216
  919. data/docs/mkdocs/configuration/reference/cexception.md +0 -35
  920. data/docs/mkdocs/configuration/reference/cmock.md +0 -106
  921. data/docs/mkdocs/configuration/reference/defines.md +0 -352
  922. data/docs/mkdocs/configuration/reference/environment.md +0 -55
  923. data/docs/mkdocs/configuration/reference/extension.md +0 -63
  924. data/docs/mkdocs/configuration/reference/files.md +0 -154
  925. data/docs/mkdocs/configuration/reference/flags.md +0 -296
  926. data/docs/mkdocs/configuration/reference/index.md +0 -176
  927. data/docs/mkdocs/configuration/reference/libraries.md +0 -82
  928. data/docs/mkdocs/configuration/reference/mixins.md +0 -24
  929. data/docs/mkdocs/configuration/reference/partials.md +0 -38
  930. data/docs/mkdocs/configuration/reference/paths.md +0 -276
  931. data/docs/mkdocs/configuration/reference/plugins.md +0 -60
  932. data/docs/mkdocs/configuration/reference/project.md +0 -333
  933. data/docs/mkdocs/configuration/reference/release-build.md +0 -62
  934. data/docs/mkdocs/configuration/reference/test-build.md +0 -55
  935. data/docs/mkdocs/configuration/reference/test-runner.md +0 -61
  936. data/docs/mkdocs/configuration/reference/tools.md +0 -457
  937. data/docs/mkdocs/configuration/reference/unity.md +0 -49
  938. data/docs/mkdocs/configuration/which-ceedling.md +0 -77
  939. data/docs/mkdocs/development/index.md +0 -50
  940. data/docs/mkdocs/development/plugins/configuration.md +0 -164
  941. data/docs/mkdocs/development/plugins/index.md +0 -84
  942. data/docs/mkdocs/development/plugins/plugin-subclass.md +0 -513
  943. data/docs/mkdocs/development/plugins/rake-tasks.md +0 -54
  944. data/docs/mkdocs/development/workflow.md +0 -284
  945. data/docs/mkdocs/getting-started/command-line.md +0 -477
  946. data/docs/mkdocs/getting-started/example-projects/cipher-quest.md +0 -65
  947. data/docs/mkdocs/getting-started/example-projects/index.md +0 -49
  948. data/docs/mkdocs/getting-started/example-projects/temp-sensor.md +0 -60
  949. data/docs/mkdocs/getting-started/example-projects/wondrous-forest.md +0 -45
  950. data/docs/mkdocs/getting-started/index.md +0 -41
  951. data/docs/mkdocs/getting-started/installation.md +0 -179
  952. data/docs/mkdocs/getting-started/quick-start.md +0 -86
  953. data/docs/mkdocs/help.md +0 -49
  954. data/docs/mkdocs/index.md +0 -222
  955. data/docs/mkdocs/overview/build-system.md +0 -115
  956. data/docs/mkdocs/overview/index.md +0 -29
  957. data/docs/mkdocs/overview/test-environments.md +0 -33
  958. data/docs/mkdocs/overview/tools-and-frameworks.md +0 -115
  959. data/docs/mkdocs/plugins/beep.md +0 -134
  960. data/docs/mkdocs/plugins/bullseye.md +0 -83
  961. data/docs/mkdocs/plugins/command-hooks.md +0 -268
  962. data/docs/mkdocs/plugins/compile-commands-json-db.md +0 -42
  963. data/docs/mkdocs/plugins/cppcheck.md +0 -377
  964. data/docs/mkdocs/plugins/dependencies.md +0 -310
  965. data/docs/mkdocs/plugins/fff.md +0 -247
  966. data/docs/mkdocs/plugins/gcov/examples.md +0 -92
  967. data/docs/mkdocs/plugins/gcov/gcovr.md +0 -412
  968. data/docs/mkdocs/plugins/gcov/index.md +0 -74
  969. data/docs/mkdocs/plugins/gcov/overview.md +0 -145
  970. data/docs/mkdocs/plugins/gcov/reportgenerator.md +0 -140
  971. data/docs/mkdocs/plugins/gcov/reporting.md +0 -147
  972. data/docs/mkdocs/plugins/gcov/setup.md +0 -232
  973. data/docs/mkdocs/plugins/gcov/tool-versions.md +0 -60
  974. data/docs/mkdocs/plugins/gcov/troubleshooting.md +0 -78
  975. data/docs/mkdocs/plugins/index.md +0 -261
  976. data/docs/mkdocs/plugins/module-generator.md +0 -267
  977. data/docs/mkdocs/plugins/report-build-warnings-log.md +0 -42
  978. data/docs/mkdocs/plugins/report-tests-gtestlike-stdout.md +0 -98
  979. data/docs/mkdocs/plugins/report-tests-ide-stdout.md +0 -63
  980. data/docs/mkdocs/plugins/report-tests-log-factory.md +0 -454
  981. data/docs/mkdocs/plugins/report-tests-pretty-stdout.md +0 -56
  982. data/docs/mkdocs/plugins/report-tests-raw-output-log.md +0 -52
  983. data/docs/mkdocs/plugins/report-tests-teamcity-stdout.md +0 -96
  984. data/docs/mkdocs/plugins/sample_html_report.png +0 -0
  985. data/docs/mkdocs/plugins/valgrind.md +0 -198
  986. data/docs/mkdocs/project/release-history.md +0 -61
  987. data/docs/mkdocs/project/upgrade.md +0 -85
  988. data/docs/mkdocs/reference/build-directives.md +0 -37
  989. data/docs/mkdocs/reference/command-line.md +0 -323
  990. data/docs/mkdocs/reference/environment-vars.md +0 -60
  991. data/docs/mkdocs/reference/gcov-plugin.md +0 -600
  992. data/docs/mkdocs/reference/global-collections.md +0 -160
  993. data/docs/mkdocs/reference/index.md +0 -65
  994. data/docs/mkdocs/reference/partials-macros.md +0 -79
  995. data/docs/mkdocs/reference/project-configuration.md +0 -46
  996. data/docs/mkdocs/snapshot/assets/project.yml +0 -404
  997. data/docs/mkdocs/snapshot/examples/cipher_quest/README.md +0 -210
  998. data/docs/mkdocs/snapshot/examples/temp_sensor/README.md +0 -283
  999. data/docs/mkdocs/snapshot/examples/wondrous_forest/README.md +0 -92
  1000. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +0 -32
  1001. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults_gcov.rb +0 -136
  1002. data/docs/mkdocs/snapshot.yml +0 -20
  1003. data/docs/mkdocs/testing-guide/build-directives.md +0 -153
  1004. data/docs/mkdocs/testing-guide/conventions.md +0 -616
  1005. data/docs/mkdocs/testing-guide/frameworks.md +0 -192
  1006. data/docs/mkdocs/testing-guide/index.md +0 -80
  1007. data/docs/mkdocs/testing-guide/partials/configuration.md +0 -67
  1008. data/docs/mkdocs/testing-guide/partials/conventions.md +0 -68
  1009. data/docs/mkdocs/testing-guide/partials/directives.md +0 -212
  1010. data/docs/mkdocs/testing-guide/partials/example.md +0 -149
  1011. data/docs/mkdocs/testing-guide/partials/index.md +0 -88
  1012. data/docs/mkdocs/testing-guide/partials/overview.md +0 -81
  1013. data/docs/mkdocs/testing-guide/partials/variables.md +0 -244
  1014. data/docs/mkdocs/testing-guide/test-cases.md +0 -194
  1015. data/docs/mkdocs/testing-guide/test-sample.md +0 -94
  1016. data/docs/mkdocs/testing-guide/test-suite-anatomy.md +0 -58
  1017. data/lib/ceedling/cacheinator.rb +0 -53
  1018. data/lib/ceedling/cacheinator_helper.rb +0 -60
  1019. data/lib/ceedling/dependinator.rb +0 -31
  1020. data/lib/ceedling/makefile.rb +0 -52
  1021. data/lib/ceedling/release_invoker.rb +0 -112
  1022. data/lib/ceedling/rules_release.rake +0 -109
  1023. data/lib/ceedling/rules_tests.rake +0 -40
  1024. data/lib/ceedling/tasks_release.rake +0 -36
  1025. data/plugins/fff/vendor/fff/Makefile +0 -10
  1026. data/plugins/fff/vendor/fff/buildandtest +0 -15
  1027. data/plugins/fff/vendor/fff/examples/Makefile +0 -7
  1028. data/plugins/fff/vendor/fff/examples/driver_testing/Makefile +0 -64
  1029. data/plugins/fff/vendor/fff/examples/driver_testing/driver.c +0 -32
  1030. data/plugins/fff/vendor/fff/examples/driver_testing/driver.h +0 -21
  1031. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.cpp +0 -58
  1032. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.fff.cpp +0 -70
  1033. data/plugins/fff/vendor/fff/examples/driver_testing/hardware_abstraction.h +0 -25
  1034. data/plugins/fff/vendor/fff/examples/driver_testing/registers.h +0 -23
  1035. data/plugins/fff/vendor/fff/examples/embedded_ui/DISPLAY.h +0 -27
  1036. data/plugins/fff/vendor/fff/examples/embedded_ui/Kata.txt +0 -25
  1037. data/plugins/fff/vendor/fff/examples/embedded_ui/Makefile +0 -67
  1038. data/plugins/fff/vendor/fff/examples/embedded_ui/SYSTEM.h +0 -31
  1039. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.c +0 -56
  1040. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.h +0 -22
  1041. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_ansic.c +0 -191
  1042. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_cpp.cpp +0 -144
  1043. data/plugins/fff/vendor/fff/examples/embedded_ui/test_suite_template.c +0 -42
  1044. data/plugins/fff/vendor/fff/gtest/Makefile +0 -22
  1045. data/plugins/fff/vendor/fff/gtest/gtest-all.cc +0 -9118
  1046. data/plugins/fff/vendor/fff/gtest/gtest-main.cc +0 -6
  1047. data/plugins/fff/vendor/fff/gtest/gtest.h +0 -19547
  1048. data/plugins/fff/vendor/fff/test/Makefile +0 -81
  1049. data/plugins/fff/vendor/fff/test/c_test_framework.h +0 -25
  1050. data/plugins/fff/vendor/fff/test/fff_test_c.c +0 -116
  1051. data/plugins/fff/vendor/fff/test/fff_test_cpp.cpp +0 -53
  1052. data/plugins/fff/vendor/fff/test/fff_test_global_c.c +0 -84
  1053. data/plugins/fff/vendor/fff/test/fff_test_global_cpp.cpp +0 -31
  1054. data/plugins/fff/vendor/fff/test/global_fakes.c +0 -21
  1055. data/plugins/fff/vendor/fff/test/global_fakes.h +0 -47
  1056. data/plugins/fff/vendor/fff/test/test_cases.include +0 -276
  1057. data/plugins/report_tests_gtestlike_stdout/assets/template.erb +0 -83
  1058. data/spec/units/configurator_spec.rb +0 -232
  1059. /data/assets/{ceedling → features/ceedling} +0 -0
  1060. /data/assets/{ceedling.cmd → features/ceedling.cmd} +0 -0
  1061. /data/assets/{default_gitignore → features/default_gitignore} +0 -0
  1062. /data/assets/{broken_uncovered_file.c → fixtures/broken_uncovered_file.c} +0 -0
  1063. /data/assets/{example_file.c → fixtures/example_file.c} +0 -0
  1064. /data/assets/{example_file.h → fixtures/example_file.h} +0 -0
  1065. /data/assets/{example_file_call.c → fixtures/example_file_call.c} +0 -0
  1066. /data/assets/{example_file_call.h → fixtures/example_file_call.h} +0 -0
  1067. /data/assets/{example_file_with_statics.c → fixtures/example_file_with_statics.c} +0 -0
  1068. /data/assets/{example_file_with_stdio.c → fixtures/example_file_with_stdio.c} +0 -0
  1069. /data/assets/{example_file_with_stdio.h → fixtures/example_file_with_stdio.h} +0 -0
  1070. /data/assets/{fake_crash_test_fixture.rb → fixtures/fake_crash_test_fixture.rb} +0 -0
  1071. /data/assets/{partial_all_module.h → fixtures/partial_all_module.h} +0 -0
  1072. /data/assets/{run_with_ubsan.rb → fixtures/run_with_ubsan.rb} +0 -0
  1073. /data/assets/{same_dir_pairing_module.c → fixtures/same_dir_pairing_module.c} +0 -0
  1074. /data/assets/{same_dir_pairing_module.h → fixtures/same_dir_pairing_module.h} +0 -0
  1075. /data/assets/{same_dir_pairing_module_func.h → fixtures/same_dir_pairing_module_func.h} +0 -0
  1076. /data/assets/{same_dir_pairing_other.c → fixtures/same_dir_pairing_other.c} +0 -0
  1077. /data/assets/{same_dir_pairing_other.h → fixtures/same_dir_pairing_other.h} +0 -0
  1078. /data/assets/{test_example_file.c → fixtures/test_example_file.c} +0 -0
  1079. /data/assets/{test_example_file_2.c → fixtures/test_example_file_2.c} +0 -0
  1080. /data/assets/{test_example_file_source_include.c → fixtures/test_example_file_source_include.c} +0 -0
  1081. /data/assets/{test_example_file_success.c → fixtures/test_example_file_success.c} +0 -0
  1082. /data/assets/{test_example_file_unity_printf.c → fixtures/test_example_file_unity_printf.c} +0 -0
  1083. /data/assets/{test_example_file_verbose.c → fixtures/test_example_file_verbose.c} +0 -0
  1084. /data/assets/{test_example_file_with_mock.c → fixtures/test_example_file_with_mock.c} +0 -0
  1085. /data/assets/{test_example_file_with_stdio.c → fixtures/test_example_file_with_stdio.c} +0 -0
  1086. /data/assets/{test_example_with_parameterized_tests.c → fixtures/test_example_with_parameterized_tests.c} +0 -0
  1087. /data/assets/{test_partial_all_module.c → fixtures/test_partial_all_module.c} +0 -0
  1088. /data/assets/{test_same_dir_pairing.c → fixtures/test_same_dir_pairing.c} +0 -0
  1089. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_config.h +0 -0
  1090. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_extra.h +0 -0
  1091. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/local_flag_extra.h +0 -0
  1092. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_extra.h +0 -0
  1093. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_wrapper.h +0 -0
  1094. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/project_flag_extra.h +0 -0
  1095. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.h +0 -0
  1096. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.c +0 -0
  1097. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.h +0 -0
  1098. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.c +0 -0
  1099. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.h +0 -0
  1100. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware.c +0 -0
  1101. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware_special.c +0 -0
  1102. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.c +0 -0
  1103. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.h +0 -0
  1104. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder.c +0 -0
  1105. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder_partial.c +0 -0
  1106. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/conditional_module.h +0 -0
  1107. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/optional_dep.h +0 -0
  1108. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.c +0 -0
  1109. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.h +0 -0
  1110. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.c +0 -0
  1111. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.h +0 -0
  1112. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.c +0 -0
  1113. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.h +0 -0
  1114. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_blanks.c +0 -0
  1115. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_counter.c +0 -0
  1116. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_decorators.c +0 -0
  1117. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.c +0 -0
  1118. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.h +0 -0
  1119. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.c +0 -0
  1120. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.h +0 -0
  1121. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.c +0 -0
  1122. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.h +0 -0
  1123. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorA.h +0 -0
  1124. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorB.h +0 -0
  1125. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorC.h +0 -0
  1126. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareA.c +0 -0
  1127. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareB.c +0 -0
  1128. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareC.c +0 -0
  1129. /data/assets/{uncovered_example_file.c → fixtures/uncovered_example_file.c} +0 -0
  1130. /data/plugins/bullseye/assets/{template.erb → coverage.template} +0 -0
@@ -89,10 +89,34 @@
89
89
  </div>
90
90
  <div data-md-component="announce">
91
91
 
92
+ <aside class="md-banner">
93
+ <div class="md-banner__inner md-grid md-typeset">
94
+
95
+
96
+
97
+
98
+ </div>
99
+
100
+ </aside>
101
+
92
102
  </div>
93
103
 
94
104
  <div data-md-color-scheme="default" data-md-component="outdated" hidden>
95
105
 
106
+ <aside class="md-banner md-banner--warning">
107
+ <div class="md-banner__inner md-grid md-typeset">
108
+
109
+
110
+ You are not viewing the latest version.
111
+ <a href="../../..">
112
+ <strong>Click here to go to latest.</strong>
113
+ </a>
114
+
115
+
116
+ </div>
117
+ <script>var el=document.querySelector("[data-md-component=outdated]"),base=new URL("../.."),outdated=__md_get("__outdated",sessionStorage,base);!0===outdated&&el&&(el.hidden=!1)</script>
118
+ </aside>
119
+
96
120
  </div>
97
121
 
98
122
 
@@ -330,7 +354,7 @@
330
354
 
331
355
 
332
356
  <li class="md-tabs__item">
333
- <a href="../../project/release-history.html" class="md-tabs__link">
357
+ <a href="../../project/index.html" class="md-tabs__link">
334
358
 
335
359
 
336
360
 
@@ -641,6 +665,8 @@
641
665
 
642
666
 
643
667
 
668
+
669
+
644
670
 
645
671
 
646
672
 
@@ -788,6 +814,34 @@
788
814
 
789
815
 
790
816
 
817
+ <li class="md-nav__item">
818
+ <a href="../../getting-started/builds.html" class="md-nav__link">
819
+
820
+
821
+
822
+ <span class="md-ellipsis">
823
+
824
+
825
+ Builds
826
+
827
+
828
+
829
+ </span>
830
+
831
+
832
+
833
+ </a>
834
+ </li>
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
791
845
 
792
846
 
793
847
 
@@ -814,7 +868,7 @@
814
868
 
815
869
 
816
870
 
817
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
871
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
818
872
 
819
873
 
820
874
  <div class="md-nav__link md-nav__container">
@@ -836,14 +890,14 @@
836
890
  </a>
837
891
 
838
892
 
839
- <label class="md-nav__link " for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
893
+ <label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
840
894
  <span class="md-nav__icon md-icon"></span>
841
895
  </label>
842
896
 
843
897
  </div>
844
898
 
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">
899
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
900
+ <label class="md-nav__title" for="__nav_3_6">
847
901
  <span class="md-nav__icon md-icon"></span>
848
902
 
849
903
 
@@ -2410,6 +2464,8 @@
2410
2464
 
2411
2465
 
2412
2466
 
2467
+
2468
+
2413
2469
 
2414
2470
 
2415
2471
 
@@ -3041,8 +3097,61 @@
3041
3097
 
3042
3098
 
3043
3099
  <li class="md-nav__item">
3044
- <a href="../../plugins/bullseye.html" class="md-nav__link">
3100
+ <a href="../../plugins/sanitize.html" class="md-nav__link">
3101
+
3102
+
3103
+
3104
+ <span class="md-ellipsis">
3105
+
3106
+
3107
+ Sanitize (ASan, UBSan & Leaks)
3108
+
3109
+
3110
+
3111
+ </span>
3112
+
3113
+
3114
+
3115
+ </a>
3116
+ </li>
3117
+
3118
+
3119
+
3120
+
3121
+
3122
+
3123
+
3124
+
3125
+
3126
+
3127
+
3128
+
3129
+
3130
+
3131
+
3132
+
3133
+
3134
+
3135
+
3136
+
3137
+
3138
+
3139
+
3140
+
3141
+
3142
+
3143
+
3144
+
3145
+ <li class="md-nav__item md-nav__item--nested">
3146
+
3147
+
3148
+
3149
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_13" >
3045
3150
 
3151
+
3152
+ <div class="md-nav__link md-nav__container">
3153
+ <a href="../../plugins/bullseye/index.html" class="md-nav__link ">
3154
+
3046
3155
 
3047
3156
 
3048
3157
  <span class="md-ellipsis">
@@ -3052,6 +3161,50 @@
3052
3161
 
3053
3162
 
3054
3163
 
3164
+ </span>
3165
+
3166
+
3167
+
3168
+ </a>
3169
+
3170
+
3171
+ <label class="md-nav__link " for="__nav_6_13" id="__nav_6_13_label" tabindex="0">
3172
+ <span class="md-nav__icon md-icon"></span>
3173
+ </label>
3174
+
3175
+ </div>
3176
+
3177
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_13_label" aria-expanded="false">
3178
+ <label class="md-nav__title" for="__nav_6_13">
3179
+ <span class="md-nav__icon md-icon"></span>
3180
+
3181
+
3182
+ Bullseye (Coverage)
3183
+
3184
+
3185
+ </label>
3186
+ <ul class="md-nav__list" data-md-scrollfix>
3187
+
3188
+
3189
+
3190
+
3191
+
3192
+
3193
+
3194
+
3195
+
3196
+ <li class="md-nav__item">
3197
+ <a href="../../plugins/bullseye/licensing.html" class="md-nav__link">
3198
+
3199
+
3200
+
3201
+ <span class="md-ellipsis">
3202
+
3203
+
3204
+ Licensing
3205
+
3206
+
3207
+
3055
3208
  </span>
3056
3209
 
3057
3210
 
@@ -3062,6 +3215,14 @@
3062
3215
 
3063
3216
 
3064
3217
 
3218
+ </ul>
3219
+ </nav>
3220
+
3221
+ </li>
3222
+
3223
+
3224
+
3225
+
3065
3226
 
3066
3227
 
3067
3228
 
@@ -3531,6 +3692,12 @@
3531
3692
 
3532
3693
 
3533
3694
 
3695
+
3696
+
3697
+
3698
+
3699
+
3700
+
3534
3701
 
3535
3702
 
3536
3703
 
@@ -3550,8 +3717,9 @@
3550
3717
  <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
3551
3718
 
3552
3719
 
3553
- <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
3554
-
3720
+ <div class="md-nav__link md-nav__container">
3721
+ <a href="../../project/index.html" class="md-nav__link ">
3722
+
3555
3723
 
3556
3724
 
3557
3725
  <span class="md-ellipsis">
@@ -3565,8 +3733,14 @@
3565
3733
 
3566
3734
 
3567
3735
 
3568
- <span class="md-nav__icon md-icon"></span>
3569
- </label>
3736
+ </a>
3737
+
3738
+
3739
+ <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0">
3740
+ <span class="md-nav__icon md-icon"></span>
3741
+ </label>
3742
+
3743
+ </div>
3570
3744
 
3571
3745
  <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
3572
3746
  <label class="md-nav__title" for="__nav_8">
@@ -3580,6 +3754,8 @@
3580
3754
  <ul class="md-nav__list" data-md-scrollfix>
3581
3755
 
3582
3756
 
3757
+
3758
+
3583
3759
 
3584
3760
 
3585
3761
 
@@ -3613,6 +3789,34 @@
3613
3789
 
3614
3790
 
3615
3791
 
3792
+ <li class="md-nav__item">
3793
+ <a href="../../project/sbom.html" class="md-nav__link">
3794
+
3795
+
3796
+
3797
+ <span class="md-ellipsis">
3798
+
3799
+
3800
+ Software Bill of Materials
3801
+
3802
+
3803
+
3804
+ </span>
3805
+
3806
+
3807
+
3808
+ </a>
3809
+ </li>
3810
+
3811
+
3812
+
3813
+
3814
+
3815
+
3816
+
3817
+
3818
+
3819
+
3616
3820
  <li class="md-nav__item">
3617
3821
  <a href="../../project/upgrade.html" class="md-nav__link">
3618
3822
 
@@ -3685,6 +3889,8 @@
3685
3889
 
3686
3890
 
3687
3891
 
3892
+
3893
+
3688
3894
 
3689
3895
 
3690
3896
 
@@ -3777,6 +3983,34 @@
3777
3983
 
3778
3984
 
3779
3985
 
3986
+
3987
+
3988
+ <li class="md-nav__item">
3989
+ <a href="../releases.html" class="md-nav__link">
3990
+
3991
+
3992
+
3993
+ <span class="md-ellipsis">
3994
+
3995
+
3996
+ Branching & Releases
3997
+
3998
+
3999
+
4000
+ </span>
4001
+
4002
+
4003
+
4004
+ </a>
4005
+ </li>
4006
+
4007
+
4008
+
4009
+
4010
+
4011
+
4012
+
4013
+
3780
4014
 
3781
4015
 
3782
4016
 
@@ -3810,7 +4044,7 @@
3810
4044
 
3811
4045
 
3812
4046
 
3813
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_3" checked>
4047
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_4" checked>
3814
4048
 
3815
4049
 
3816
4050
  <div class="md-nav__link md-nav__container">
@@ -3832,14 +4066,14 @@
3832
4066
  </a>
3833
4067
 
3834
4068
 
3835
- <label class="md-nav__link " for="__nav_10_3" id="__nav_10_3_label" tabindex="">
4069
+ <label class="md-nav__link " for="__nav_10_4" id="__nav_10_4_label" tabindex="">
3836
4070
  <span class="md-nav__icon md-icon"></span>
3837
4071
  </label>
3838
4072
 
3839
4073
  </div>
3840
4074
 
3841
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_3_label" aria-expanded="true">
3842
- <label class="md-nav__title" for="__nav_10_3">
4075
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_4_label" aria-expanded="true">
4076
+ <label class="md-nav__title" for="__nav_10_4">
3843
4077
  <span class="md-nav__icon md-icon"></span>
3844
4078
 
3845
4079
 
@@ -4070,6 +4304,28 @@
4070
4304
  </span>
4071
4305
  </a>
4072
4306
 
4307
+ </li>
4308
+
4309
+ <li class="md-nav__item">
4310
+ <a href="#delta-build-hooks" class="md-nav__link">
4311
+ <span class="md-ellipsis">
4312
+
4313
+ Delta build hooks
4314
+
4315
+ </span>
4316
+ </a>
4317
+
4318
+ </li>
4319
+
4320
+ <li class="md-nav__item">
4321
+ <a href="#plugin-hook-method-pre_test_compile_registerarg_hash" class="md-nav__link">
4322
+ <span class="md-ellipsis">
4323
+
4324
+ Plugin hook method pre_test_compile_register(arg_hash)
4325
+
4326
+ </span>
4327
+ </a>
4328
+
4073
4329
  </li>
4074
4330
 
4075
4331
  <li class="md-nav__item">
@@ -4081,6 +4337,17 @@
4081
4337
  </span>
4082
4338
  </a>
4083
4339
 
4340
+ </li>
4341
+
4342
+ <li class="md-nav__item">
4343
+ <a href="#plugin-hook-method-pre_test_link_registerarg_hash" class="md-nav__link">
4344
+ <span class="md-ellipsis">
4345
+
4346
+ Plugin hook method pre_test_link_register(arg_hash)
4347
+
4348
+ </span>
4349
+ </a>
4350
+
4084
4351
  </li>
4085
4352
 
4086
4353
  <li class="md-nav__item">
@@ -4092,6 +4359,17 @@
4092
4359
  </span>
4093
4360
  </a>
4094
4361
 
4362
+ </li>
4363
+
4364
+ <li class="md-nav__item">
4365
+ <a href="#plugin-hook-method-pre_test_fixture_registerarg_hash" class="md-nav__link">
4366
+ <span class="md-ellipsis">
4367
+
4368
+ Plugin hook method pre_test_fixture_register(arg_hash)
4369
+
4370
+ </span>
4371
+ </a>
4372
+
4095
4373
  </li>
4096
4374
 
4097
4375
  <li class="md-nav__item">
@@ -4103,6 +4381,17 @@
4103
4381
  </span>
4104
4382
  </a>
4105
4383
 
4384
+ </li>
4385
+
4386
+ <li class="md-nav__item">
4387
+ <a href="#plugin-hook-method-explain_test_crasharg_hash" class="md-nav__link">
4388
+ <span class="md-ellipsis">
4389
+
4390
+ Plugin hook method explain_test_crash(arg_hash)
4391
+
4392
+ </span>
4393
+ </a>
4394
+
4106
4395
  </li>
4107
4396
 
4108
4397
  <li class="md-nav__item">
@@ -4175,7 +4464,7 @@
4175
4464
  <a href="#validating-a-plugins-tools" class="md-nav__link">
4176
4465
  <span class="md-ellipsis">
4177
4466
 
4178
- Validating a plugin's tools
4467
+ Validating a plugin’s tools
4179
4468
 
4180
4469
  </span>
4181
4470
  </a>
@@ -4191,6 +4480,78 @@
4191
4480
  </span>
4192
4481
  </a>
4193
4482
 
4483
+ </li>
4484
+
4485
+ <li class="md-nav__item">
4486
+ <a href="#test-results-report-templates" class="md-nav__link">
4487
+ <span class="md-ellipsis">
4488
+
4489
+ Test results report templates
4490
+
4491
+ </span>
4492
+ </a>
4493
+
4494
+ <nav class="md-nav" aria-label="Test results report templates">
4495
+ <ul class="md-nav__list">
4496
+
4497
+ <li class="md-nav__item">
4498
+ <a href="#supplying-a-template" class="md-nav__link">
4499
+ <span class="md-ellipsis">
4500
+
4501
+ Supplying a template
4502
+
4503
+ </span>
4504
+ </a>
4505
+
4506
+ </li>
4507
+
4508
+ <li class="md-nav__item">
4509
+ <a href="#supported-syntax" class="md-nav__link">
4510
+ <span class="md-ellipsis">
4511
+
4512
+ Supported syntax
4513
+
4514
+ </span>
4515
+ </a>
4516
+
4517
+ </li>
4518
+
4519
+ <li class="md-nav__item">
4520
+ <a href="#newline-trimming" class="md-nav__link">
4521
+ <span class="md-ellipsis">
4522
+
4523
+ Newline trimming
4524
+
4525
+ </span>
4526
+ </a>
4527
+
4528
+ </li>
4529
+
4530
+ <li class="md-nav__item">
4531
+ <a href="#what-a-template-can-reference" class="md-nav__link">
4532
+ <span class="md-ellipsis">
4533
+
4534
+ What a template can reference
4535
+
4536
+ </span>
4537
+ </a>
4538
+
4539
+ </li>
4540
+
4541
+ <li class="md-nav__item">
4542
+ <a href="#unsupported-syntax" class="md-nav__link">
4543
+ <span class="md-ellipsis">
4544
+
4545
+ Unsupported syntax
4546
+
4547
+ </span>
4548
+ </a>
4549
+
4550
+ </li>
4551
+
4552
+ </ul>
4553
+ </nav>
4554
+
4194
4555
  </li>
4195
4556
 
4196
4557
  </ul>
@@ -4396,6 +4757,28 @@
4396
4757
  </span>
4397
4758
  </a>
4398
4759
 
4760
+ </li>
4761
+
4762
+ <li class="md-nav__item">
4763
+ <a href="#delta-build-hooks" class="md-nav__link">
4764
+ <span class="md-ellipsis">
4765
+
4766
+ Delta build hooks
4767
+
4768
+ </span>
4769
+ </a>
4770
+
4771
+ </li>
4772
+
4773
+ <li class="md-nav__item">
4774
+ <a href="#plugin-hook-method-pre_test_compile_registerarg_hash" class="md-nav__link">
4775
+ <span class="md-ellipsis">
4776
+
4777
+ Plugin hook method pre_test_compile_register(arg_hash)
4778
+
4779
+ </span>
4780
+ </a>
4781
+
4399
4782
  </li>
4400
4783
 
4401
4784
  <li class="md-nav__item">
@@ -4407,6 +4790,17 @@
4407
4790
  </span>
4408
4791
  </a>
4409
4792
 
4793
+ </li>
4794
+
4795
+ <li class="md-nav__item">
4796
+ <a href="#plugin-hook-method-pre_test_link_registerarg_hash" class="md-nav__link">
4797
+ <span class="md-ellipsis">
4798
+
4799
+ Plugin hook method pre_test_link_register(arg_hash)
4800
+
4801
+ </span>
4802
+ </a>
4803
+
4410
4804
  </li>
4411
4805
 
4412
4806
  <li class="md-nav__item">
@@ -4418,6 +4812,17 @@
4418
4812
  </span>
4419
4813
  </a>
4420
4814
 
4815
+ </li>
4816
+
4817
+ <li class="md-nav__item">
4818
+ <a href="#plugin-hook-method-pre_test_fixture_registerarg_hash" class="md-nav__link">
4819
+ <span class="md-ellipsis">
4820
+
4821
+ Plugin hook method pre_test_fixture_register(arg_hash)
4822
+
4823
+ </span>
4824
+ </a>
4825
+
4421
4826
  </li>
4422
4827
 
4423
4828
  <li class="md-nav__item">
@@ -4429,6 +4834,17 @@
4429
4834
  </span>
4430
4835
  </a>
4431
4836
 
4837
+ </li>
4838
+
4839
+ <li class="md-nav__item">
4840
+ <a href="#plugin-hook-method-explain_test_crasharg_hash" class="md-nav__link">
4841
+ <span class="md-ellipsis">
4842
+
4843
+ Plugin hook method explain_test_crash(arg_hash)
4844
+
4845
+ </span>
4846
+ </a>
4847
+
4432
4848
  </li>
4433
4849
 
4434
4850
  <li class="md-nav__item">
@@ -4501,7 +4917,7 @@
4501
4917
  <a href="#validating-a-plugins-tools" class="md-nav__link">
4502
4918
  <span class="md-ellipsis">
4503
4919
 
4504
- Validating a plugin's tools
4920
+ Validating a plugin’s tools
4505
4921
 
4506
4922
  </span>
4507
4923
  </a>
@@ -4517,6 +4933,78 @@
4517
4933
  </span>
4518
4934
  </a>
4519
4935
 
4936
+ </li>
4937
+
4938
+ <li class="md-nav__item">
4939
+ <a href="#test-results-report-templates" class="md-nav__link">
4940
+ <span class="md-ellipsis">
4941
+
4942
+ Test results report templates
4943
+
4944
+ </span>
4945
+ </a>
4946
+
4947
+ <nav class="md-nav" aria-label="Test results report templates">
4948
+ <ul class="md-nav__list">
4949
+
4950
+ <li class="md-nav__item">
4951
+ <a href="#supplying-a-template" class="md-nav__link">
4952
+ <span class="md-ellipsis">
4953
+
4954
+ Supplying a template
4955
+
4956
+ </span>
4957
+ </a>
4958
+
4959
+ </li>
4960
+
4961
+ <li class="md-nav__item">
4962
+ <a href="#supported-syntax" class="md-nav__link">
4963
+ <span class="md-ellipsis">
4964
+
4965
+ Supported syntax
4966
+
4967
+ </span>
4968
+ </a>
4969
+
4970
+ </li>
4971
+
4972
+ <li class="md-nav__item">
4973
+ <a href="#newline-trimming" class="md-nav__link">
4974
+ <span class="md-ellipsis">
4975
+
4976
+ Newline trimming
4977
+
4978
+ </span>
4979
+ </a>
4980
+
4981
+ </li>
4982
+
4983
+ <li class="md-nav__item">
4984
+ <a href="#what-a-template-can-reference" class="md-nav__link">
4985
+ <span class="md-ellipsis">
4986
+
4987
+ What a template can reference
4988
+
4989
+ </span>
4990
+ </a>
4991
+
4992
+ </li>
4993
+
4994
+ <li class="md-nav__item">
4995
+ <a href="#unsupported-syntax" class="md-nav__link">
4996
+ <span class="md-ellipsis">
4997
+
4998
+ Unsupported syntax
4999
+
5000
+ </span>
5001
+ </a>
5002
+
5003
+ </li>
5004
+
5005
+ </ul>
5006
+ </nav>
5007
+
4520
5008
  </li>
4521
5009
 
4522
5010
  </ul>
@@ -4609,13 +5097,13 @@
4609
5097
  <p>Naming and location conventions:</p>
4610
5098
  <ul>
4611
5099
  <li><code>&lt;plugin_name&gt;/lib/&lt;plugin_name&gt;.rb</code></li>
4612
- <li>The plugin's class name must be the camelized version (a.k.a. "bumpy case")
5100
+ <li>The plugin’s class name must be the camelized version (a.k.a. "bumpy case")
4613
5101
  of the plugin filename — <code>whiz_bang.rb</code> ➡️ <code>WhizBang</code>.</li>
4614
5102
  </ul>
4615
5103
  <p>This plugin option allows full programmatic ability connected to any of a number
4616
5104
  of predefined Ceedling build steps.</p>
4617
5105
  <p>The contents of <code>&lt;plugin_name&gt;.rb</code> must implement a class that subclasses
4618
- <code>Plugin</code>, Ceedling's plugin base class.</p>
5106
+ <code>Plugin</code>, Ceedling’s plugin base class.</p>
4619
5107
  <h2 id="example-plugin-subclass">Example <code>Plugin</code> subclass</h2>
4620
5108
  <p>An incomplete <code>Plugin</code> subclass follows to illustrate the basics.</p>
4621
5109
  <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1"># whiz_bang/lib/whiz_bang.rb</span>
@@ -4708,7 +5196,7 @@ whose associated value is itself a hash with the following contents:</p>
4708
5196
  <p class="admonition-title">Preprocessing Hook Limitations</p>
4709
5197
  <p>Test preprocessing steps are quite sophisticated and involve various combinations
4710
5198
  of tool executions. The <code>post_</code> preprocessing hooks do not include shell results.
4711
- Future updates to Ceedling's plugin system will create a more robust means of
5199
+ Future updates to Ceedling’s plugin system will create a more robust means of
4712
5200
  attaching custom behaviors to test preprocessing or connecting your own
4713
5201
  preprocessing pipeline with toolchains other than GCC.</p>
4714
5202
  </div>
@@ -4793,35 +5281,83 @@ called a number of times equal to the number of test files in a test build.</p>
4793
5281
  <a id="__codelineno-7-10" name="__codelineno-7-10" href="#__codelineno-7-10"></a><span class="w"> </span><span class="ss">:runner_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span>
4794
5282
  <a id="__codelineno-7-11" name="__codelineno-7-11" href="#__codelineno-7-11"></a><span class="p">}</span>
4795
5283
  </code></pre></div>
4796
- <h2 id="plugin-hook-methods-pre_compile_executearg_hash-and-post_compile_executearg_hash"><code>Plugin</code> hook methods <code>pre_compile_execute(arg_hash)</code> and <code>post_compile_execute(arg_hash)</code></h2>
4797
- <p>These methods are called before and after source file compilation. These are
4798
- called in both test and release builds. This pair of methods is called a number
4799
- of times equal to the number of C files in a test or release build.</p>
5284
+ <h2 id="delta-build-hooks">Delta build hooks</h2>
5285
+ <p>Ceedling skips work when nothing has changed. This is called a delta build.
5286
+ See <a href="../../getting-started/builds.html">Delta Builds</a> for the full picture.</p>
5287
+ <p>Three hook methods run before Ceedling checks delta build state for a
5288
+ target. Each one always runs, for every target, whether or not that target
5289
+ turns out to need rebuilding. A plugin uses one of these hooks to swap in
5290
+ its own tool for its own build context. Doing the swap here, not only in
5291
+ the matching <code>pre_*_execute</code> hook below, makes sure Ceedling’s delta build
5292
+ check sees the real tool. Otherwise a change to that tool’s own settings
5293
+ will not force a rebuild.</p>
5294
+ <h2 id="plugin-hook-method-pre_test_compile_registerarg_hash"><code>Plugin</code> hook method <code>pre_test_compile_register(arg_hash)</code></h2>
5295
+ <p>Test builds only, not release builds. Runs once per C file in a test build.
5296
+ Runs before Ceedling registers the file as a delta build target.</p>
4800
5297
  <p>The argument <code>arg_hash</code> follows the structure below:</p>
4801
5298
  <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
4802
5299
  <a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="w"> </span><span class="ss">:tool</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
4803
5300
  <a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="w"> </span><span class="c1"># Hash holding compiler tool properties — see &#39;:tools&#39; in the Project Configuration Reference</span>
4804
5301
  <a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="w"> </span><span class="p">},</span>
4805
- <a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="w"> </span><span class="c1"># Symbol of the operation being performed, e.g. :compile, :assemble or :link</span>
5302
+ <a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="w"> </span><span class="c1"># Symbol of the operation being considered, e.g. :compile or :assemble</span>
4806
5303
  <a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a><span class="w"> </span><span class="ss">:operation</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">operation</span><span class="o">&gt;</span><span class="p">,</span>
4807
- <a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a><span class="w"> </span><span class="c1"># Additional context passed by the calling function.</span>
4808
- <a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a><span class="w"> </span><span class="c1"># Ceedling provides :test or :release by default while plugins may provide another.</span>
4809
- <a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
4810
- <a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a><span class="w"> </span><span class="c1"># Filepath of the input C file</span>
4811
- <a id="__codelineno-8-11" name="__codelineno-8-11" href="#__codelineno-8-11"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
4812
- <a id="__codelineno-8-12" name="__codelineno-8-12" href="#__codelineno-8-12"></a><span class="w"> </span><span class="c1"># Filepath of the output object file</span>
4813
- <a id="__codelineno-8-13" name="__codelineno-8-13" href="#__codelineno-8-13"></a><span class="w"> </span><span class="ss">:object</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
4814
- <a id="__codelineno-8-14" name="__codelineno-8-14" href="#__codelineno-8-14"></a><span class="w"> </span><span class="c1"># List of flags to be provided to compiler tool</span>
4815
- <a id="__codelineno-8-15" name="__codelineno-8-15" href="#__codelineno-8-15"></a><span class="w"> </span><span class="ss">:flags</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">flags</span><span class="o">&gt;]</span><span class="p">,</span>
4816
- <a id="__codelineno-8-16" name="__codelineno-8-16" href="#__codelineno-8-16"></a><span class="w"> </span><span class="c1"># List of search paths to be provided to compiler tool</span>
4817
- <a id="__codelineno-8-17" name="__codelineno-8-17" href="#__codelineno-8-17"></a><span class="w"> </span><span class="ss">:search_paths</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">paths</span><span class="o">&gt;]</span><span class="p">,</span>
4818
- <a id="__codelineno-8-18" name="__codelineno-8-18" href="#__codelineno-8-18"></a><span class="w"> </span><span class="c1"># List of compilation symbols to be provided to compiler tool</span>
4819
- <a id="__codelineno-8-19" name="__codelineno-8-19" href="#__codelineno-8-19"></a><span class="w"> </span><span class="ss">:defines</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">defines</span><span class="o">&gt;]</span><span class="p">,</span>
4820
- <a id="__codelineno-8-20" name="__codelineno-8-20" href="#__codelineno-8-20"></a><span class="w"> </span><span class="c1"># Filepath of the listing file, e.g. .lst file</span>
4821
- <a id="__codelineno-8-21" name="__codelineno-8-21" href="#__codelineno-8-21"></a><span class="w"> </span><span class="ss">:list</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
4822
- <a id="__codelineno-8-22" name="__codelineno-8-22" href="#__codelineno-8-22"></a><span class="w"> </span><span class="c1"># Filepath of the dependencies file, e.g. .d file</span>
4823
- <a id="__codelineno-8-23" name="__codelineno-8-23" href="#__codelineno-8-23"></a><span class="w"> </span><span class="ss">:dependencies</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span>
4824
- <a id="__codelineno-8-24" name="__codelineno-8-24" href="#__codelineno-8-24"></a><span class="p">}</span>
5304
+ <a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
5305
+ <a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a><span class="w"> </span><span class="ss">:module_name</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;name&gt;&quot;</span><span class="p">,</span>
5306
+ <a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5307
+ <a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a><span class="w"> </span><span class="ss">:object</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5308
+ <a id="__codelineno-8-11" name="__codelineno-8-11" href="#__codelineno-8-11"></a><span class="w"> </span><span class="ss">:flags</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">flags</span><span class="o">&gt;]</span><span class="p">,</span>
5309
+ <a id="__codelineno-8-12" name="__codelineno-8-12" href="#__codelineno-8-12"></a><span class="w"> </span><span class="ss">:defines</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">defines</span><span class="o">&gt;]</span>
5310
+ <a id="__codelineno-8-13" name="__codelineno-8-13" href="#__codelineno-8-13"></a><span class="p">}</span>
5311
+ </code></pre></div>
5312
+ <h2 id="plugin-hook-methods-pre_compile_executearg_hash-and-post_compile_executearg_hash"><code>Plugin</code> hook methods <code>pre_compile_execute(arg_hash)</code> and <code>post_compile_execute(arg_hash)</code></h2>
5313
+ <p>These methods are called before and after source file compilation. These are
5314
+ called in both test and release builds. This pair of methods is called a number
5315
+ of times equal to the number of C files in a test or release build.</p>
5316
+ <p>The argument <code>arg_hash</code> follows the structure below:</p>
5317
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
5318
+ <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="w"> </span><span class="ss">:tool</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5319
+ <a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="w"> </span><span class="c1"># Hash holding compiler tool properties — see &#39;:tools&#39; in the Project Configuration Reference</span>
5320
+ <a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="w"> </span><span class="p">},</span>
5321
+ <a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="w"> </span><span class="c1"># Symbol of the operation being performed, e.g. :compile, :assemble or :link</span>
5322
+ <a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="w"> </span><span class="ss">:operation</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">operation</span><span class="o">&gt;</span><span class="p">,</span>
5323
+ <a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a><span class="w"> </span><span class="c1"># Additional context passed by the calling function.</span>
5324
+ <a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a><span class="w"> </span><span class="c1"># Ceedling provides :test or :release by default while plugins may provide another.</span>
5325
+ <a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
5326
+ <a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a><span class="w"> </span><span class="c1"># Filepath of the input C file</span>
5327
+ <a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5328
+ <a id="__codelineno-9-12" name="__codelineno-9-12" href="#__codelineno-9-12"></a><span class="w"> </span><span class="c1"># Filepath of the output object file</span>
5329
+ <a id="__codelineno-9-13" name="__codelineno-9-13" href="#__codelineno-9-13"></a><span class="w"> </span><span class="ss">:object</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5330
+ <a id="__codelineno-9-14" name="__codelineno-9-14" href="#__codelineno-9-14"></a><span class="w"> </span><span class="c1"># List of flags to be provided to compiler tool</span>
5331
+ <a id="__codelineno-9-15" name="__codelineno-9-15" href="#__codelineno-9-15"></a><span class="w"> </span><span class="ss">:flags</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">flags</span><span class="o">&gt;]</span><span class="p">,</span>
5332
+ <a id="__codelineno-9-16" name="__codelineno-9-16" href="#__codelineno-9-16"></a><span class="w"> </span><span class="c1"># List of search paths to be provided to compiler tool</span>
5333
+ <a id="__codelineno-9-17" name="__codelineno-9-17" href="#__codelineno-9-17"></a><span class="w"> </span><span class="ss">:search_paths</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">paths</span><span class="o">&gt;]</span><span class="p">,</span>
5334
+ <a id="__codelineno-9-18" name="__codelineno-9-18" href="#__codelineno-9-18"></a><span class="w"> </span><span class="c1"># List of compilation symbols to be provided to compiler tool</span>
5335
+ <a id="__codelineno-9-19" name="__codelineno-9-19" href="#__codelineno-9-19"></a><span class="w"> </span><span class="ss">:defines</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">defines</span><span class="o">&gt;]</span><span class="p">,</span>
5336
+ <a id="__codelineno-9-20" name="__codelineno-9-20" href="#__codelineno-9-20"></a><span class="w"> </span><span class="c1"># Filepath of the listing file, e.g. .lst file</span>
5337
+ <a id="__codelineno-9-21" name="__codelineno-9-21" href="#__codelineno-9-21"></a><span class="w"> </span><span class="ss">:list</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5338
+ <a id="__codelineno-9-22" name="__codelineno-9-22" href="#__codelineno-9-22"></a><span class="w"> </span><span class="c1"># Filepath of the dependencies file, e.g. .d file</span>
5339
+ <a id="__codelineno-9-23" name="__codelineno-9-23" href="#__codelineno-9-23"></a><span class="w"> </span><span class="ss">:dependencies</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span>
5340
+ <a id="__codelineno-9-24" name="__codelineno-9-24" href="#__codelineno-9-24"></a><span class="p">}</span>
5341
+ </code></pre></div>
5342
+ <h2 id="plugin-hook-method-pre_test_link_registerarg_hash"><code>Plugin</code> hook method <code>pre_test_link_register(arg_hash)</code></h2>
5343
+ <p>Test builds only, not release builds. Runs once per test executable in a
5344
+ test build. Runs before Ceedling registers the executable as a delta build
5345
+ target. See <a href="#delta-build-hooks">Delta build hooks</a> above for why this hook
5346
+ exists and when it runs.</p>
5347
+ <p>A plugin swapping in its own linker tool for its own build context should
5348
+ do so here, for the same reason described under <code>pre_test_compile_register</code>
5349
+ above. Because this hook always runs, it also gives a plugin a reliable
5350
+ place to note that its own build context ran at all, apart from whether
5351
+ anything actually needed relinking.</p>
5352
+ <p>The argument <code>arg_hash</code> follows the structure below:</p>
5353
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
5354
+ <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="ss">:tool</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5355
+ <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="c1"># Hash holding linker tool properties — see &#39;:tools&#39; in the Project Configuration Reference</span>
5356
+ <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="p">},</span>
5357
+ <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
5358
+ <a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a><span class="w"> </span><span class="ss">:flags</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">flags</span><span class="o">&gt;]</span><span class="p">,</span>
5359
+ <a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="w"> </span><span class="ss">:executable</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span>
5360
+ <a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="p">}</span>
4825
5361
  </code></pre></div>
4826
5362
  <h2 id="plugin-hook-methods-pre_link_executearg_hash-and-post_link_executearg_hash"><code>Plugin</code> hook methods <code>pre_link_execute(arg_hash)</code> and <code>post_link_execute(arg_hash)</code></h2>
4827
5363
  <p>These methods are called before and after linking an executable. These are
@@ -4830,27 +5366,58 @@ executable and each release artifact. This pair of methods is called a number
4830
5366
  of times equal to the number of test files in a test build or release artifacts
4831
5367
  in a release build.</p>
4832
5368
  <p>The argument <code>arg_hash</code> follows the structure below:</p>
4833
- <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
4834
- <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="w"> </span><span class="c1"># Hash holding linker tool properties.</span>
4835
- <a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="w"> </span><span class="ss">:tool</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
4836
- <a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="w"> </span><span class="c1"># Hash holding compiler tool properties — see &#39;:tools&#39; in the Project Configuration Reference</span>
4837
- <a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="w"> </span><span class="p">},</span>
4838
- <a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="w"> </span><span class="c1"># Additional context passed by the calling function.</span>
4839
- <a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a><span class="w"> </span><span class="c1"># Ceedling provides :test or :release by default while plugins may provide another.</span>
4840
- <a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
4841
- <a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a><span class="w"> </span><span class="c1"># List of object files paths being linked, e.g. .o files</span>
4842
- <a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a><span class="w"> </span><span class="ss">:objects</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[]</span><span class="p">,</span>
4843
- <a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a><span class="w"> </span><span class="c1"># List of flags to be provided to linker tool</span>
4844
- <a id="__codelineno-9-12" name="__codelineno-9-12" href="#__codelineno-9-12"></a><span class="w"> </span><span class="ss">:flags</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">flags</span><span class="o">&gt;]</span><span class="p">,</span>
4845
- <a id="__codelineno-9-13" name="__codelineno-9-13" href="#__codelineno-9-13"></a><span class="w"> </span><span class="c1"># Filepath of the output file, e.g. .out file</span>
4846
- <a id="__codelineno-9-14" name="__codelineno-9-14" href="#__codelineno-9-14"></a><span class="w"> </span><span class="ss">:executable</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
4847
- <a id="__codelineno-9-15" name="__codelineno-9-15" href="#__codelineno-9-15"></a><span class="w"> </span><span class="c1"># Filepath of the map file, e.g. .map file</span>
4848
- <a id="__codelineno-9-16" name="__codelineno-9-16" href="#__codelineno-9-16"></a><span class="w"> </span><span class="ss">:map</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
4849
- <a id="__codelineno-9-17" name="__codelineno-9-17" href="#__codelineno-9-17"></a><span class="w"> </span><span class="c1"># List of libraries to link, e.g. those passed to the (GNU) linker with -l</span>
4850
- <a id="__codelineno-9-18" name="__codelineno-9-18" href="#__codelineno-9-18"></a><span class="w"> </span><span class="ss">:libraries</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">names</span><span class="o">&gt;]</span><span class="p">,</span>
4851
- <a id="__codelineno-9-19" name="__codelineno-9-19" href="#__codelineno-9-19"></a><span class="w"> </span><span class="c1"># List of libraries paths, e.g. the ones passed to the (GNU) linker with -L</span>
4852
- <a id="__codelineno-9-20" name="__codelineno-9-20" href="#__codelineno-9-20"></a><span class="w"> </span><span class="ss">:libpaths</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">paths</span><span class="o">&gt;]</span>
4853
- <a id="__codelineno-9-21" name="__codelineno-9-21" href="#__codelineno-9-21"></a><span class="p">}</span>
5369
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
5370
+ <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="w"> </span><span class="c1"># Hash holding linker tool properties.</span>
5371
+ <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="w"> </span><span class="ss">:tool</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5372
+ <a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="w"> </span><span class="c1"># Hash holding compiler tool properties — see &#39;:tools&#39; in the Project Configuration Reference</span>
5373
+ <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="w"> </span><span class="p">},</span>
5374
+ <a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a><span class="w"> </span><span class="c1"># Additional context passed by the calling function.</span>
5375
+ <a id="__codelineno-11-7" name="__codelineno-11-7" href="#__codelineno-11-7"></a><span class="w"> </span><span class="c1"># Ceedling provides :test or :release by default while plugins may provide another.</span>
5376
+ <a id="__codelineno-11-8" name="__codelineno-11-8" href="#__codelineno-11-8"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
5377
+ <a id="__codelineno-11-9" name="__codelineno-11-9" href="#__codelineno-11-9"></a><span class="w"> </span><span class="c1"># List of object files paths being linked, e.g. .o files</span>
5378
+ <a id="__codelineno-11-10" name="__codelineno-11-10" href="#__codelineno-11-10"></a><span class="w"> </span><span class="ss">:objects</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[]</span><span class="p">,</span>
5379
+ <a id="__codelineno-11-11" name="__codelineno-11-11" href="#__codelineno-11-11"></a><span class="w"> </span><span class="c1"># List of flags to be provided to linker tool</span>
5380
+ <a id="__codelineno-11-12" name="__codelineno-11-12" href="#__codelineno-11-12"></a><span class="w"> </span><span class="ss">:flags</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">flags</span><span class="o">&gt;]</span><span class="p">,</span>
5381
+ <a id="__codelineno-11-13" name="__codelineno-11-13" href="#__codelineno-11-13"></a><span class="w"> </span><span class="c1"># Filepath of the output file, e.g. .out file</span>
5382
+ <a id="__codelineno-11-14" name="__codelineno-11-14" href="#__codelineno-11-14"></a><span class="w"> </span><span class="ss">:executable</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5383
+ <a id="__codelineno-11-15" name="__codelineno-11-15" href="#__codelineno-11-15"></a><span class="w"> </span><span class="c1"># Filepath of the map file, e.g. .map file</span>
5384
+ <a id="__codelineno-11-16" name="__codelineno-11-16" href="#__codelineno-11-16"></a><span class="w"> </span><span class="ss">:map</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5385
+ <a id="__codelineno-11-17" name="__codelineno-11-17" href="#__codelineno-11-17"></a><span class="w"> </span><span class="c1"># List of libraries to link, e.g. those passed to the (GNU) linker with -l</span>
5386
+ <a id="__codelineno-11-18" name="__codelineno-11-18" href="#__codelineno-11-18"></a><span class="w"> </span><span class="ss">:libraries</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">names</span><span class="o">&gt;]</span><span class="p">,</span>
5387
+ <a id="__codelineno-11-19" name="__codelineno-11-19" href="#__codelineno-11-19"></a><span class="w"> </span><span class="c1"># List of libraries paths, e.g. the ones passed to the (GNU) linker with -L</span>
5388
+ <a id="__codelineno-11-20" name="__codelineno-11-20" href="#__codelineno-11-20"></a><span class="w"> </span><span class="ss">:libpaths</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[&lt;</span><span class="n">paths</span><span class="o">&gt;]</span>
5389
+ <a id="__codelineno-11-21" name="__codelineno-11-21" href="#__codelineno-11-21"></a><span class="p">}</span>
5390
+ </code></pre></div>
5391
+ <h2 id="plugin-hook-method-pre_test_fixture_registerarg_hash"><code>Plugin</code> hook method <code>pre_test_fixture_register(arg_hash)</code></h2>
5392
+ <p>Runs once per test executable. Runs before Ceedling registers the test run
5393
+ as a delta build target. See <a href="#delta-build-hooks">Delta build hooks</a> above
5394
+ for why this hook exists and when it runs.</p>
5395
+ <p>A plugin swapping in its own wrapper tool to run the test executable (as
5396
+ Valgrind does) should do so here, for the same reason described under
5397
+ <code>pre_test_compile_register</code> above. Otherwise a change to that wrapper tool’s own
5398
+ settings will not force a rerun.</p>
5399
+ <p>A wrapper tool runs the test executable as one of its own arguments. Ceedling
5400
+ places Unity’s test case filters (from <code>--test-case</code>, <code>--exclude_test_case</code>, and
5401
+ backtrace reruns) after the tool’s arguments, where the executable is.</p>
5402
+ <p>A crashed test executable reruns one test case at a time when
5403
+ <code>:use_backtrace</code> is <code>:simple</code>. By default the reruns go through Ceedling’s own
5404
+ backtrace tool, not a swapped wrapper. A wrapper the reruns should run through
5405
+ too (as the Sanitize plugin’s does, to keep its runtime options) sets
5406
+ <code>:backtrace_rerun =&gt; true</code> in its tool hash. Such a tool can't run under gdb, so
5407
+ <code>:gdb</code> backtraces fall back to <code>:simple</code> for it, with a notice. Leave the key out
5408
+ for a wrapper that writes one report per test, as Valgrind’s does, since each
5409
+ rerun would overwrite it.</p>
5410
+ <p>The argument <code>arg_hash</code> follows the structure below:</p>
5411
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
5412
+ <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="w"> </span><span class="ss">:tool</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5413
+ <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="w"> </span><span class="c1"># Hash holding execution tool properties — see &#39;:tools&#39; in the Project Configuration Reference</span>
5414
+ <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a><span class="w"> </span><span class="p">},</span>
5415
+ <a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
5416
+ <a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a><span class="w"> </span><span class="ss">:test_name</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;name&gt;&quot;</span><span class="p">,</span>
5417
+ <a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a><span class="w"> </span><span class="c1"># The delta build target for this test run. A plugin can register its own</span>
5418
+ <a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a><span class="w"> </span><span class="c1"># additional data against this same target — see Delta Builds.</span>
5419
+ <a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a><span class="w"> </span><span class="ss">:target</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span>
5420
+ <a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a><span class="p">}</span>
4854
5421
  </code></pre></div>
4855
5422
  <h2 id="plugin-hook-methods-pre_test_fixture_executearg_hash-and-post_test_fixture_executearg_hash"><code>Plugin</code> hook methods <code>pre_test_fixture_execute(arg_hash)</code> and <code>post_test_fixture_execute(arg_hash)</code></h2>
4856
5423
  <p>These methods are called before and after running a test executable. If a build
@@ -4858,23 +5425,56 @@ does not include tests, these are not called. This pair of methods is called
4858
5425
  for each test executable in a build (each test file is ultimately built into a
4859
5426
  test executable).</p>
4860
5427
  <p>The argument <code>arg_hash</code> follows the structure below:</p>
4861
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
4862
- <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="c1"># Hash holding execution tool properties.</span>
4863
- <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="ss">:tool</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
4864
- <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="c1"># Hash holding compiler tool properties — see &#39;:tools&#39; in the Project Configuration Reference</span>
4865
- <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="w"> </span><span class="p">},</span>
4866
- <a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a><span class="w"> </span><span class="c1"># Additional context passed by the calling function.</span>
4867
- <a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="w"> </span><span class="c1"># Ceedling provides :test or :release by default while plugins may provide another.</span>
4868
- <a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
4869
- <a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a><span class="w"> </span><span class="c1"># Name of the test file minus path and extension (`test/TestIness.c` -&gt; &#39;TestIness&#39;)</span>
4870
- <a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a><span class="w"> </span><span class="ss">:test_name</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;name&gt;&quot;</span><span class="p">,</span>
4871
- <a id="__codelineno-10-11" name="__codelineno-10-11" href="#__codelineno-10-11"></a><span class="w"> </span><span class="c1"># Filepath of original tests C file that became the test executable</span>
4872
- <a id="__codelineno-10-12" name="__codelineno-10-12" href="#__codelineno-10-12"></a><span class="w"> </span><span class="ss">:test_filepath</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
4873
- <a id="__codelineno-10-13" name="__codelineno-10-13" href="#__codelineno-10-13"></a><span class="w"> </span><span class="c1"># Path to the tests executable file, e.g. .out file</span>
4874
- <a id="__codelineno-10-14" name="__codelineno-10-14" href="#__codelineno-10-14"></a><span class="w"> </span><span class="ss">:executable</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
4875
- <a id="__codelineno-10-15" name="__codelineno-10-15" href="#__codelineno-10-15"></a><span class="w"> </span><span class="c1"># Path to the tests result file, e.g. .pass/.fail file</span>
4876
- <a id="__codelineno-10-16" name="__codelineno-10-16" href="#__codelineno-10-16"></a><span class="w"> </span><span class="ss">:result_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span>
4877
- <a id="__codelineno-10-17" name="__codelineno-10-17" href="#__codelineno-10-17"></a><span class="p">}</span>
5428
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
5429
+ <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="w"> </span><span class="c1"># Hash holding execution tool properties.</span>
5430
+ <a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a><span class="w"> </span><span class="ss">:tool</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5431
+ <a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a><span class="w"> </span><span class="c1"># Hash holding compiler tool properties — see &#39;:tools&#39; in the Project Configuration Reference</span>
5432
+ <a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a><span class="w"> </span><span class="p">},</span>
5433
+ <a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a><span class="w"> </span><span class="c1"># Additional context passed by the calling function.</span>
5434
+ <a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a><span class="w"> </span><span class="c1"># Ceedling provides :test or :release by default while plugins may provide another.</span>
5435
+ <a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a><span class="w"> </span><span class="ss">:context</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="ss">:&lt;</span><span class="n">context</span><span class="o">&gt;</span><span class="p">,</span>
5436
+ <a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a><span class="w"> </span><span class="c1"># Name of the test file minus path and extension (`test/TestIness.c` -&gt; &#39;TestIness&#39;)</span>
5437
+ <a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a><span class="w"> </span><span class="ss">:test_name</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;name&gt;&quot;</span><span class="p">,</span>
5438
+ <a id="__codelineno-13-11" name="__codelineno-13-11" href="#__codelineno-13-11"></a><span class="w"> </span><span class="c1"># Filepath of original tests C file that became the test executable</span>
5439
+ <a id="__codelineno-13-12" name="__codelineno-13-12" href="#__codelineno-13-12"></a><span class="w"> </span><span class="ss">:test_filepath</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5440
+ <a id="__codelineno-13-13" name="__codelineno-13-13" href="#__codelineno-13-13"></a><span class="w"> </span><span class="c1"># Path to the tests executable file, e.g. .out file</span>
5441
+ <a id="__codelineno-13-14" name="__codelineno-13-14" href="#__codelineno-13-14"></a><span class="w"> </span><span class="ss">:executable</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span><span class="p">,</span>
5442
+ <a id="__codelineno-13-15" name="__codelineno-13-15" href="#__codelineno-13-15"></a><span class="w"> </span><span class="c1"># Path to the tests result file, e.g. .pass/.fail file</span>
5443
+ <a id="__codelineno-13-16" name="__codelineno-13-16" href="#__codelineno-13-16"></a><span class="w"> </span><span class="ss">:result_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span>
5444
+ <a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a><span class="p">}</span>
5445
+ </code></pre></div>
5446
+ <h2 id="plugin-hook-method-explain_test_crasharg_hash"><code>Plugin</code> hook method <code>explain_test_crash(arg_hash)</code></h2>
5447
+ <p>Called when a test executable crashed, before Ceedling writes the crash as test
5448
+ failures. A plugin that recognizes the cause, such as a sanitizer’s report in the
5449
+ run’s output, sets <code>arg_hash[:explanation]</code> to a short message. That message
5450
+ replaces the generic crash message in the test’s failure, except with <code>:gdb</code>
5451
+ backtraces, whose failures carry gdb’s own trace. It also replaces Ceedling’s
5452
+ generic crash notice and its backtrace advice.</p>
5453
+ <p>Two optional keys shape the notice:</p>
5454
+ <ul>
5455
+ <li><code>:explanation_heading</code> completes its first line, “Test executable <code>x</code> …”.
5456
+ Without it, the line ends “crashed.”</li>
5457
+ <li><code>:explanation_details</code> lists lines that follow the cause, such as where a
5458
+ log is. The failure message adds them in parentheses.</li>
5459
+ </ul>
5460
+ <p>With <code>:use_backtrace</code> set to <code>:simple</code>, it is called again for each rerun that
5461
+ crashes, with that rerun’s own shell result, so each crashed test case can be
5462
+ explained on its own.</p>
5463
+ <p>The argument <code>arg_hash</code> holds the same keys as <code>pre_test_fixture_execute</code> above,
5464
+ plus:</p>
5465
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
5466
+ <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span><span class="c1"># ...the keys above...</span>
5467
+ <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a><span class="w"> </span><span class="c1"># The crashed run’s shell result -- see Command line tool shell results</span>
5468
+ <a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="w"> </span><span class="ss">:shell_result</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="o">...</span><span class="w"> </span><span class="p">},</span>
5469
+ <a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a><span class="w"> </span><span class="c1"># Set by a plugin that recognizes the cause; nil otherwise</span>
5470
+ <a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a><span class="w"> </span><span class="ss">:explanation</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
5471
+ <a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a><span class="w"> </span><span class="c1"># True for the crash&#39;s main run, whose explanation reaches the crash notice;</span>
5472
+ <a id="__codelineno-14-8" name="__codelineno-14-8" href="#__codelineno-14-8"></a><span class="w"> </span><span class="c1"># false for a backtrace rerun</span>
5473
+ <a id="__codelineno-14-9" name="__codelineno-14-9" href="#__codelineno-14-9"></a><span class="w"> </span><span class="ss">:crash_notice</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="kp">true</span><span class="p">,</span>
5474
+ <a id="__codelineno-14-10" name="__codelineno-14-10" href="#__codelineno-14-10"></a><span class="w"> </span><span class="c1"># Optional, set alongside :explanation</span>
5475
+ <a id="__codelineno-14-11" name="__codelineno-14-11" href="#__codelineno-14-11"></a><span class="w"> </span><span class="ss">:explanation_details</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
5476
+ <a id="__codelineno-14-12" name="__codelineno-14-12" href="#__codelineno-14-12"></a><span class="w"> </span><span class="ss">:explanation_heading</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="kp">nil</span>
5477
+ <a id="__codelineno-14-13" name="__codelineno-14-13" href="#__codelineno-14-13"></a><span class="p">}</span>
4878
5478
  </code></pre></div>
4879
5479
  <h2 id="plugin-hook-methods-pre_testtest-and-post_testtest"><code>Plugin</code> hook methods <code>pre_test(test)</code> and <code>post_test(test)</code></h2>
4880
5480
  <p>These methods are called before and after performing all steps needed to run a
@@ -4889,6 +5489,10 @@ termination points, including early exit due to a build error.</p>
4889
5489
  <p>The argument <code>context</code> is the build context symbol (e.g. <code>:test</code>, <code>:gcov</code>) that
4890
5490
  was passed to <code>TestInvoker#setup_and_invoke</code>. This lets a plugin respond
4891
5491
  differently depending on which kind of build triggered the pipeline.</p>
5492
+ <p>Each context also gets its own separate delta build cache. A plugin that
5493
+ runs its own build under a distinct context symbol keeps that build’s
5494
+ tracked state apart from ordinary test builds and from any other plugin’s
5495
+ builds. See <a href="../../getting-started/builds.html">Delta Builds</a> for more.</p>
4892
5496
  <p>The argument <code>timestamp_s</code> is a floating-point stopwatch value in seconds
4893
5497
  (from <code>SystemWrapper.time_stopwatch_s</code>). Compare the <code>pre_test_build</code> and
4894
5498
  <code>post_test_build</code> timestamps to compute the total test build duration using
@@ -4918,27 +5522,27 @@ cases is not a build error.</p>
4918
5522
  <p>This method is called when invoking the summary task, <code>ceedling summary</code>. This
4919
5523
  method facilitates logging the results of the last build without running the
4920
5524
  previous build again.</p>
4921
- <h2 id="validating-a-plugins-tools">Validating a plugin's tools</h2>
5525
+ <h2 id="validating-a-plugins-tools">Validating a plugin’s tools</h2>
4922
5526
  <p>By default, Ceedling validates configured tools at startup according to a
4923
5527
  simple setting within the tool definition. This works just fine for default
4924
5528
  core tools and options. However, in the case of plugins, tools may not be even
4925
- relevant to a plugin's operation depending on its configurable options. It's
5529
+ relevant to a plugin’s operation depending on its configurable options. It’s
4926
5530
  a bit silly for a tool not needed by your project to fail validation if
4927
- Ceedling can't find it in your <code>$PATH</code>. Similarly, it's irresponsible to skip
5531
+ Ceedling can't find it in your <code>$PATH</code>. Similarly, it’s irresponsible to skip
4928
5532
  validating a tool just because it may not be needed.</p>
4929
5533
  <p>Ceedling provides optional, programmatic tool validation for these cases.
4930
- <code>@ceedling[:tool_validator].validate()</code> can be forced to ignore a tool's
5534
+ <code>@ceedling[:tool_validator].validate()</code> can be forced to ignore a tool’s
4931
5535
  <code>required:</code> setting to validate it. In such a scenario, a plugin should
4932
5536
  configure its own tools as <code>:optional =&gt; true</code> but forcibly validate them at
4933
- plugin startup if the plugin's configuration options require said tool.</p>
5537
+ plugin startup if the plugin’s configuration options require said tool.</p>
4934
5538
  <p>An example from the <code>gcov</code> plugin illustrates this.</p>
4935
- <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="c1"># Validate gcov summary tool if coverage summaries are enabled (summaries rely on the `gcov` tool)</span>
4936
- <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="k">if</span><span class="w"> </span><span class="n">summaries_enabled?</span><span class="p">(</span><span class="w"> </span><span class="vi">@project_config</span><span class="w"> </span><span class="p">)</span>
4937
- <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="w"> </span><span class="vi">@ceedling</span><span class="o">[</span><span class="ss">:tool_validator</span><span class="o">].</span><span class="n">validate</span><span class="p">(</span>
4938
- <a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="w"> </span><span class="ss">tool</span><span class="p">:</span><span class="w"> </span><span class="no">TOOLS_GCOV_SUMMARY</span><span class="p">,</span><span class="w"> </span><span class="c1"># Tool defintion as Ruby hash</span>
4939
- <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="w"> </span><span class="ss">boom</span><span class="p">:</span><span class="w"> </span><span class="kp">true</span><span class="w"> </span><span class="c1"># Ignore optional status (raise exception if invalid)</span>
4940
- <a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a><span class="w"> </span><span class="p">)</span>
4941
- <a id="__codelineno-11-7" name="__codelineno-11-7" href="#__codelineno-11-7"></a><span class="k">end</span>
5539
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="c1"># Validate gcov summary tool if coverage summaries are enabled (summaries rely on the `gcov` tool)</span>
5540
+ <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="k">if</span><span class="w"> </span><span class="n">summaries_enabled?</span><span class="p">(</span><span class="w"> </span><span class="vi">@project_config</span><span class="w"> </span><span class="p">)</span>
5541
+ <a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span><span class="vi">@ceedling</span><span class="o">[</span><span class="ss">:tool_validator</span><span class="o">].</span><span class="n">validate</span><span class="p">(</span>
5542
+ <a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a><span class="w"> </span><span class="ss">tool</span><span class="p">:</span><span class="w"> </span><span class="no">TOOLS_GCOV_SUMMARY</span><span class="p">,</span><span class="w"> </span><span class="c1"># Tool defintion as Ruby hash</span>
5543
+ <a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a><span class="w"> </span><span class="ss">boom</span><span class="p">:</span><span class="w"> </span><span class="kp">true</span><span class="w"> </span><span class="c1"># Ignore optional status (raise exception if invalid)</span>
5544
+ <a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a><span class="w"> </span><span class="p">)</span>
5545
+ <a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a><span class="k">end</span>
4942
5546
  </code></pre></div>
4943
5547
  <p>The tool <code>TOOLS_GCOV_SUMMARY</code> is defined with a Ruby hash in the plugin code.
4944
5548
  It is configured with <code>:optional =&gt; true</code>. At plugin startup, configuration
@@ -4950,73 +5554,221 @@ utility method is available for this purpose.</p>
4950
5554
  <p><code>@ceedling[:plugin_reportinator].assemble_test_results()</code></p>
4951
5555
  <p>This method takes as an argument a list of results filepaths. These typically
4952
5556
  correspond directly to the collection of test files Ceedling processed in a
4953
- given test build. It's common for this list of filepaths to be assembled from
5557
+ given test build. It’s common for this list of filepaths to be assembled from
4954
5558
  the <code>post_test_fixture_execute</code> build step execution hook.</p>
4955
5559
  <p>The data that <code>assemble_test_results()</code> returns has a structure as follows. In
4956
5560
  this example, actual results from a single, real test file are presented as
4957
5561
  hash/array Ruby code with comments and with some edits to reduce line length.</p>
4958
- <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="p">{</span>
4959
- <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="w"> </span><span class="c1"># Associates each test executable (i.e. test file) with an execution run time</span>
4960
- <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="w"> </span><span class="ss">:times</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
4961
- <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">21196400001645088</span>
4962
- <a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a><span class="w"> </span><span class="p">},</span>
4963
- <a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a>
4964
- <a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a><span class="w"> </span><span class="c1"># List of succeeding test cases, grouped by test file.</span>
4965
- <a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a><span class="w"> </span><span class="ss">:successes</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
4966
- <a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a><span class="w"> </span><span class="p">{</span>
4967
- <a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:dirname</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:basename</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;TestUsartModel.c&quot;</span><span class="p">},</span>
4968
- <a id="__codelineno-12-11" name="__codelineno-12-11" href="#__codelineno-12-11"></a><span class="w"> </span><span class="ss">:collection</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
4969
- <a id="__codelineno-12-12" name="__codelineno-12-12" href="#__codelineno-12-12"></a><span class="w"> </span><span class="c1"># If Unity is configured to do so, it will output execution run time for each test case.</span>
4970
- <a id="__codelineno-12-13" name="__codelineno-12-13" href="#__codelineno-12-13"></a><span class="w"> </span><span class="c1"># Ceedling creates a zero entry if the Unity option is not enabled.</span>
4971
- <a id="__codelineno-12-14" name="__codelineno-12-14" href="#__codelineno-12-14"></a><span class="w"> </span><span class="p">{</span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;testCase1&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">17</span><span class="p">,</span><span class="w"> </span><span class="ss">:message</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:unity_test_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">0</span><span class="p">},</span>
4972
- <a id="__codelineno-12-15" name="__codelineno-12-15" href="#__codelineno-12-15"></a><span class="w"> </span><span class="p">{</span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;testCase2&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="ss">:message</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:unity_test_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">0</span><span class="p">}</span>
4973
- <a id="__codelineno-12-16" name="__codelineno-12-16" href="#__codelineno-12-16"></a><span class="w"> </span><span class="o">]</span>
4974
- <a id="__codelineno-12-17" name="__codelineno-12-17" href="#__codelineno-12-17"></a><span class="w"> </span><span class="p">}</span>
4975
- <a id="__codelineno-12-18" name="__codelineno-12-18" href="#__codelineno-12-18"></a><span class="w"> </span><span class="o">]</span><span class="p">,</span>
4976
- <a id="__codelineno-12-19" name="__codelineno-12-19" href="#__codelineno-12-19"></a>
4977
- <a id="__codelineno-12-20" name="__codelineno-12-20" href="#__codelineno-12-20"></a><span class="w"> </span><span class="c1"># List of failing test cases, grouped by test file.</span>
4978
- <a id="__codelineno-12-21" name="__codelineno-12-21" href="#__codelineno-12-21"></a><span class="w"> </span><span class="ss">:failures</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
4979
- <a id="__codelineno-12-22" name="__codelineno-12-22" href="#__codelineno-12-22"></a><span class="w"> </span><span class="p">{</span>
4980
- <a id="__codelineno-12-23" name="__codelineno-12-23" href="#__codelineno-12-23"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:dirname</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:basename</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;TestUsartModel.c&quot;</span><span class="p">},</span>
4981
- <a id="__codelineno-12-24" name="__codelineno-12-24" href="#__codelineno-12-24"></a><span class="w"> </span><span class="ss">:collection</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
4982
- <a id="__codelineno-12-25" name="__codelineno-12-25" href="#__codelineno-12-25"></a><span class="w"> </span><span class="p">{</span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;testCase3&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">25</span><span class="p">,</span><span class="w"> </span><span class="ss">:message</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;failure message&gt;&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:unity_test_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">0</span><span class="p">}</span>
4983
- <a id="__codelineno-12-26" name="__codelineno-12-26" href="#__codelineno-12-26"></a><span class="w"> </span><span class="o">]</span>
4984
- <a id="__codelineno-12-27" name="__codelineno-12-27" href="#__codelineno-12-27"></a><span class="w"> </span><span class="p">}</span>
4985
- <a id="__codelineno-12-28" name="__codelineno-12-28" href="#__codelineno-12-28"></a><span class="w"> </span><span class="o">]</span><span class="p">,</span>
4986
- <a id="__codelineno-12-29" name="__codelineno-12-29" href="#__codelineno-12-29"></a>
4987
- <a id="__codelineno-12-30" name="__codelineno-12-30" href="#__codelineno-12-30"></a><span class="w"> </span><span class="c1"># List of ignored test cases, grouped by test file.</span>
4988
- <a id="__codelineno-12-31" name="__codelineno-12-31" href="#__codelineno-12-31"></a><span class="w"> </span><span class="ss">:ignores</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
4989
- <a id="__codelineno-12-32" name="__codelineno-12-32" href="#__codelineno-12-32"></a><span class="w"> </span><span class="p">{</span>
4990
- <a id="__codelineno-12-33" name="__codelineno-12-33" href="#__codelineno-12-33"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:dirname</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:basename</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;TestUsartModel.c&quot;</span><span class="p">},</span>
4991
- <a id="__codelineno-12-34" name="__codelineno-12-34" href="#__codelineno-12-34"></a><span class="w"> </span><span class="ss">:collection</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
4992
- <a id="__codelineno-12-35" name="__codelineno-12-35" href="#__codelineno-12-35"></a><span class="w"> </span><span class="p">{</span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;testCase4&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">39</span><span class="p">,</span><span class="w"> </span><span class="ss">:message</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:unity_test_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">0</span><span class="p">}</span>
4993
- <a id="__codelineno-12-36" name="__codelineno-12-36" href="#__codelineno-12-36"></a><span class="w"> </span><span class="o">]</span>
4994
- <a id="__codelineno-12-37" name="__codelineno-12-37" href="#__codelineno-12-37"></a><span class="w"> </span><span class="p">}</span>
4995
- <a id="__codelineno-12-38" name="__codelineno-12-38" href="#__codelineno-12-38"></a><span class="w"> </span><span class="o">]</span><span class="p">,</span>
4996
- <a id="__codelineno-12-39" name="__codelineno-12-39" href="#__codelineno-12-39"></a>
4997
- <a id="__codelineno-12-40" name="__codelineno-12-40" href="#__codelineno-12-40"></a><span class="w"> </span><span class="c1"># List of strings printed to $stdout, grouped by test file.</span>
4998
- <a id="__codelineno-12-41" name="__codelineno-12-41" href="#__codelineno-12-41"></a><span class="w"> </span><span class="ss">:stdout</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
4999
- <a id="__codelineno-12-42" name="__codelineno-12-42" href="#__codelineno-12-42"></a><span class="w"> </span><span class="p">{</span>
5000
- <a id="__codelineno-12-43" name="__codelineno-12-43" href="#__codelineno-12-43"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:dirname</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:basename</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;TestUsartModel.c&quot;</span><span class="p">},</span>
5001
- <a id="__codelineno-12-44" name="__codelineno-12-44" href="#__codelineno-12-44"></a><span class="w"> </span><span class="c1"># Calls to print to $stdout are outside Unity&#39;s scope, preventing attaching test file line numbers</span>
5002
- <a id="__codelineno-12-45" name="__codelineno-12-45" href="#__codelineno-12-45"></a><span class="w"> </span><span class="ss">:collection</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5003
- <a id="__codelineno-12-46" name="__codelineno-12-46" href="#__codelineno-12-46"></a><span class="w"> </span><span class="s2">&quot;&lt;$stdout string (e.g. printf() call)&gt;&quot;</span>
5004
- <a id="__codelineno-12-47" name="__codelineno-12-47" href="#__codelineno-12-47"></a><span class="w"> </span><span class="o">]</span>
5005
- <a id="__codelineno-12-48" name="__codelineno-12-48" href="#__codelineno-12-48"></a><span class="w"> </span><span class="p">}</span>
5006
- <a id="__codelineno-12-49" name="__codelineno-12-49" href="#__codelineno-12-49"></a><span class="w"> </span><span class="o">]</span><span class="p">,</span>
5007
- <a id="__codelineno-12-50" name="__codelineno-12-50" href="#__codelineno-12-50"></a>
5008
- <a id="__codelineno-12-51" name="__codelineno-12-51" href="#__codelineno-12-51"></a><span class="w"> </span><span class="c1"># Test suite run stats</span>
5009
- <a id="__codelineno-12-52" name="__codelineno-12-52" href="#__codelineno-12-52"></a><span class="w"> </span><span class="ss">:counts</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5010
- <a id="__codelineno-12-53" name="__codelineno-12-53" href="#__codelineno-12-53"></a><span class="w"> </span><span class="ss">:total</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span>
5011
- <a id="__codelineno-12-54" name="__codelineno-12-54" href="#__codelineno-12-54"></a><span class="w"> </span><span class="ss">:passed</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
5012
- <a id="__codelineno-12-55" name="__codelineno-12-55" href="#__codelineno-12-55"></a><span class="w"> </span><span class="ss">:failed</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
5013
- <a id="__codelineno-12-56" name="__codelineno-12-56" href="#__codelineno-12-56"></a><span class="w"> </span><span class="ss">:ignored</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
5014
- <a id="__codelineno-12-57" name="__codelineno-12-57" href="#__codelineno-12-57"></a><span class="w"> </span><span class="ss">:stdout</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span>
5015
- <a id="__codelineno-12-58" name="__codelineno-12-58" href="#__codelineno-12-58"></a>
5016
- <a id="__codelineno-12-59" name="__codelineno-12-59" href="#__codelineno-12-59"></a><span class="w"> </span><span class="c1"># The sum of all test file execution run times</span>
5017
- <a id="__codelineno-12-60" name="__codelineno-12-60" href="#__codelineno-12-60"></a><span class="w"> </span><span class="ss">:total_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">21196400001645088</span>
5018
- <a id="__codelineno-12-61" name="__codelineno-12-61" href="#__codelineno-12-61"></a><span class="p">}</span>
5562
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="p">{</span>
5563
+ <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="w"> </span><span class="c1"># Associates each test executable (i.e. test file) with an execution run time</span>
5564
+ <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="w"> </span><span class="ss">:times</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5565
+ <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">21196400001645088</span>
5566
+ <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="w"> </span><span class="p">},</span>
5567
+ <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a>
5568
+ <a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a><span class="w"> </span><span class="c1"># List of succeeding test cases, grouped by test file.</span>
5569
+ <a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a><span class="w"> </span><span class="ss">:successes</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5570
+ <a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a><span class="w"> </span><span class="p">{</span>
5571
+ <a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:dirname</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:basename</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;TestUsartModel.c&quot;</span><span class="p">},</span>
5572
+ <a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a><span class="w"> </span><span class="ss">:collection</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5573
+ <a id="__codelineno-16-12" name="__codelineno-16-12" href="#__codelineno-16-12"></a><span class="w"> </span><span class="c1"># If Unity is configured to do so, it will output execution run time for each test case.</span>
5574
+ <a id="__codelineno-16-13" name="__codelineno-16-13" href="#__codelineno-16-13"></a><span class="w"> </span><span class="c1"># Ceedling creates a zero entry if the Unity option is not enabled.</span>
5575
+ <a id="__codelineno-16-14" name="__codelineno-16-14" href="#__codelineno-16-14"></a><span class="w"> </span><span class="p">{</span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;testCase1&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">17</span><span class="p">,</span><span class="w"> </span><span class="ss">:message</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:unity_test_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">0</span><span class="p">},</span>
5576
+ <a id="__codelineno-16-15" name="__codelineno-16-15" href="#__codelineno-16-15"></a><span class="w"> </span><span class="p">{</span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;testCase2&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">31</span><span class="p">,</span><span class="w"> </span><span class="ss">:message</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:unity_test_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">0</span><span class="p">}</span>
5577
+ <a id="__codelineno-16-16" name="__codelineno-16-16" href="#__codelineno-16-16"></a><span class="w"> </span><span class="o">]</span>
5578
+ <a id="__codelineno-16-17" name="__codelineno-16-17" href="#__codelineno-16-17"></a><span class="w"> </span><span class="p">}</span>
5579
+ <a id="__codelineno-16-18" name="__codelineno-16-18" href="#__codelineno-16-18"></a><span class="w"> </span><span class="o">]</span><span class="p">,</span>
5580
+ <a id="__codelineno-16-19" name="__codelineno-16-19" href="#__codelineno-16-19"></a>
5581
+ <a id="__codelineno-16-20" name="__codelineno-16-20" href="#__codelineno-16-20"></a><span class="w"> </span><span class="c1"># List of failing test cases, grouped by test file.</span>
5582
+ <a id="__codelineno-16-21" name="__codelineno-16-21" href="#__codelineno-16-21"></a><span class="w"> </span><span class="ss">:failures</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5583
+ <a id="__codelineno-16-22" name="__codelineno-16-22" href="#__codelineno-16-22"></a><span class="w"> </span><span class="p">{</span>
5584
+ <a id="__codelineno-16-23" name="__codelineno-16-23" href="#__codelineno-16-23"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:dirname</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:basename</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;TestUsartModel.c&quot;</span><span class="p">},</span>
5585
+ <a id="__codelineno-16-24" name="__codelineno-16-24" href="#__codelineno-16-24"></a><span class="w"> </span><span class="ss">:collection</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5586
+ <a id="__codelineno-16-25" name="__codelineno-16-25" href="#__codelineno-16-25"></a><span class="w"> </span><span class="p">{</span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;testCase3&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">25</span><span class="p">,</span><span class="w"> </span><span class="ss">:message</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;failure message&gt;&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:unity_test_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">0</span><span class="p">}</span>
5587
+ <a id="__codelineno-16-26" name="__codelineno-16-26" href="#__codelineno-16-26"></a><span class="w"> </span><span class="o">]</span>
5588
+ <a id="__codelineno-16-27" name="__codelineno-16-27" href="#__codelineno-16-27"></a><span class="w"> </span><span class="p">}</span>
5589
+ <a id="__codelineno-16-28" name="__codelineno-16-28" href="#__codelineno-16-28"></a><span class="w"> </span><span class="o">]</span><span class="p">,</span>
5590
+ <a id="__codelineno-16-29" name="__codelineno-16-29" href="#__codelineno-16-29"></a>
5591
+ <a id="__codelineno-16-30" name="__codelineno-16-30" href="#__codelineno-16-30"></a><span class="w"> </span><span class="c1"># List of ignored test cases, grouped by test file.</span>
5592
+ <a id="__codelineno-16-31" name="__codelineno-16-31" href="#__codelineno-16-31"></a><span class="w"> </span><span class="ss">:ignores</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5593
+ <a id="__codelineno-16-32" name="__codelineno-16-32" href="#__codelineno-16-32"></a><span class="w"> </span><span class="p">{</span>
5594
+ <a id="__codelineno-16-33" name="__codelineno-16-33" href="#__codelineno-16-33"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:dirname</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:basename</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;TestUsartModel.c&quot;</span><span class="p">},</span>
5595
+ <a id="__codelineno-16-34" name="__codelineno-16-34" href="#__codelineno-16-34"></a><span class="w"> </span><span class="ss">:collection</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5596
+ <a id="__codelineno-16-35" name="__codelineno-16-35" href="#__codelineno-16-35"></a><span class="w"> </span><span class="p">{</span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;testCase4&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">39</span><span class="p">,</span><span class="w"> </span><span class="ss">:message</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:unity_test_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">0</span><span class="p">}</span>
5597
+ <a id="__codelineno-16-36" name="__codelineno-16-36" href="#__codelineno-16-36"></a><span class="w"> </span><span class="o">]</span>
5598
+ <a id="__codelineno-16-37" name="__codelineno-16-37" href="#__codelineno-16-37"></a><span class="w"> </span><span class="p">}</span>
5599
+ <a id="__codelineno-16-38" name="__codelineno-16-38" href="#__codelineno-16-38"></a><span class="w"> </span><span class="o">]</span><span class="p">,</span>
5600
+ <a id="__codelineno-16-39" name="__codelineno-16-39" href="#__codelineno-16-39"></a>
5601
+ <a id="__codelineno-16-40" name="__codelineno-16-40" href="#__codelineno-16-40"></a><span class="w"> </span><span class="c1"># List of strings printed to $stdout, grouped by test file.</span>
5602
+ <a id="__codelineno-16-41" name="__codelineno-16-41" href="#__codelineno-16-41"></a><span class="w"> </span><span class="ss">:stdout</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5603
+ <a id="__codelineno-16-42" name="__codelineno-16-42" href="#__codelineno-16-42"></a><span class="w"> </span><span class="p">{</span>
5604
+ <a id="__codelineno-16-43" name="__codelineno-16-43" href="#__codelineno-16-43"></a><span class="w"> </span><span class="ss">:source</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="ss">:file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test/TestUsartModel.c&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:dirname</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">:basename</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;TestUsartModel.c&quot;</span><span class="p">},</span>
5605
+ <a id="__codelineno-16-44" name="__codelineno-16-44" href="#__codelineno-16-44"></a><span class="w"> </span><span class="c1"># Calls to print to $stdout are outside Unity’s scope, preventing attaching test file line numbers</span>
5606
+ <a id="__codelineno-16-45" name="__codelineno-16-45" href="#__codelineno-16-45"></a><span class="w"> </span><span class="ss">:collection</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">[</span>
5607
+ <a id="__codelineno-16-46" name="__codelineno-16-46" href="#__codelineno-16-46"></a><span class="w"> </span><span class="s2">&quot;&lt;$stdout string (e.g. printf() call)&gt;&quot;</span>
5608
+ <a id="__codelineno-16-47" name="__codelineno-16-47" href="#__codelineno-16-47"></a><span class="w"> </span><span class="o">]</span>
5609
+ <a id="__codelineno-16-48" name="__codelineno-16-48" href="#__codelineno-16-48"></a><span class="w"> </span><span class="p">}</span>
5610
+ <a id="__codelineno-16-49" name="__codelineno-16-49" href="#__codelineno-16-49"></a><span class="w"> </span><span class="o">]</span><span class="p">,</span>
5611
+ <a id="__codelineno-16-50" name="__codelineno-16-50" href="#__codelineno-16-50"></a>
5612
+ <a id="__codelineno-16-51" name="__codelineno-16-51" href="#__codelineno-16-51"></a><span class="w"> </span><span class="c1"># Test suite run stats</span>
5613
+ <a id="__codelineno-16-52" name="__codelineno-16-52" href="#__codelineno-16-52"></a><span class="w"> </span><span class="ss">:counts</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5614
+ <a id="__codelineno-16-53" name="__codelineno-16-53" href="#__codelineno-16-53"></a><span class="w"> </span><span class="ss">:total</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span>
5615
+ <a id="__codelineno-16-54" name="__codelineno-16-54" href="#__codelineno-16-54"></a><span class="w"> </span><span class="ss">:passed</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
5616
+ <a id="__codelineno-16-55" name="__codelineno-16-55" href="#__codelineno-16-55"></a><span class="w"> </span><span class="ss">:failed</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
5617
+ <a id="__codelineno-16-56" name="__codelineno-16-56" href="#__codelineno-16-56"></a><span class="w"> </span><span class="ss">:ignored</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
5618
+ <a id="__codelineno-16-57" name="__codelineno-16-57" href="#__codelineno-16-57"></a><span class="w"> </span><span class="ss">:stdout</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span>
5619
+ <a id="__codelineno-16-58" name="__codelineno-16-58" href="#__codelineno-16-58"></a>
5620
+ <a id="__codelineno-16-59" name="__codelineno-16-59" href="#__codelineno-16-59"></a><span class="w"> </span><span class="c1"># The sum of all test file execution run times</span>
5621
+ <a id="__codelineno-16-60" name="__codelineno-16-60" href="#__codelineno-16-60"></a><span class="w"> </span><span class="ss">:total_time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">21196400001645088</span>
5622
+ <a id="__codelineno-16-61" name="__codelineno-16-61" href="#__codelineno-16-61"></a><span class="p">}</span>
5019
5623
  </code></pre></div>
5624
+ <h2 id="test-results-report-templates">Test results report templates</h2>
5625
+ <p>Ceedling renders test results reports from templates. A plugin that prints test
5626
+ results supplies a template, and Ceedling compiles these templates with its own
5627
+ compiler rather than with ERB.</p>
5628
+ <p>ERB was removed as a Ceedling dependency in 1.2.0. The template language Ceedling
5629
+ accepts is now a deliberate subset of what ERB accepted. Every template Ceedling
5630
+ ships stays within that subset. A template written for an earlier Ceedling works
5631
+ unchanged if it does the same.</p>
5632
+ <h3 id="supplying-a-template">Supplying a template</h3>
5633
+ <p>A <code>ReportTestsStdoutPlugin</code> subclass supplies a template by overriding the private
5634
+ <code>load_template</code> method. That method returns the template as a String. The base
5635
+ class registers the template during <code>setup()</code> and owns every build step hook, so a
5636
+ subclass needs nothing else.</p>
5637
+ <p>The default <code>load_template</code> reads <code>assets/test_results.template</code> from the plugin’s
5638
+ own root path. It falls back to the historical <code>assets/template.erb</code> name when only
5639
+ that older file exists. A plugin shipping the old filename therefore keeps working.</p>
5640
+ <p>Every stock stdout report plugin uses the asset file default.
5641
+ <code>report_tests_pretty_stdout</code> has an empty subclass body.</p>
5642
+ <p>A template can also call its own plugin object. Ceedling’s system objects include
5643
+ each loaded plugin, named for it, so a template reaches its plugin as
5644
+ <code>@ceedling[:&lt;plugin name&gt;]</code>. <code>report_tests_gtestlike_stdout</code> and
5645
+ <code>report_tests_ide_stdout</code> work this way. Their templates hand results to plugin
5646
+ methods that build lines in Ruby. That keeps formatting logic testable and
5647
+ configurable. Gcov, Bullseye, and Valgrind render test results through whichever
5648
+ template is registered, so they get the same lines.</p>
5649
+ <p>A plugin can also render a template directly. <code>@ceedling[:plugin_reportinator]</code>
5650
+ exposes <code>run_report(template, hash)</code> for this. The Bullseye plugin uses it to
5651
+ render its coverage summary from <code>assets/coverage.template</code>.</p>
5652
+ <h3 id="supported-syntax">Supported syntax</h3>
5653
+ <p>Five constructs are available, and two of them carry nearly every template. A
5654
+ percent sign in column zero introduces a line of Ruby. A <code>&lt;%= expression %&gt;</code> tag
5655
+ inserts that expression’s value into the output.</p>
5656
+ <table>
5657
+ <thead>
5658
+ <tr>
5659
+ <th>Construct</th>
5660
+ <th>Effect</th>
5661
+ </tr>
5662
+ </thead>
5663
+ <tbody>
5664
+ <tr>
5665
+ <td><code>% ruby_code</code></td>
5666
+ <td>Executes the line as Ruby. Nothing is emitted.</td>
5667
+ </tr>
5668
+ <tr>
5669
+ <td><code>%%</code></td>
5670
+ <td>Emits one literal percent sign. Column zero only.</td>
5671
+ </tr>
5672
+ <tr>
5673
+ <td><code>&lt;%= expression %&gt;</code></td>
5674
+ <td>Emits the expression, converted with <code>to_s</code>.</td>
5675
+ </tr>
5676
+ <tr>
5677
+ <td><code>&lt;% ruby_code %&gt;</code></td>
5678
+ <td>Executes the code. Nothing is emitted.</td>
5679
+ </tr>
5680
+ <tr>
5681
+ <td><code>&lt;%# comment %&gt;</code></td>
5682
+ <td>Emits nothing.</td>
5683
+ </tr>
5684
+ </tbody>
5685
+ </table>
5686
+ <p>A percent sign is only special in column zero. Whitespace may follow it freely, so
5687
+ a template can indent Ruby lines to show nesting. A percent sign anywhere else on a
5688
+ line is literal text.</p>
5689
+ <p>All Ruby in a template shares one scope. A value assigned on a percent line is
5690
+ visible to every later line and tag, including across block boundaries.</p>
5691
+ <h3 id="newline-trimming">Newline trimming</h3>
5692
+ <p>A line whose first tag opens it and whose last tag closes it contributes no newline
5693
+ of its own. Text between those two tags does not change that. Every other line
5694
+ keeps its newline. Ceedling’s own templates depend on this behavior to control
5695
+ blank lines in report output.</p>
5696
+ <h3 id="what-a-template-can-reference">What a template can reference</h3>
5697
+ <p>Templates render against <code>PluginReportinator</code>’s own binding. The report data
5698
+ arrives as a local named <code>hash</code>. Global constants such as <code>TEST_SYM</code> resolve
5699
+ normally.</p>
5700
+ <p><code>@ceedling[:plugin_reportinator]</code> exposes several helpers intended for templates.</p>
5701
+ <table>
5702
+ <thead>
5703
+ <tr>
5704
+ <th>Helper</th>
5705
+ <th>Purpose</th>
5706
+ </tr>
5707
+ </thead>
5708
+ <tbody>
5709
+ <tr>
5710
+ <td><code>test_report_preamble(hash)</code></td>
5711
+ <td>Returns the counts and banner prefix every stdout report needs.</td>
5712
+ </tr>
5713
+ <tr>
5714
+ <td><code>generate_banner(text)</code></td>
5715
+ <td>Formats a section divider.</td>
5716
+ </tr>
5717
+ <tr>
5718
+ <td><code>generate_heading(text)</code></td>
5719
+ <td>Formats a heading.</td>
5720
+ </tr>
5721
+ <tr>
5722
+ <td><code>reflow_message(message, continuation_prefix)</code></td>
5723
+ <td>Indents the second and later lines of a multi-line message.</td>
5724
+ </tr>
5725
+ <tr>
5726
+ <td><code>decorate_summary_banner(text, failed_count)</code></td>
5727
+ <td>Colors a summary banner by outcome.</td>
5728
+ </tr>
5729
+ </tbody>
5730
+ </table>
5731
+ <h3 id="unsupported-syntax">Unsupported syntax</h3>
5732
+ <p>Four ERB constructs are unavailable. A template relying on any of them needs
5733
+ revision.</p>
5734
+ <table>
5735
+ <thead>
5736
+ <tr>
5737
+ <th>Construct</th>
5738
+ <th>Behavior</th>
5739
+ </tr>
5740
+ </thead>
5741
+ <tbody>
5742
+ <tr>
5743
+ <td><code>-%&gt;</code></td>
5744
+ <td>Raises <code>SyntaxError</code>. ERB offered this only under a trim mode Ceedling never used.</td>
5745
+ </tr>
5746
+ <tr>
5747
+ <td><code>&lt;%%</code></td>
5748
+ <td>Not an escape. The characters are not translated to a literal <code>&lt;%</code>.</td>
5749
+ </tr>
5750
+ <tr>
5751
+ <td>A tag spanning lines</td>
5752
+ <td>Raises <code>CeedlingException</code> naming the template line.</td>
5753
+ </tr>
5754
+ <tr>
5755
+ <td>A tag never closed on its line</td>
5756
+ <td>Raises <code>CeedlingException</code> naming the template line.</td>
5757
+ </tr>
5758
+ </tbody>
5759
+ </table>
5760
+ <p>The last two are deliberate. ERB accepted a multi-line tag. ERB also responded to
5761
+ an unclosed tag by treating the rest of the template as Ruby, which produced
5762
+ garbled output rather than an error. Naming the offending line is more useful to a
5763
+ template author than either behavior.</p>
5764
+ <div class="admonition warning">
5765
+ <p class="admonition-title">Porting a template written for ERB</p>
5766
+ <p>Ceedling’s own templates never used the unsupported constructs above, and
5767
+ neither did any template this project has seen. Check a template against the
5768
+ table before assuming it needs no changes. A Ruby error inside a template
5769
+ reports its location as <code>(ceedling template):&lt;line&gt;</code>, where the line number is
5770
+ the template’s own.</p>
5771
+ </div>
5020
5772
  <p><br/><br/></p>
5021
5773
 
5022
5774