ceedling 1.1.10 → 1.2.1

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 (1145) 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 +64 -45
  8. data/Rakefile +769 -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 +28 -0
  118. data/bin/cli.rb +78 -47
  119. data/bin/cli_handler.rb +96 -58
  120. data/bin/cli_helper.rb +95 -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 +30 -4
  139. data/docs/ReleaseNotes.md +288 -12
  140. data/docs/SECURITY.md +46 -2
  141. data/docs/ThrowTheSwitchCodingStandard.md +21 -3
  142. data/docs/overrides/main.html +35 -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 +370 -531
  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 +360 -616
  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 +275 -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 +192 -70
  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 +47 -15
  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 +216 -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 +118 -26
  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/rake_app/test_task_name.rb +29 -0
  231. data/lib/ceedling/rakefile.rb +3 -1
  232. data/lib/ceedling/{tasks_base.rake → rakefiles/base/tasks_base.rake} +1 -1
  233. data/lib/ceedling/{tasks_filesystem.rake → rakefiles/base/tasks_filesystem.rake} +3 -0
  234. data/lib/ceedling/rakefiles/release/rules_release.rake +52 -0
  235. data/lib/ceedling/{erb_wrapper.rb → rakefiles/release/tasks_release.rake} +5 -8
  236. data/lib/ceedling/{rules_tests.rake → rakefiles/tests/rules_tests.rake} +4 -18
  237. data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +54 -0
  238. data/lib/ceedling/{tasks_tests.rake → rakefiles/tests/tasks_tests.rake} +11 -20
  239. data/lib/ceedling/rakefiles/tests/tasks_tests_generate.rake +55 -0
  240. data/lib/ceedling/release_invoker/README.md +35 -0
  241. data/lib/ceedling/release_invoker/release_build_executor.rb +263 -0
  242. data/lib/ceedling/release_invoker/release_build_planner.rb +80 -0
  243. data/lib/ceedling/release_invoker/release_invoker.rb +78 -0
  244. data/lib/ceedling/release_invoker/release_invoker_types.rb +40 -0
  245. data/lib/ceedling/reportinator.rb +18 -2
  246. data/lib/ceedling/ruby_expandinator.rb +40 -1
  247. data/lib/ceedling/setupinator.rb +13 -3
  248. data/lib/ceedling/system_wrapper.rb +17 -0
  249. data/lib/ceedling/templateinator.rb +146 -0
  250. data/lib/ceedling/test_context_extractor.rb +59 -28
  251. data/lib/ceedling/test_invoker/HEADER_COLLISIONS.md +41 -0
  252. data/lib/ceedling/test_invoker/PIPELINE.md +142 -0
  253. data/lib/ceedling/test_invoker/README.md +6 -0
  254. data/lib/ceedling/test_invoker/mock_locator.rb +49 -0
  255. data/lib/ceedling/test_invoker/partials_manager.rb +426 -0
  256. data/lib/ceedling/test_invoker/standin_headerinator.rb +136 -0
  257. data/lib/ceedling/test_invoker/test_bare_includes_extractinator.rb +117 -0
  258. data/lib/ceedling/test_invoker/test_build_executor.rb +800 -429
  259. data/lib/ceedling/test_invoker/test_build_planner.rb +175 -70
  260. data/lib/ceedling/test_invoker/test_build_setup.rb +132 -241
  261. data/lib/ceedling/test_invoker/test_build_validations.rb +102 -0
  262. data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +148 -0
  263. data/lib/ceedling/test_invoker/test_includes_extractinator.rb +34 -0
  264. data/lib/ceedling/test_invoker/test_includes_preprocessinator.rb +118 -0
  265. data/lib/ceedling/test_invoker/test_includes_reconcilinator.rb +149 -0
  266. data/lib/ceedling/test_invoker/test_invoker.rb +16 -183
  267. data/lib/ceedling/test_invoker/test_invoker_types.rb +85 -16
  268. data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +121 -0
  269. data/lib/ceedling/test_invoker/test_pipeline_manager.rb +303 -0
  270. data/lib/ceedling/test_invoker/test_runner_generatinator.rb +105 -0
  271. data/lib/ceedling/test_invoker/test_search_paths.rb +73 -0
  272. data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +78 -0
  273. data/lib/ceedling/tool_executor.rb +42 -13
  274. data/lib/ceedling/tool_executor_helper.rb +1 -1
  275. data/lib/ceedling/tool_validator.rb +124 -123
  276. data/lib/ceedling/yaml_wrapper.rb +5 -3
  277. data/lib/version.rb +19 -2
  278. data/mkdocs.prerelease.yml +42 -0
  279. data/mkdocs.yml +10 -2
  280. data/plugins/bullseye/bullseye.rake +71 -111
  281. data/plugins/bullseye/config/defaults.yml +12 -54
  282. data/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  283. data/plugins/bullseye/lib/bullseye.rb +511 -120
  284. data/plugins/bullseye/lib/bullseye_constants.rb +100 -0
  285. data/plugins/command_hooks/lib/command_hooks.rb +117 -199
  286. data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +72 -27
  287. data/plugins/cppcheck/config/defaults.yml +6 -1
  288. data/plugins/cppcheck/config/defaults_cppcheck.rb +5 -1
  289. data/plugins/cppcheck/cppcheck.rake +7 -1
  290. data/plugins/cppcheck/lib/cppcheck.rb +175 -26
  291. data/plugins/cppcheck/lib/cppcheck_constants.rb +12 -0
  292. data/plugins/cppcheck/lib/cppcheck_reports.rb +5 -1
  293. data/plugins/dependencies/Rakefile +14 -2
  294. data/plugins/dependencies/config/defaults.yml +9 -6
  295. data/plugins/dependencies/dependencies.rake +46 -76
  296. data/plugins/dependencies/example/boss/project.yml +1 -1
  297. data/plugins/dependencies/example/supervisor/project.yml +1 -1
  298. data/plugins/dependencies/example/version.tar.gzip +0 -0
  299. data/plugins/dependencies/lib/dependencies.rb +232 -427
  300. data/plugins/dependencies/lib/dependency_commands.rb +72 -0
  301. data/plugins/dependencies/lib/dependency_environment.rb +57 -0
  302. data/plugins/dependencies/lib/dependency_spec.rb +145 -0
  303. data/plugins/fff/.rspec +1 -0
  304. data/plugins/fff/Rakefile +14 -2
  305. data/plugins/fff/examples/fff_example/project.yml +1 -1
  306. data/plugins/fff/lib/fff.rb +30 -9
  307. data/plugins/fff/lib/fff_mock_generator.rb +142 -128
  308. data/plugins/fff/spec/fff_mock_header_generator_spec.rb +15 -0
  309. data/plugins/fff/spec/fff_mock_source_generator_spec.rb +14 -0
  310. data/plugins/fff/spec/spec_helper.rb +45 -0
  311. data/plugins/fff/src/fff_unity_helper.h +5 -0
  312. data/plugins/fff/vendor/fff/fakegen.rb +5 -4
  313. data/plugins/fff/vendor/fff/fff.h +4 -4
  314. data/plugins/gcov/config/defaults.yml +5 -0
  315. data/plugins/gcov/gcov.rake +16 -15
  316. data/plugins/gcov/lib/console_reportinator.rb +140 -20
  317. data/plugins/gcov/lib/gcov.rb +155 -60
  318. data/plugins/gcov/lib/gcov_constants.rb +4 -7
  319. data/plugins/gcov/lib/gcov_reportinator.rb +90 -0
  320. data/plugins/gcov/lib/gcov_types.rb +62 -1
  321. data/plugins/gcov/lib/gcovr_reportinator.rb +255 -213
  322. data/plugins/gcov/lib/reportgenerator_reportinator.rb +122 -44
  323. data/plugins/module_generator/Rakefile +4 -4
  324. data/plugins/module_generator/config/module_generator.yml +0 -1
  325. data/plugins/module_generator/example/project.yml +1 -1
  326. data/plugins/module_generator/lib/module_generator.rb +117 -87
  327. data/plugins/module_generator/lib/module_generator_options.rb +150 -0
  328. data/plugins/module_generator/lib/module_generator_project.rb +45 -0
  329. data/plugins/module_generator/lib/module_generator_request.rb +83 -0
  330. data/plugins/module_generator/lib/module_generator_test_file.rb +68 -0
  331. data/plugins/module_generator/lib/module_generator_unity.rb +24 -0
  332. data/plugins/module_generator/module_generator.rake +24 -46
  333. data/plugins/report_build_warnings_log/config/defaults.yml +4 -1
  334. data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +47 -55
  335. data/plugins/report_build_warnings_log/lib/warning_collector.rb +140 -0
  336. data/plugins/report_build_warnings_log/lib/warning_reports.rb +135 -0
  337. data/plugins/report_tests_gtestlike_stdout/assets/test_results.template +3 -0
  338. data/{spec/units/configurator_builder_spec.rb → plugins/report_tests_gtestlike_stdout/config/defaults.yml} +6 -10
  339. data/plugins/report_tests_gtestlike_stdout/lib/gtestlike_report.rb +168 -0
  340. data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +25 -1
  341. data/plugins/report_tests_ide_stdout/assets/test_results.template +50 -0
  342. data/plugins/report_tests_ide_stdout/config/defaults.yml +13 -0
  343. data/plugins/report_tests_ide_stdout/lib/ide_report_lines.rb +103 -0
  344. data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +12 -4
  345. data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +33 -51
  346. data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +286 -295
  347. data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +22 -35
  348. data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +91 -133
  349. data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +72 -86
  350. data/plugins/report_tests_log_factory/lib/tests_reporter.rb +31 -12
  351. data/plugins/report_tests_pretty_stdout/assets/{template.erb → test_results.template} +8 -8
  352. data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +18 -48
  353. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +13 -2
  354. data/plugins/sanitize/config/defaults.yml +44 -0
  355. data/plugins/sanitize/config/defaults_sanitize.rb +20 -0
  356. data/plugins/sanitize/lib/sanitize.rb +174 -0
  357. data/plugins/sanitize/lib/sanitize_config.rb +110 -0
  358. data/plugins/sanitize/lib/sanitize_constants.rb +13 -0
  359. data/plugins/sanitize/lib/sanitize_findings.rb +85 -0
  360. data/plugins/sanitize/lib/sanitize_records.rb +115 -0
  361. data/plugins/sanitize/lib/sanitize_reports.rb +135 -0
  362. data/plugins/sanitize/sanitize.rake +108 -0
  363. data/plugins/valgrind/config/defaults.yml +7 -1
  364. data/plugins/valgrind/config/defaults_valgrind.rb +6 -1
  365. data/plugins/valgrind/lib/valgrind.rb +202 -39
  366. data/plugins/valgrind/lib/valgrind_constants.rb +4 -0
  367. data/plugins/valgrind/lib/valgrind_report.rb +52 -0
  368. data/plugins/valgrind/valgrind.rake +37 -15
  369. data/site-local/404.html +239 -19
  370. data/site-local/assets/javascripts/{bundle.d7400e89.min.js → bundle.c21346df.min.js} +3 -3
  371. data/site-local/assets/javascripts/{bundle.d7400e89.min.js.map → bundle.c21346df.min.js.map} +2 -2
  372. data/site-local/assets/javascripts/workers/{search.2c215733.min.js → search.a7633da7.min.js} +2 -2
  373. data/site-local/assets/javascripts/workers/{search.2c215733.min.js.map → search.a7633da7.min.js.map} +1 -1
  374. data/site-local/assets/stylesheets/main.57a0d79d.min.css +6 -0
  375. data/site-local/assets/stylesheets/main.57a0d79d.min.css.map +1 -0
  376. data/site-local/assets/stylesheets/palette.fb2fffe2.min.css +4 -0
  377. data/site-local/assets/stylesheets/palette.fb2fffe2.min.css.map +1 -0
  378. data/site-local/configuration/environment-vars.html +239 -19
  379. data/site-local/configuration/global-collections.html +239 -24
  380. data/site-local/configuration/index.html +240 -20
  381. data/site-local/configuration/loading.html +251 -27
  382. data/site-local/configuration/mixins.html +247 -26
  383. data/site-local/configuration/parallel-builds.html +239 -19
  384. data/site-local/configuration/project-file.html +268 -37
  385. data/site-local/configuration/reference/cexception.html +246 -25
  386. data/site-local/configuration/reference/cmock.html +272 -19
  387. data/site-local/configuration/reference/defines.html +263 -34
  388. data/site-local/configuration/reference/environment.html +246 -26
  389. data/site-local/configuration/reference/extension.html +352 -21
  390. data/site-local/configuration/reference/files.html +258 -24
  391. data/site-local/configuration/reference/flags.html +268 -31
  392. data/site-local/configuration/reference/index.html +239 -19
  393. data/site-local/configuration/reference/libraries.html +239 -19
  394. data/site-local/configuration/reference/mixins.html +239 -19
  395. data/site-local/configuration/reference/partials.html +240 -24
  396. data/site-local/configuration/reference/paths.html +269 -23
  397. data/site-local/configuration/reference/plugins.html +239 -19
  398. data/site-local/configuration/reference/project.html +292 -29
  399. data/site-local/configuration/reference/release-build.html +247 -19
  400. data/site-local/configuration/reference/test-build.html +281 -29
  401. data/site-local/configuration/reference/test-runner.html +279 -22
  402. data/site-local/configuration/reference/tools.html +257 -31
  403. data/site-local/configuration/reference/unity.html +271 -20
  404. data/site-local/configuration/which-ceedling.html +239 -19
  405. data/site-local/development/index.html +245 -19
  406. data/site-local/development/plugins/configuration.html +260 -22
  407. data/site-local/development/plugins/index.html +258 -20
  408. data/site-local/development/plugins/plugin-subclass.html +912 -174
  409. data/site-local/development/plugins/rake-tasks.html +269 -21
  410. data/site-local/development/releases.html +4759 -0
  411. data/site-local/development/workflow.html +1023 -58
  412. data/site-local/getting-started/builds.html +4593 -0
  413. data/site-local/getting-started/command-line.html +409 -39
  414. data/site-local/getting-started/example-projects/cipher-quest.html +239 -19
  415. data/site-local/getting-started/example-projects/index.html +240 -20
  416. data/site-local/getting-started/example-projects/temp-sensor.html +239 -19
  417. data/site-local/getting-started/example-projects/wondrous-forest.html +239 -19
  418. data/site-local/getting-started/index.html +246 -19
  419. data/site-local/getting-started/installation.html +249 -27
  420. data/site-local/getting-started/quick-start.html +242 -20
  421. data/site-local/help.html +246 -19
  422. data/site-local/index.html +284 -27
  423. data/site-local/overview/build-system.html +240 -20
  424. data/site-local/overview/index.html +239 -19
  425. data/site-local/overview/test-environments.html +248 -19
  426. data/site-local/overview/tools-and-frameworks.html +239 -19
  427. data/site-local/plugins/beep.html +242 -19
  428. data/site-local/plugins/bullseye/index.html +5068 -0
  429. data/site-local/plugins/bullseye/licensing.html +4826 -0
  430. data/site-local/plugins/command-hooks.html +258 -34
  431. data/site-local/plugins/compile-commands-json-db.html +247 -22
  432. data/site-local/plugins/cppcheck.html +1073 -268
  433. data/site-local/plugins/dependencies.html +927 -249
  434. data/site-local/plugins/fff.html +288 -21
  435. data/site-local/plugins/gcov/examples.html +243 -20
  436. data/site-local/plugins/gcov/gcovr.html +559 -71
  437. data/site-local/plugins/gcov/index.html +242 -19
  438. data/site-local/plugins/gcov/overview.html +253 -23
  439. data/site-local/plugins/gcov/reportgenerator.html +380 -46
  440. data/site-local/plugins/gcov/reporting.html +339 -105
  441. data/site-local/plugins/gcov/setup.html +244 -20
  442. data/site-local/plugins/gcov/tool-versions.html +292 -24
  443. data/site-local/plugins/gcov/troubleshooting.html +265 -42
  444. data/site-local/plugins/index.html +285 -41
  445. data/site-local/plugins/module-generator.html +770 -200
  446. data/site-local/plugins/report-build-warnings-log.html +569 -38
  447. data/site-local/plugins/report-tests-gtestlike-stdout.html +458 -89
  448. data/site-local/plugins/report-tests-ide-stdout.html +645 -56
  449. data/site-local/plugins/report-tests-log-factory.html +364 -111
  450. data/site-local/plugins/report-tests-pretty-stdout.html +243 -20
  451. data/site-local/plugins/report-tests-raw-output-log.html +242 -19
  452. data/site-local/plugins/report-tests-teamcity-stdout.html +252 -29
  453. data/site-local/plugins/sanitize.html +5322 -0
  454. data/site-local/plugins/valgrind.html +414 -34
  455. data/site-local/{plugins/bullseye.html → project/index.html} +288 -222
  456. data/site-local/project/release-history.html +242 -22
  457. data/site-local/project/sbom.html +4712 -0
  458. data/site-local/project/upgrade.html +241 -21
  459. data/site-local/reference/build-directives.html +248 -19
  460. data/site-local/reference/command-line.html +364 -21
  461. data/site-local/reference/environment-vars.html +239 -19
  462. data/site-local/reference/gcov-plugin.html +483 -23
  463. data/site-local/reference/global-collections.html +240 -20
  464. data/site-local/reference/index.html +239 -19
  465. data/site-local/reference/partials-macros.html +249 -19
  466. data/site-local/reference/project-configuration.html +239 -19
  467. data/site-local/sitemap.xml.gz +0 -0
  468. data/{docs/mkdocs/snapshot/assets → site-local/snapshot/assets/features}/project.yml +4 -1
  469. data/site-local/snapshot/examples/cipher_quest/index.html +249 -29
  470. data/site-local/snapshot/examples/temp_sensor/index.html +241 -21
  471. data/site-local/snapshot/examples/wondrous_forest/index.html +256 -30
  472. data/site-local/snapshot/plugins/bullseye/config/defaults.yml +24 -0
  473. data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  474. data/site-local/snapshot/plugins/gcov/config/defaults.yml +5 -0
  475. data/site-local/testing-guide/build-directives.html +331 -35
  476. data/site-local/testing-guide/conventions.html +671 -160
  477. data/site-local/testing-guide/frameworks.html +244 -24
  478. data/site-local/testing-guide/index.html +239 -26
  479. data/site-local/testing-guide/partials/configuration.html +241 -21
  480. data/site-local/testing-guide/partials/conventions.html +308 -23
  481. data/site-local/testing-guide/partials/directives.html +452 -58
  482. data/site-local/testing-guide/partials/example.html +247 -27
  483. data/site-local/testing-guide/partials/index.html +246 -19
  484. data/site-local/testing-guide/partials/overview.html +239 -19
  485. data/site-local/testing-guide/partials/variables.html +244 -24
  486. data/site-local/testing-guide/test-cases.html +246 -26
  487. data/site-local/testing-guide/test-sample.html +245 -25
  488. data/site-local/testing-guide/test-suite-anatomy.html +239 -19
  489. data/spec/integration/actionator_file_operations_spec.rb +287 -0
  490. data/spec/integration/analysis_tool_output_spec.rb +204 -0
  491. data/spec/{units/c_extractor/c_extractor_integration_spec.rb → integration/c_extractor_composition_spec.rb} +196 -17
  492. data/spec/integration/command_hooks_plugin_spec.rb +152 -0
  493. data/spec/integration/compile_commands_json_db_spec.rb +76 -0
  494. data/spec/integration/configurator_pipeline_spec.rb +190 -0
  495. data/spec/integration/configurator_plugins_spec.rb +122 -0
  496. data/spec/integration/configurator_validation_spec.rb +98 -0
  497. data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +396 -0
  498. data/spec/integration/dependencies/dependency_tracker_core_spec.rb +284 -0
  499. data/spec/integration/dependencies/dependency_tracker_diagnose_spec.rb +224 -0
  500. data/spec/integration/dependencies/dependency_tracker_filename_handling_spec.rb +118 -0
  501. data/spec/integration/dependencies/dependency_tracker_gcc_deps_spec.rb +199 -0
  502. data/spec/integration/dependencies/dependency_tracker_pruning_spec.rb +167 -0
  503. data/spec/integration/dependencies_plugin_spec.rb +473 -0
  504. data/spec/integration/erb_dependency_removed_spec.rb +167 -0
  505. data/spec/integration/includes_extraction_spec.rb +612 -0
  506. data/spec/integration/mixin_loading_spec.rb +414 -0
  507. data/spec/integration/module_generator_spec.rb +436 -0
  508. data/spec/integration/partials_fallback_preprocessing_spec.rb +316 -0
  509. data/spec/integration/partials_header_composition_spec.rb +889 -0
  510. data/spec/integration/partials_module_resolution_spec.rb +372 -0
  511. data/spec/integration/partials_symbol_linkage_spec.rb +371 -0
  512. data/spec/integration/preprocessing_transient_io_retry_spec.rb +135 -0
  513. data/spec/integration/quote_include_isolator_spec.rb +167 -0
  514. data/spec/integration/rake_task_registry_plugins_spec.rb +95 -0
  515. data/spec/integration/report_build_warnings_log_spec.rb +170 -0
  516. data/spec/integration/report_tests_log_factory_spec.rb +100 -0
  517. data/spec/integration/sanitizer_exclusions_spec.rb +126 -0
  518. data/spec/integration/system_harness_sanitizers_spec.rb +104 -0
  519. data/spec/integration/test_build_parallel_barrier_spec.rb +89 -0
  520. data/spec/integration/test_executable_manifest_spec.rb +118 -0
  521. data/spec/integration/test_includes_extractinator_spec.rb +293 -0
  522. data/spec/integration/tool_executor_spec.rb +224 -0
  523. data/spec/integration/tool_validator_spec.rb +133 -0
  524. data/spec/integration/vendor_copy_transient_io_retry_spec.rb +178 -0
  525. data/spec/manual/stress_test.rb +1 -1
  526. data/spec/support/config_yaml_helper.rb +17 -0
  527. data/spec/support/fixtures/sanitizer_reports/clang_asan_heap.txt +45 -0
  528. data/spec/support/fixtures/sanitizer_reports/clang_ubsan_shift.txt +5 -0
  529. data/spec/support/fixtures/sanitizer_reports/gcc_heap.txt +47 -0
  530. data/spec/support/fixtures/sanitizer_reports/gcc_leak.txt +10 -0
  531. data/spec/support/fixtures/sanitizer_reports/gcc_segv.txt +6 -0
  532. data/spec/support/fixtures/sanitizer_reports/gcc_ubsan_shift.txt +6 -0
  533. data/spec/support/fixtures/templates/bullseye__all_pass.txt +6 -0
  534. data/spec/support/fixtures/templates/bullseye__coverage_branches_only.txt +6 -0
  535. data/spec/support/fixtures/templates/bullseye__coverage_functions_only.txt +6 -0
  536. data/spec/support/fixtures/templates/bullseye__coverage_none.txt +6 -0
  537. data/spec/support/fixtures/templates/bullseye__empty.txt +6 -0
  538. data/spec/support/fixtures/templates/bullseye__gcov_context.txt +6 -0
  539. data/spec/support/fixtures/templates/bullseye__mixed_all.txt +6 -0
  540. data/spec/support/fixtures/templates/bullseye__one_failure_matching.txt +6 -0
  541. data/spec/support/fixtures/templates/bullseye__one_failure_multiline.txt +6 -0
  542. data/spec/support/fixtures/templates/bullseye__one_failure_no_message.txt +6 -0
  543. data/spec/support/fixtures/templates/bullseye__one_failure_nonmatching.txt +6 -0
  544. data/spec/support/fixtures/templates/bullseye__one_ignore_no_message.txt +6 -0
  545. data/spec/support/fixtures/templates/bullseye__one_ignore_with_message.txt +6 -0
  546. data/spec/support/fixtures/templates/bullseye__stdout_only.txt +6 -0
  547. data/spec/support/fixtures/templates/ide__all_pass.txt +10 -0
  548. data/spec/support/fixtures/templates/ide__coverage_branches_only.txt +10 -0
  549. data/spec/support/fixtures/templates/ide__coverage_functions_only.txt +10 -0
  550. data/spec/support/fixtures/templates/ide__coverage_none.txt +10 -0
  551. data/spec/support/fixtures/templates/ide__empty.txt +8 -0
  552. data/spec/support/fixtures/templates/ide__gcov_context.txt +28 -0
  553. data/spec/support/fixtures/templates/ide__mixed_all.txt +29 -0
  554. data/spec/support/fixtures/templates/ide__one_failure_matching.txt +15 -0
  555. data/spec/support/fixtures/templates/ide__one_failure_multiline.txt +17 -0
  556. data/spec/support/fixtures/templates/ide__one_failure_no_message.txt +15 -0
  557. data/spec/support/fixtures/templates/ide__one_failure_nonmatching.txt +15 -0
  558. data/spec/support/fixtures/templates/ide__one_ignore_no_message.txt +15 -0
  559. data/spec/support/fixtures/templates/ide__one_ignore_with_message.txt +15 -0
  560. data/spec/support/fixtures/templates/ide__stdout_only.txt +16 -0
  561. data/spec/support/fixtures/templates/pretty__all_pass.txt +8 -0
  562. data/spec/support/fixtures/templates/pretty__coverage_branches_only.txt +8 -0
  563. data/spec/support/fixtures/templates/pretty__coverage_functions_only.txt +8 -0
  564. data/spec/support/fixtures/templates/pretty__coverage_none.txt +8 -0
  565. data/spec/support/fixtures/templates/pretty__empty.txt +6 -0
  566. data/spec/support/fixtures/templates/pretty__gcov_context.txt +31 -0
  567. data/spec/support/fixtures/templates/pretty__mixed_all.txt +35 -0
  568. data/spec/support/fixtures/templates/pretty__one_failure_matching.txt +15 -0
  569. data/spec/support/fixtures/templates/pretty__one_failure_multiline.txt +17 -0
  570. data/spec/support/fixtures/templates/pretty__one_failure_no_message.txt +15 -0
  571. data/spec/support/fixtures/templates/pretty__one_failure_nonmatching.txt +15 -0
  572. data/spec/support/fixtures/templates/pretty__one_ignore_no_message.txt +15 -0
  573. data/spec/support/fixtures/templates/pretty__one_ignore_with_message.txt +15 -0
  574. data/spec/support/fixtures/templates/pretty__stdout_only.txt +15 -0
  575. data/spec/support/fixtures/valgrind_reports/sigsegv.log +51 -0
  576. data/spec/support/fixtures/valgrind_reports/sigsegv.xml +182 -0
  577. data/spec/support/include_guard_helper.rb +20 -0
  578. data/spec/support/integration/configurator_integration_helper.rb +162 -0
  579. data/spec/support/integration/dependency_tracker_integration_helper.rb +136 -0
  580. data/spec/support/integration/partials_generation_integration_helper.rb +726 -0
  581. data/spec/support/integration/spec_integration_helper.rb +285 -0
  582. data/spec/support/integration/test_includes_harness.rb +259 -0
  583. data/spec/support/integration/tool_executor_integration_helper.rb +55 -0
  584. data/spec/support/spec_helper.rb +41 -0
  585. data/spec/support/system/sanitizers/asan_ubsan.yml +82 -0
  586. data/spec/support/system/sanitizers/asan_ubsan_leaks.yml +57 -0
  587. data/spec/support/system/simplecov_boot.rb +66 -0
  588. data/spec/support/system/spec_system_helper.rb +376 -16
  589. data/spec/support/system/system_context.rb +181 -59
  590. data/spec/support/template_render_cases.rb +166 -0
  591. data/spec/system/bracket_path_handling_spec.rb +175 -0
  592. data/spec/system/build_output_mirroring_spec.rb +89 -0
  593. data/spec/system/build_recovery_spec.rb +382 -0
  594. data/spec/system/bullseye_deployment_spec.rb +102 -0
  595. data/spec/system/cli_surface_spec.rb +245 -0
  596. data/spec/system/command_hooks_spec.rb +117 -0
  597. data/spec/system/conditional_include_macro_visibility_spec.rb +32 -124
  598. data/spec/system/conditional_mock_includes_spec.rb +181 -0
  599. data/spec/system/cppcheck_deployment_spec.rb +26 -8
  600. data/spec/system/delta_builds_spec.rb +751 -0
  601. data/spec/system/deployment_as_gem_spec.rb +7 -0
  602. data/spec/system/deployment_as_vendor_spec.rb +29 -145
  603. data/spec/system/dumpconfig_spec.rb +137 -0
  604. data/spec/system/encoding_stress_spec.rb +7 -4
  605. data/spec/system/example_cipher_quest_spec.rb +25 -100
  606. data/spec/system/example_temp_sensor_spec.rb +30 -172
  607. data/spec/system/example_wondrous_forest_spec.rb +25 -62
  608. data/spec/system/extension_multiple_values_spec.rb +75 -0
  609. data/spec/system/files_paths_reporting_spec.rb +154 -0
  610. data/spec/system/gcov_deployment_spec.rb +72 -3
  611. data/spec/system/header_include_path_validation_spec.rb +222 -0
  612. data/spec/system/implicit_source_header_correspondence_disambiguation_spec.rb +100 -0
  613. data/spec/system/include_path_reconciliation_spec.rb +64 -0
  614. data/spec/system/mixin_ordering_spec.rb +30 -415
  615. data/spec/system/mocks_partials_configuration_validation_spec.rb +126 -0
  616. data/spec/system/parent_directory_reference_spec.rb +114 -0
  617. data/spec/system/partials_module_disambiguation_spec.rb +143 -0
  618. data/spec/system/pinned_thread_count_spec.rb +102 -0
  619. data/spec/system/plugin_delta_builds_spec.rb +179 -0
  620. data/spec/system/preprocessing_encoding_spec.rb +87 -4
  621. data/spec/system/preprocessing_fallback_conditionals_spec.rb +19 -25
  622. data/spec/system/preprocessing_parameterized_tests_spec.rb +2 -2
  623. data/spec/system/rake_release_task_path_disambiguation_spec.rb +97 -0
  624. data/spec/system/rake_test_task_path_disambiguation_spec.rb +118 -0
  625. data/spec/system/report_and_tooling_plugins_spec.rb +327 -0
  626. data/spec/system/ruby_replacement_spec.rb +1 -1
  627. data/spec/system/same_named_modules_spec.rb +115 -0
  628. data/spec/system/sanitize_deployment_spec.rb +64 -0
  629. data/spec/system/shuffle_tests_spec.rb +139 -0
  630. data/spec/system/sibling_header_collision_spec.rb +620 -0
  631. data/spec/system/subdir_include_preservation_spec.rb +63 -0
  632. data/spec/system/support/bullseye_common_test_cases.rb +369 -0
  633. data/spec/system/support/bullseye_helpers.rb +70 -0
  634. data/spec/system/support/common_test_cases.rb +167 -43
  635. data/spec/system/support/cppcheck_common_test_cases.rb +80 -0
  636. data/spec/system/support/cppcheck_helpers.rb +10 -8
  637. data/spec/system/support/gcov_common_test_cases.rb +173 -37
  638. data/spec/system/support/gcov_helpers.rb +3 -3
  639. data/spec/system/support/gcov_partials_test_cases.rb +48 -2
  640. data/spec/system/support/sanitize_common_test_cases.rb +222 -0
  641. data/spec/system/support/sanitize_helpers.rb +27 -0
  642. data/spec/system/support/valgrind_common_test_cases.rb +116 -16
  643. data/spec/system/support/valgrind_helpers.rb +3 -4
  644. data/spec/system/test_pipeline_stop_points_spec.rb +160 -0
  645. data/spec/system/test_runner_system_include_spec.rb +19 -41
  646. data/spec/system/test_source_file_directive_spec.rb +235 -0
  647. data/spec/system/upgrade_as_vendor_spec.rb +25 -46
  648. data/spec/system/valgrind_deployment_spec.rb +41 -0
  649. data/spec/units/batchinator_spec.rb +314 -0
  650. data/spec/units/bin/actionator_spec.rb +412 -0
  651. data/spec/units/bin/app_cfg_spec.rb +100 -0
  652. data/spec/units/bin/cli_handler_spec.rb +205 -0
  653. data/spec/units/bin/cli_helper_spec.rb +248 -10
  654. data/spec/units/bin/cli_options_transform_spec.rb +49 -0
  655. data/spec/units/bin/composinator_spec.rb +236 -0
  656. data/spec/units/bin/{projectinator_mixin_spec.rb → mixin_resolvinator_spec.rb} +122 -83
  657. data/spec/units/bin/mixin_standardizer_spec.rb +4 -3
  658. data/spec/units/bin/mixinator_spec.rb +58 -22
  659. data/spec/units/bin/path_validator_spec.rb +112 -0
  660. data/spec/units/bin/projectinator_spec.rb +223 -0
  661. data/spec/units/bin/rake_patches_spec.rb +52 -0
  662. data/spec/units/bin/recursive_merger_spec.rb +22 -0
  663. data/spec/units/bin/versionator_spec.rb +104 -0
  664. data/spec/units/c_extractor/c_extractor_code_text_spec.rb +4 -4
  665. data/spec/units/c_extractor/c_extractor_declarations_spec.rb +70 -0
  666. data/spec/units/c_extractor/c_extractor_functions_spec.rb +75 -1
  667. data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +158 -0
  668. data/spec/units/c_extractor/c_extractor_spec.rb +236 -6
  669. data/spec/units/ceedling/templateinator_golden_spec.rb +84 -0
  670. data/spec/units/ceedling/templateinator_spec.rb +188 -0
  671. data/spec/units/config/configurator_builder_spec.rb +444 -0
  672. data/spec/units/config/configurator_plugins_spec.rb +160 -0
  673. data/spec/units/config/configurator_setup_spec.rb +724 -6
  674. data/spec/units/config/configurator_spec.rb +961 -0
  675. data/spec/units/config/configurator_validator_spec.rb +259 -0
  676. data/spec/units/config/line_marker_suppressors_spec.rb +89 -0
  677. data/spec/units/config_matchinator_spec.rb +103 -0
  678. data/spec/units/defineinator_spec.rb +158 -0
  679. data/spec/units/dependencies/dependency_cache_store_spec.rb +364 -0
  680. data/spec/units/dependencies/dependency_debug_tree_spec.rb +189 -0
  681. data/spec/units/dependencies/dependency_differ_spec.rb +139 -0
  682. data/spec/units/dependencies/dependency_hasher_spec.rb +141 -0
  683. data/spec/units/dependencies/dependency_path_normalizer_spec.rb +111 -0
  684. data/spec/units/dependencies/dependency_tracker_spec.rb +905 -0
  685. data/spec/units/dependencies/dependinator_spec.rb +99 -0
  686. data/spec/units/dependencies/gcc_dependency_parser_spec.rb +152 -0
  687. data/spec/units/encodinator_spec.rb +92 -0
  688. data/spec/units/file_finder_helper_spec.rb +99 -15
  689. data/spec/units/file_finder_spec.rb +495 -0
  690. data/spec/units/file_path_collection_utils_spec.rb +9 -0
  691. data/spec/units/file_path_utils_spec.rb +736 -0
  692. data/spec/units/file_wrapper_spec.rb +486 -0
  693. data/spec/units/filename_extension_spec.rb +120 -0
  694. data/spec/units/flaginator_spec.rb +114 -0
  695. data/spec/units/generators/generator_helper_spec.rb +113 -0
  696. data/spec/units/generators/generator_mocks_spec.rb +131 -0
  697. data/spec/units/generators/generator_partials_spec.rb +336 -160
  698. data/spec/units/generators/generator_spec.rb +317 -0
  699. data/spec/units/generators/generator_test_results_backtrace_spec.rb +169 -9
  700. data/spec/units/generators/generator_test_results_sanity_checker_spec.rb +14 -6
  701. data/spec/units/generators/generator_test_results_spec.rb +65 -8
  702. data/spec/units/generators/generator_test_runner_spec.rb +1 -1
  703. data/spec/units/includes/include_factory_spec.rb +53 -0
  704. data/spec/units/includes/include_pathinator_spec.rb +269 -0
  705. data/spec/units/includes/include_spec.rb +8 -4
  706. data/spec/units/includes/includes_spec.rb +326 -18
  707. data/spec/units/mock_locator_spec.rb +74 -0
  708. data/spec/units/parsing_parcels_spec.rb +65 -0
  709. data/spec/units/partials/partializer_config_spec.rb +284 -18
  710. data/spec/units/partials/partializer_helper_spec.rb +122 -0
  711. data/spec/units/partials/partializer_spec.rb +346 -71
  712. data/spec/units/partials/partializer_utils_spec.rb +4 -4
  713. data/spec/units/partials_manager_spec.rb +539 -0
  714. data/spec/units/path_matcher_spec.rb +193 -0
  715. data/spec/units/path_mirror_spec.rb +103 -0
  716. data/spec/units/plugin_manager_spec.rb +77 -0
  717. data/spec/units/plugin_reportinator_spec.rb +78 -3
  718. data/spec/units/plugins/bullseye_spec.rb +1068 -0
  719. data/spec/units/plugins/command_hooks_spec.rb +157 -0
  720. data/spec/units/plugins/compile_commands_json_db_spec.rb +145 -0
  721. data/spec/units/plugins/console_reportinator_spec.rb +370 -0
  722. data/spec/units/plugins/cppcheck_spec.rb +330 -4
  723. data/spec/units/plugins/cppunit_tests_reporter_spec.rb +118 -0
  724. data/spec/units/plugins/dependencies_spec.rb +295 -0
  725. data/spec/units/plugins/dependency_commands_spec.rb +83 -0
  726. data/spec/units/plugins/dependency_environment_spec.rb +64 -0
  727. data/spec/units/plugins/dependency_spec_spec.rb +170 -0
  728. data/spec/units/plugins/gcov_reportinator_spec.rb +272 -0
  729. data/spec/units/plugins/gcov_spec.rb +521 -0
  730. data/spec/units/plugins/gcovr_reportinator_spec.rb +795 -0
  731. data/spec/units/plugins/gtestlike_report_spec.rb +363 -0
  732. data/spec/units/plugins/html_tests_reporter_spec.rb +158 -0
  733. data/spec/units/plugins/ide_report_lines_spec.rb +229 -0
  734. data/spec/units/plugins/json_tests_reporter_spec.rb +87 -0
  735. data/spec/units/plugins/junit_tests_reporter_spec.rb +237 -0
  736. data/spec/units/plugins/module_generator_options_spec.rb +185 -0
  737. data/spec/units/plugins/module_generator_project_spec.rb +55 -0
  738. data/spec/units/plugins/module_generator_request_spec.rb +107 -0
  739. data/spec/units/plugins/module_generator_spec.rb +214 -0
  740. data/spec/units/plugins/module_generator_test_file_spec.rb +102 -0
  741. data/spec/units/plugins/module_generator_unity_spec.rb +37 -0
  742. data/spec/units/plugins/report_build_warnings_log_spec.rb +199 -0
  743. data/spec/units/plugins/report_log_writer_plugin_spec.rb +94 -0
  744. data/spec/units/plugins/report_tests_gtestlike_stdout_spec.rb +274 -0
  745. data/spec/units/plugins/report_tests_ide_stdout_spec.rb +140 -0
  746. data/spec/units/plugins/report_tests_log_factory_spec.rb +210 -0
  747. data/spec/units/plugins/report_tests_pretty_stdout_spec.rb +83 -0
  748. data/spec/units/plugins/report_tests_raw_output_log_spec.rb +98 -0
  749. data/spec/units/plugins/report_tests_stdout_plugin_spec.rb +145 -0
  750. data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +121 -0
  751. data/spec/units/plugins/reportgenerator_reportinator_spec.rb +410 -0
  752. data/spec/units/plugins/sanitize_config_spec.rb +119 -0
  753. data/spec/units/plugins/sanitize_findings_spec.rb +69 -0
  754. data/spec/units/plugins/sanitize_records_spec.rb +114 -0
  755. data/spec/units/plugins/sanitize_reports_spec.rb +84 -0
  756. data/spec/units/plugins/sanitize_spec.rb +300 -0
  757. data/spec/units/plugins/tests_reporter_spec.rb +89 -0
  758. data/spec/units/plugins/valgrind_spec.rb +560 -0
  759. data/spec/units/plugins/warning_collector_spec.rb +185 -0
  760. data/spec/units/plugins/warning_reports_spec.rb +150 -0
  761. data/spec/units/preprocess/c_comment_scanner_spec.rb +17 -17
  762. data/spec/units/preprocess/c_preprocessor_conditionals_spec.rb +94 -0
  763. data/spec/units/preprocess/preprocessinator_bare_includes_extractor_spec.rb +73 -0
  764. data/spec/units/preprocess/preprocessinator_code_finder_spec.rb +35 -16
  765. data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +129 -48
  766. data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +292 -9
  767. data/spec/units/preprocess/preprocessinator_includes_handler_spec.rb +294 -16
  768. data/spec/units/preprocess/preprocessinator_line_marker_includes_extractor_spec.rb +356 -6
  769. data/spec/units/preprocess/preprocessinator_reconstructor_spec.rb +58 -4
  770. data/spec/units/preprocess/preprocessinator_spec.rb +693 -5
  771. data/spec/units/quote_include_isolator_spec.rb +176 -0
  772. data/spec/units/rake_app/rake_invocation_tracker_spec.rb +94 -0
  773. data/spec/units/rake_app/rake_task_registry_spec.rb +263 -0
  774. data/spec/units/rake_app/rake_utils_spec.rb +54 -0
  775. data/spec/units/rake_app/rake_wrapper_spec.rb +64 -0
  776. data/spec/units/rake_app/rakefile_component_resolver_spec.rb +182 -0
  777. data/spec/units/rake_app/test_task_name_spec.rb +47 -0
  778. data/spec/units/release_build_executor_spec.rb +404 -0
  779. data/spec/units/release_build_planner_spec.rb +144 -0
  780. data/spec/units/release_invoker_spec.rb +127 -0
  781. data/spec/units/reportinator_spec.rb +35 -0
  782. data/spec/units/ruby_expandinator_spec.rb +36 -0
  783. data/spec/units/standin_headerinator_spec.rb +168 -0
  784. data/spec/units/system_wrapper_spec.rb +16 -0
  785. data/spec/units/test_build_executor_spec.rb +1693 -8
  786. data/spec/units/test_build_planner_spec.rb +878 -0
  787. data/spec/units/test_build_setup_spec.rb +583 -0
  788. data/spec/units/test_context_extractor_spec.rb +51 -3
  789. data/spec/units/test_file_preprocessinator_spec.rb +206 -0
  790. data/spec/units/test_includes_extractinator_spec.rb +764 -0
  791. data/spec/units/test_invoker/objects_wiring_spec.rb +31 -0
  792. data/spec/units/test_invoker_spec.rb +147 -0
  793. data/spec/units/test_invoker_types_spec.rb +182 -0
  794. data/spec/units/test_pipeline_helpers_spec.rb +100 -0
  795. data/spec/units/test_pipeline_manager_spec.rb +415 -0
  796. data/spec/units/test_runner_generatinator_spec.rb +215 -0
  797. data/spec/units/test_runner_manager_spec.rb +70 -0
  798. data/spec/units/test_search_paths_spec.rb +84 -0
  799. data/spec/units/test_source_file_directive_resolver_spec.rb +239 -0
  800. data/spec/units/tool_executor_helper_spec.rb +1 -1
  801. data/spec/units/tool_executor_spec.rb +571 -2
  802. data/spec/units/tool_validator_spec.rb +303 -24
  803. data/spec/units/version_spec.rb +74 -0
  804. data/spec/units/yaml_wrapper_spec.rb +4 -1
  805. data/vendor/cmock/docs/CMock_Summary.md +11 -0
  806. data/vendor/cmock/lib/cmock_config.rb +1 -0
  807. data/vendor/cmock/lib/cmock_generator.rb +5 -1
  808. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +31 -0
  809. data/vendor/cmock/vendor/unity/auto/generate_module.rb +4 -4
  810. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +8 -2
  811. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +2 -2
  812. data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +7 -0
  813. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +4 -0
  814. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  815. data/vendor/cmock/vendor/unity/src/unity_internals.h +21 -7
  816. data/vendor/cmock/vendor/unity/test/Makefile +9 -2
  817. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -0
  818. data/vendor/cmock/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  819. data/vendor/cmock/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  820. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  821. data/vendor/cmock/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  822. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +78 -0
  823. data/vendor/cmock/vendor/unity/test/tests/test_unity_test_summary.rb +58 -0
  824. data/vendor/diy/lib/diy/factory.rb +5 -4
  825. data/vendor/diy/lib/diy.rb +5 -4
  826. data/vendor/diy/sample_code/car.rb +5 -4
  827. data/vendor/diy/sample_code/chassis.rb +5 -4
  828. data/vendor/diy/sample_code/diy_example.rb +5 -4
  829. data/vendor/diy/sample_code/engine.rb +5 -4
  830. data/vendor/diy/sample_code/objects.yml +5 -4
  831. data/vendor/diy/test/constructor.rb +5 -4
  832. data/vendor/diy/test/diy_test.rb +5 -4
  833. data/vendor/diy/test/factory_test.rb +5 -4
  834. data/vendor/diy/test/files/broken_construction.yml +5 -4
  835. data/vendor/diy/test/files/cat/cat.rb +5 -4
  836. data/vendor/diy/test/files/cat/extra_conflict.yml +5 -4
  837. data/vendor/diy/test/files/cat/heritage.rb +5 -4
  838. data/vendor/diy/test/files/cat/needs_input.yml +5 -4
  839. data/vendor/diy/test/files/cat/the_cat_lineage.rb +5 -4
  840. data/vendor/diy/test/files/dog/dog_model.rb +5 -4
  841. data/vendor/diy/test/files/dog/dog_presenter.rb +5 -4
  842. data/vendor/diy/test/files/dog/dog_view.rb +5 -4
  843. data/vendor/diy/test/files/dog/file_resolver.rb +5 -4
  844. data/vendor/diy/test/files/dog/other_thing.rb +5 -4
  845. data/vendor/diy/test/files/dog/simple.yml +5 -4
  846. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +5 -4
  847. data/vendor/diy/test/files/donkey/foo.rb +5 -4
  848. data/vendor/diy/test/files/factory/beef.rb +5 -4
  849. data/vendor/diy/test/files/factory/dog.rb +5 -4
  850. data/vendor/diy/test/files/factory/factory.yml +5 -4
  851. data/vendor/diy/test/files/factory/farm/llama.rb +5 -4
  852. data/vendor/diy/test/files/factory/farm/pork.rb +5 -4
  853. data/vendor/diy/test/files/factory/kitten.rb +5 -4
  854. data/vendor/diy/test/files/fud/objects.yml +5 -4
  855. data/vendor/diy/test/files/fud/toy.rb +5 -4
  856. data/vendor/diy/test/files/functions/attached_things_builder.rb +5 -4
  857. data/vendor/diy/test/files/functions/invalid_method.yml +5 -4
  858. data/vendor/diy/test/files/functions/method_extractor.rb +5 -4
  859. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -4
  860. data/vendor/diy/test/files/functions/objects.yml +5 -4
  861. data/vendor/diy/test/files/functions/thing.rb +5 -4
  862. data/vendor/diy/test/files/functions/thing_builder.rb +5 -4
  863. data/vendor/diy/test/files/functions/things_builder.rb +5 -4
  864. data/vendor/diy/test/files/gnu/objects.yml +5 -4
  865. data/vendor/diy/test/files/gnu/thinger.rb +5 -4
  866. data/vendor/diy/test/files/goat/base.rb +5 -4
  867. data/vendor/diy/test/files/goat/can.rb +5 -4
  868. data/vendor/diy/test/files/goat/goat.rb +5 -4
  869. data/vendor/diy/test/files/goat/objects.yml +5 -4
  870. data/vendor/diy/test/files/goat/paper.rb +5 -4
  871. data/vendor/diy/test/files/goat/plane.rb +5 -4
  872. data/vendor/diy/test/files/goat/shirt.rb +5 -4
  873. data/vendor/diy/test/files/goat/wings.rb +5 -4
  874. data/vendor/diy/test/files/horse/holder_thing.rb +5 -4
  875. data/vendor/diy/test/files/horse/objects.yml +5 -4
  876. data/vendor/diy/test/files/namespace/animal/bird.rb +5 -4
  877. data/vendor/diy/test/files/namespace/animal/cat.rb +5 -4
  878. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +5 -4
  879. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +5 -4
  880. data/vendor/diy/test/files/namespace/bad_module_specified.yml +5 -4
  881. data/vendor/diy/test/files/namespace/class_name_combine.yml +5 -4
  882. data/vendor/diy/test/files/namespace/no_module_specified.yml +5 -4
  883. data/vendor/diy/test/files/namespace/objects.yml +5 -4
  884. data/vendor/diy/test/files/namespace/road.rb +5 -4
  885. data/vendor/diy/test/files/namespace/sky.rb +5 -4
  886. data/vendor/diy/test/files/namespace/subcontext.yml +5 -4
  887. data/vendor/diy/test/files/non_singleton/air.rb +5 -4
  888. data/vendor/diy/test/files/non_singleton/fat_cat.rb +5 -4
  889. data/vendor/diy/test/files/non_singleton/objects.yml +5 -4
  890. data/vendor/diy/test/files/non_singleton/pig.rb +5 -4
  891. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +5 -4
  892. data/vendor/diy/test/files/non_singleton/tick.rb +5 -4
  893. data/vendor/diy/test/files/non_singleton/yard.rb +5 -4
  894. data/vendor/diy/test/files/yak/core_model.rb +5 -4
  895. data/vendor/diy/test/files/yak/core_presenter.rb +5 -4
  896. data/vendor/diy/test/files/yak/core_view.rb +5 -4
  897. data/vendor/diy/test/files/yak/data_source.rb +5 -4
  898. data/vendor/diy/test/files/yak/fringe_model.rb +5 -4
  899. data/vendor/diy/test/files/yak/fringe_presenter.rb +5 -4
  900. data/vendor/diy/test/files/yak/fringe_view.rb +5 -4
  901. data/vendor/diy/test/files/yak/giant_squid.rb +5 -4
  902. data/vendor/diy/test/files/yak/krill.rb +5 -4
  903. data/vendor/diy/test/files/yak/my_objects.yml +5 -4
  904. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +5 -4
  905. data/vendor/diy/test/test_helper.rb +5 -4
  906. data/vendor/unity/auto/generate_module.rb +4 -4
  907. data/vendor/unity/auto/generate_test_runner.rb +5 -1
  908. data/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  909. data/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  910. data/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  911. data/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  912. data/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  913. data/vendor/unity/test/tests/test_generate_test_runner.rb +29 -0
  914. metadata +783 -295
  915. data/assets/tests_with_fallback_conditionals/src/conditional_module.c +0 -18
  916. data/bin/actions_wrapper.rb +0 -51
  917. data/docs/mkdocs/assets/images/ceedling-logo-circle.png +0 -0
  918. data/docs/mkdocs/assets/images/ceedling.svg +0 -90
  919. data/docs/mkdocs/assets/images/favicon.png +0 -0
  920. data/docs/mkdocs/assets/stylesheets/admonitions.css +0 -152
  921. data/docs/mkdocs/assets/stylesheets/fixes-local.css +0 -15
  922. data/docs/mkdocs/assets/stylesheets/styling.css +0 -102
  923. data/docs/mkdocs/configuration/environment-vars.md +0 -14
  924. data/docs/mkdocs/configuration/global-collections.md +0 -156
  925. data/docs/mkdocs/configuration/index.md +0 -75
  926. data/docs/mkdocs/configuration/loading.md +0 -89
  927. data/docs/mkdocs/configuration/mixins.md +0 -607
  928. data/docs/mkdocs/configuration/parallel-builds.md +0 -97
  929. data/docs/mkdocs/configuration/project-file.md +0 -216
  930. data/docs/mkdocs/configuration/reference/cexception.md +0 -35
  931. data/docs/mkdocs/configuration/reference/cmock.md +0 -106
  932. data/docs/mkdocs/configuration/reference/defines.md +0 -352
  933. data/docs/mkdocs/configuration/reference/environment.md +0 -55
  934. data/docs/mkdocs/configuration/reference/extension.md +0 -63
  935. data/docs/mkdocs/configuration/reference/files.md +0 -154
  936. data/docs/mkdocs/configuration/reference/flags.md +0 -296
  937. data/docs/mkdocs/configuration/reference/index.md +0 -176
  938. data/docs/mkdocs/configuration/reference/libraries.md +0 -82
  939. data/docs/mkdocs/configuration/reference/mixins.md +0 -24
  940. data/docs/mkdocs/configuration/reference/partials.md +0 -38
  941. data/docs/mkdocs/configuration/reference/paths.md +0 -276
  942. data/docs/mkdocs/configuration/reference/plugins.md +0 -60
  943. data/docs/mkdocs/configuration/reference/project.md +0 -333
  944. data/docs/mkdocs/configuration/reference/release-build.md +0 -62
  945. data/docs/mkdocs/configuration/reference/test-build.md +0 -55
  946. data/docs/mkdocs/configuration/reference/test-runner.md +0 -61
  947. data/docs/mkdocs/configuration/reference/tools.md +0 -457
  948. data/docs/mkdocs/configuration/reference/unity.md +0 -49
  949. data/docs/mkdocs/configuration/which-ceedling.md +0 -77
  950. data/docs/mkdocs/development/index.md +0 -61
  951. data/docs/mkdocs/development/plugins/configuration.md +0 -164
  952. data/docs/mkdocs/development/plugins/index.md +0 -84
  953. data/docs/mkdocs/development/plugins/plugin-subclass.md +0 -513
  954. data/docs/mkdocs/development/plugins/rake-tasks.md +0 -54
  955. data/docs/mkdocs/development/workflow.md +0 -284
  956. data/docs/mkdocs/getting-started/command-line.md +0 -477
  957. data/docs/mkdocs/getting-started/example-projects/cipher-quest.md +0 -65
  958. data/docs/mkdocs/getting-started/example-projects/index.md +0 -49
  959. data/docs/mkdocs/getting-started/example-projects/temp-sensor.md +0 -60
  960. data/docs/mkdocs/getting-started/example-projects/wondrous-forest.md +0 -45
  961. data/docs/mkdocs/getting-started/index.md +0 -41
  962. data/docs/mkdocs/getting-started/installation.md +0 -179
  963. data/docs/mkdocs/getting-started/quick-start.md +0 -86
  964. data/docs/mkdocs/help.md +0 -49
  965. data/docs/mkdocs/index.md +0 -222
  966. data/docs/mkdocs/overview/build-system.md +0 -115
  967. data/docs/mkdocs/overview/index.md +0 -29
  968. data/docs/mkdocs/overview/test-environments.md +0 -33
  969. data/docs/mkdocs/overview/tools-and-frameworks.md +0 -115
  970. data/docs/mkdocs/plugins/beep.md +0 -134
  971. data/docs/mkdocs/plugins/bullseye.md +0 -83
  972. data/docs/mkdocs/plugins/command-hooks.md +0 -268
  973. data/docs/mkdocs/plugins/compile-commands-json-db.md +0 -42
  974. data/docs/mkdocs/plugins/cppcheck.md +0 -377
  975. data/docs/mkdocs/plugins/dependencies.md +0 -310
  976. data/docs/mkdocs/plugins/fff.md +0 -247
  977. data/docs/mkdocs/plugins/gcov/examples.md +0 -92
  978. data/docs/mkdocs/plugins/gcov/gcovr.md +0 -526
  979. data/docs/mkdocs/plugins/gcov/index.md +0 -74
  980. data/docs/mkdocs/plugins/gcov/overview.md +0 -145
  981. data/docs/mkdocs/plugins/gcov/reportgenerator.md +0 -246
  982. data/docs/mkdocs/plugins/gcov/reporting.md +0 -147
  983. data/docs/mkdocs/plugins/gcov/setup.md +0 -232
  984. data/docs/mkdocs/plugins/gcov/tool-versions.md +0 -60
  985. data/docs/mkdocs/plugins/gcov/troubleshooting.md +0 -78
  986. data/docs/mkdocs/plugins/index.md +0 -261
  987. data/docs/mkdocs/plugins/module-generator.md +0 -267
  988. data/docs/mkdocs/plugins/report-build-warnings-log.md +0 -42
  989. data/docs/mkdocs/plugins/report-tests-gtestlike-stdout.md +0 -98
  990. data/docs/mkdocs/plugins/report-tests-ide-stdout.md +0 -63
  991. data/docs/mkdocs/plugins/report-tests-log-factory.md +0 -454
  992. data/docs/mkdocs/plugins/report-tests-pretty-stdout.md +0 -56
  993. data/docs/mkdocs/plugins/report-tests-raw-output-log.md +0 -52
  994. data/docs/mkdocs/plugins/report-tests-teamcity-stdout.md +0 -96
  995. data/docs/mkdocs/plugins/sample_html_report.png +0 -0
  996. data/docs/mkdocs/plugins/valgrind.md +0 -198
  997. data/docs/mkdocs/project/release-history.md +0 -61
  998. data/docs/mkdocs/project/upgrade.md +0 -85
  999. data/docs/mkdocs/reference/build-directives.md +0 -37
  1000. data/docs/mkdocs/reference/command-line.md +0 -323
  1001. data/docs/mkdocs/reference/environment-vars.md +0 -60
  1002. data/docs/mkdocs/reference/gcov-plugin.md +0 -600
  1003. data/docs/mkdocs/reference/global-collections.md +0 -160
  1004. data/docs/mkdocs/reference/index.md +0 -65
  1005. data/docs/mkdocs/reference/partials-macros.md +0 -79
  1006. data/docs/mkdocs/reference/project-configuration.md +0 -46
  1007. data/docs/mkdocs/snapshot/examples/cipher_quest/README.md +0 -210
  1008. data/docs/mkdocs/snapshot/examples/temp_sensor/README.md +0 -283
  1009. data/docs/mkdocs/snapshot/examples/wondrous_forest/README.md +0 -92
  1010. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +0 -32
  1011. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults_gcov.rb +0 -136
  1012. data/docs/mkdocs/snapshot.yml +0 -20
  1013. data/docs/mkdocs/testing-guide/build-directives.md +0 -153
  1014. data/docs/mkdocs/testing-guide/conventions.md +0 -616
  1015. data/docs/mkdocs/testing-guide/frameworks.md +0 -192
  1016. data/docs/mkdocs/testing-guide/index.md +0 -80
  1017. data/docs/mkdocs/testing-guide/partials/configuration.md +0 -67
  1018. data/docs/mkdocs/testing-guide/partials/conventions.md +0 -68
  1019. data/docs/mkdocs/testing-guide/partials/directives.md +0 -212
  1020. data/docs/mkdocs/testing-guide/partials/example.md +0 -149
  1021. data/docs/mkdocs/testing-guide/partials/index.md +0 -88
  1022. data/docs/mkdocs/testing-guide/partials/overview.md +0 -81
  1023. data/docs/mkdocs/testing-guide/partials/variables.md +0 -244
  1024. data/docs/mkdocs/testing-guide/test-cases.md +0 -194
  1025. data/docs/mkdocs/testing-guide/test-sample.md +0 -94
  1026. data/docs/mkdocs/testing-guide/test-suite-anatomy.md +0 -58
  1027. data/lib/ceedling/cacheinator.rb +0 -53
  1028. data/lib/ceedling/cacheinator_helper.rb +0 -60
  1029. data/lib/ceedling/dependinator.rb +0 -31
  1030. data/lib/ceedling/makefile.rb +0 -52
  1031. data/lib/ceedling/release_invoker.rb +0 -112
  1032. data/lib/ceedling/rules_release.rake +0 -109
  1033. data/lib/ceedling/tasks_release.rake +0 -36
  1034. data/plugins/fff/vendor/fff/Makefile +0 -10
  1035. data/plugins/fff/vendor/fff/buildandtest +0 -15
  1036. data/plugins/fff/vendor/fff/examples/Makefile +0 -7
  1037. data/plugins/fff/vendor/fff/examples/driver_testing/Makefile +0 -64
  1038. data/plugins/fff/vendor/fff/examples/driver_testing/driver.c +0 -32
  1039. data/plugins/fff/vendor/fff/examples/driver_testing/driver.h +0 -21
  1040. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.cpp +0 -58
  1041. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.fff.cpp +0 -70
  1042. data/plugins/fff/vendor/fff/examples/driver_testing/hardware_abstraction.h +0 -25
  1043. data/plugins/fff/vendor/fff/examples/driver_testing/registers.h +0 -23
  1044. data/plugins/fff/vendor/fff/examples/embedded_ui/DISPLAY.h +0 -27
  1045. data/plugins/fff/vendor/fff/examples/embedded_ui/Kata.txt +0 -25
  1046. data/plugins/fff/vendor/fff/examples/embedded_ui/Makefile +0 -67
  1047. data/plugins/fff/vendor/fff/examples/embedded_ui/SYSTEM.h +0 -31
  1048. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.c +0 -56
  1049. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.h +0 -22
  1050. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_ansic.c +0 -191
  1051. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_cpp.cpp +0 -144
  1052. data/plugins/fff/vendor/fff/examples/embedded_ui/test_suite_template.c +0 -42
  1053. data/plugins/fff/vendor/fff/gtest/Makefile +0 -22
  1054. data/plugins/fff/vendor/fff/gtest/gtest-all.cc +0 -9118
  1055. data/plugins/fff/vendor/fff/gtest/gtest-main.cc +0 -6
  1056. data/plugins/fff/vendor/fff/gtest/gtest.h +0 -19547
  1057. data/plugins/fff/vendor/fff/test/Makefile +0 -81
  1058. data/plugins/fff/vendor/fff/test/c_test_framework.h +0 -25
  1059. data/plugins/fff/vendor/fff/test/fff_test_c.c +0 -116
  1060. data/plugins/fff/vendor/fff/test/fff_test_cpp.cpp +0 -53
  1061. data/plugins/fff/vendor/fff/test/fff_test_global_c.c +0 -84
  1062. data/plugins/fff/vendor/fff/test/fff_test_global_cpp.cpp +0 -31
  1063. data/plugins/fff/vendor/fff/test/global_fakes.c +0 -21
  1064. data/plugins/fff/vendor/fff/test/global_fakes.h +0 -47
  1065. data/plugins/fff/vendor/fff/test/test_cases.include +0 -276
  1066. data/plugins/report_tests_gtestlike_stdout/assets/template.erb +0 -83
  1067. data/site-local/assets/stylesheets/main.ec1eaa64.min.css +0 -1
  1068. data/site-local/assets/stylesheets/main.ec1eaa64.min.css.map +0 -1
  1069. data/site-local/assets/stylesheets/palette.ab4e12ef.min.css +0 -1
  1070. data/site-local/assets/stylesheets/palette.ab4e12ef.min.css.map +0 -1
  1071. data/site-local/snapshot/assets/project.yml +0 -404
  1072. data/spec/system/partials_types_header_spec.rb +0 -166
  1073. data/spec/units/configurator_spec.rb +0 -232
  1074. /data/assets/{ceedling → features/ceedling} +0 -0
  1075. /data/assets/{ceedling.cmd → features/ceedling.cmd} +0 -0
  1076. /data/assets/{default_gitignore → features/default_gitignore} +0 -0
  1077. /data/assets/{broken_uncovered_file.c → fixtures/broken_uncovered_file.c} +0 -0
  1078. /data/assets/{example_file.c → fixtures/example_file.c} +0 -0
  1079. /data/assets/{example_file.h → fixtures/example_file.h} +0 -0
  1080. /data/assets/{example_file_call.c → fixtures/example_file_call.c} +0 -0
  1081. /data/assets/{example_file_call.h → fixtures/example_file_call.h} +0 -0
  1082. /data/assets/{example_file_with_statics.c → fixtures/example_file_with_statics.c} +0 -0
  1083. /data/assets/{example_file_with_stdio.c → fixtures/example_file_with_stdio.c} +0 -0
  1084. /data/assets/{example_file_with_stdio.h → fixtures/example_file_with_stdio.h} +0 -0
  1085. /data/assets/{fake_crash_test_fixture.rb → fixtures/fake_crash_test_fixture.rb} +0 -0
  1086. /data/assets/{partial_all_module.h → fixtures/partial_all_module.h} +0 -0
  1087. /data/assets/{run_with_ubsan.rb → fixtures/run_with_ubsan.rb} +0 -0
  1088. /data/assets/{same_dir_pairing_module.c → fixtures/same_dir_pairing_module.c} +0 -0
  1089. /data/assets/{same_dir_pairing_module.h → fixtures/same_dir_pairing_module.h} +0 -0
  1090. /data/assets/{same_dir_pairing_module_func.h → fixtures/same_dir_pairing_module_func.h} +0 -0
  1091. /data/assets/{same_dir_pairing_other.c → fixtures/same_dir_pairing_other.c} +0 -0
  1092. /data/assets/{same_dir_pairing_other.h → fixtures/same_dir_pairing_other.h} +0 -0
  1093. /data/assets/{test_example_file.c → fixtures/test_example_file.c} +0 -0
  1094. /data/assets/{test_example_file_2.c → fixtures/test_example_file_2.c} +0 -0
  1095. /data/assets/{test_example_file_source_include.c → fixtures/test_example_file_source_include.c} +0 -0
  1096. /data/assets/{test_example_file_success.c → fixtures/test_example_file_success.c} +0 -0
  1097. /data/assets/{test_example_file_unity_printf.c → fixtures/test_example_file_unity_printf.c} +0 -0
  1098. /data/assets/{test_example_file_verbose.c → fixtures/test_example_file_verbose.c} +0 -0
  1099. /data/assets/{test_example_file_with_mock.c → fixtures/test_example_file_with_mock.c} +0 -0
  1100. /data/assets/{test_example_file_with_stdio.c → fixtures/test_example_file_with_stdio.c} +0 -0
  1101. /data/assets/{test_example_with_parameterized_tests.c → fixtures/test_example_with_parameterized_tests.c} +0 -0
  1102. /data/assets/{test_partial_all_module.c → fixtures/test_partial_all_module.c} +0 -0
  1103. /data/assets/{test_same_dir_pairing.c → fixtures/test_same_dir_pairing.c} +0 -0
  1104. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_config.h +0 -0
  1105. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_extra.h +0 -0
  1106. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/local_flag_extra.h +0 -0
  1107. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_extra.h +0 -0
  1108. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_wrapper.h +0 -0
  1109. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/project_flag_extra.h +0 -0
  1110. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.h +0 -0
  1111. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.c +0 -0
  1112. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.h +0 -0
  1113. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.c +0 -0
  1114. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.h +0 -0
  1115. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware.c +0 -0
  1116. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware_special.c +0 -0
  1117. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.c +0 -0
  1118. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.h +0 -0
  1119. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder.c +0 -0
  1120. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder_partial.c +0 -0
  1121. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/conditional_module.h +0 -0
  1122. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/optional_dep.h +0 -0
  1123. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.c +0 -0
  1124. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.h +0 -0
  1125. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.c +0 -0
  1126. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.h +0 -0
  1127. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.c +0 -0
  1128. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.h +0 -0
  1129. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_blanks.c +0 -0
  1130. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_counter.c +0 -0
  1131. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_decorators.c +0 -0
  1132. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.c +0 -0
  1133. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.h +0 -0
  1134. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.c +0 -0
  1135. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.h +0 -0
  1136. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.c +0 -0
  1137. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.h +0 -0
  1138. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorA.h +0 -0
  1139. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorB.h +0 -0
  1140. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorC.h +0 -0
  1141. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareA.c +0 -0
  1142. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareB.c +0 -0
  1143. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareC.c +0 -0
  1144. /data/assets/{uncovered_example_file.c → fixtures/uncovered_example_file.c} +0 -0
  1145. /data/plugins/bullseye/assets/{template.erb → coverage.template} +0 -0
@@ -21,7 +21,7 @@
21
21
 
22
22
 
23
23
  <link rel="icon" href="../../assets/images/favicon.png">
24
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
24
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.8.0">
25
25
 
26
26
 
27
27
 
@@ -29,10 +29,10 @@
29
29
 
30
30
 
31
31
 
32
- <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css">
32
+ <link rel="stylesheet" href="../../assets/stylesheets/main.57a0d79d.min.css">
33
33
 
34
34
 
35
- <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
35
+ <link rel="stylesheet" href="../../assets/stylesheets/palette.fb2fffe2.min.css">
36
36
 
37
37
 
38
38
 
@@ -93,6 +93,16 @@
93
93
 
94
94
  <div data-md-color-scheme="default" data-md-component="outdated" hidden>
95
95
 
96
+ <aside class="md-banner md-banner--warning">
97
+ <div class="md-banner__inner md-grid md-typeset">
98
+ You are not viewing the latest version.
99
+ <a href="../../..">
100
+ <strong>Click here to go to latest.</strong>
101
+ </a>
102
+ </div>
103
+ <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>
104
+ </aside>
105
+
96
106
  </div>
97
107
 
98
108
 
@@ -330,7 +340,7 @@
330
340
 
331
341
 
332
342
  <li class="md-tabs__item">
333
- <a href="../../project/release-history.html" class="md-tabs__link">
343
+ <a href="../../project/index.html" class="md-tabs__link">
334
344
 
335
345
 
336
346
 
@@ -641,6 +651,8 @@
641
651
 
642
652
 
643
653
 
654
+
655
+
644
656
 
645
657
 
646
658
 
@@ -788,6 +800,34 @@
788
800
 
789
801
 
790
802
 
803
+ <li class="md-nav__item">
804
+ <a href="../../getting-started/builds.html" class="md-nav__link">
805
+
806
+
807
+
808
+ <span class="md-ellipsis">
809
+
810
+
811
+ Builds
812
+
813
+
814
+
815
+ </span>
816
+
817
+
818
+
819
+ </a>
820
+ </li>
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+
829
+
830
+
791
831
 
792
832
 
793
833
 
@@ -814,7 +854,7 @@
814
854
 
815
855
 
816
856
 
817
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
857
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
818
858
 
819
859
 
820
860
  <div class="md-nav__link md-nav__container">
@@ -836,14 +876,14 @@
836
876
  </a>
837
877
 
838
878
 
839
- <label class="md-nav__link " for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
879
+ <label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
840
880
  <span class="md-nav__icon md-icon"></span>
841
881
  </label>
842
882
 
843
883
  </div>
844
884
 
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">
885
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
886
+ <label class="md-nav__title" for="__nav_3_6">
847
887
  <span class="md-nav__icon md-icon"></span>
848
888
 
849
889
 
@@ -2410,6 +2450,8 @@
2410
2450
 
2411
2451
 
2412
2452
 
2453
+
2454
+
2413
2455
 
2414
2456
 
2415
2457
 
@@ -3041,10 +3083,63 @@
3041
3083
 
3042
3084
 
3043
3085
  <li class="md-nav__item">
3044
- <a href="../../plugins/bullseye.html" class="md-nav__link">
3086
+ <a href="../../plugins/sanitize.html" class="md-nav__link">
3045
3087
 
3046
3088
 
3047
3089
 
3090
+ <span class="md-ellipsis">
3091
+
3092
+
3093
+ Sanitize (ASan, UBSan & Leaks)
3094
+
3095
+
3096
+
3097
+ </span>
3098
+
3099
+
3100
+
3101
+ </a>
3102
+ </li>
3103
+
3104
+
3105
+
3106
+
3107
+
3108
+
3109
+
3110
+
3111
+
3112
+
3113
+
3114
+
3115
+
3116
+
3117
+
3118
+
3119
+
3120
+
3121
+
3122
+
3123
+
3124
+
3125
+
3126
+
3127
+
3128
+
3129
+
3130
+
3131
+ <li class="md-nav__item md-nav__item--nested">
3132
+
3133
+
3134
+
3135
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_13" >
3136
+
3137
+
3138
+ <div class="md-nav__link md-nav__container">
3139
+ <a href="../../plugins/bullseye/index.html" class="md-nav__link ">
3140
+
3141
+
3142
+
3048
3143
  <span class="md-ellipsis">
3049
3144
 
3050
3145
 
@@ -3052,6 +3147,50 @@
3052
3147
 
3053
3148
 
3054
3149
 
3150
+ </span>
3151
+
3152
+
3153
+
3154
+ </a>
3155
+
3156
+
3157
+ <label class="md-nav__link " for="__nav_6_13" id="__nav_6_13_label" tabindex="0">
3158
+ <span class="md-nav__icon md-icon"></span>
3159
+ </label>
3160
+
3161
+ </div>
3162
+
3163
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_13_label" aria-expanded="false">
3164
+ <label class="md-nav__title" for="__nav_6_13">
3165
+ <span class="md-nav__icon md-icon"></span>
3166
+
3167
+
3168
+ Bullseye (Coverage)
3169
+
3170
+
3171
+ </label>
3172
+ <ul class="md-nav__list" data-md-scrollfix>
3173
+
3174
+
3175
+
3176
+
3177
+
3178
+
3179
+
3180
+
3181
+
3182
+ <li class="md-nav__item">
3183
+ <a href="../../plugins/bullseye/licensing.html" class="md-nav__link">
3184
+
3185
+
3186
+
3187
+ <span class="md-ellipsis">
3188
+
3189
+
3190
+ Licensing
3191
+
3192
+
3193
+
3055
3194
  </span>
3056
3195
 
3057
3196
 
@@ -3062,6 +3201,14 @@
3062
3201
 
3063
3202
 
3064
3203
 
3204
+ </ul>
3205
+ </nav>
3206
+
3207
+ </li>
3208
+
3209
+
3210
+
3211
+
3065
3212
 
3066
3213
 
3067
3214
 
@@ -3531,6 +3678,12 @@
3531
3678
 
3532
3679
 
3533
3680
 
3681
+
3682
+
3683
+
3684
+
3685
+
3686
+
3534
3687
 
3535
3688
 
3536
3689
 
@@ -3550,8 +3703,9 @@
3550
3703
  <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
3551
3704
 
3552
3705
 
3553
- <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
3554
-
3706
+ <div class="md-nav__link md-nav__container">
3707
+ <a href="../../project/index.html" class="md-nav__link ">
3708
+
3555
3709
 
3556
3710
 
3557
3711
  <span class="md-ellipsis">
@@ -3565,8 +3719,14 @@
3565
3719
 
3566
3720
 
3567
3721
 
3568
- <span class="md-nav__icon md-icon"></span>
3569
- </label>
3722
+ </a>
3723
+
3724
+
3725
+ <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0">
3726
+ <span class="md-nav__icon md-icon"></span>
3727
+ </label>
3728
+
3729
+ </div>
3570
3730
 
3571
3731
  <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
3572
3732
  <label class="md-nav__title" for="__nav_8">
@@ -3580,6 +3740,8 @@
3580
3740
  <ul class="md-nav__list" data-md-scrollfix>
3581
3741
 
3582
3742
 
3743
+
3744
+
3583
3745
 
3584
3746
 
3585
3747
 
@@ -3613,6 +3775,34 @@
3613
3775
 
3614
3776
 
3615
3777
 
3778
+ <li class="md-nav__item">
3779
+ <a href="../../project/sbom.html" class="md-nav__link">
3780
+
3781
+
3782
+
3783
+ <span class="md-ellipsis">
3784
+
3785
+
3786
+ Software Bill of Materials
3787
+
3788
+
3789
+
3790
+ </span>
3791
+
3792
+
3793
+
3794
+ </a>
3795
+ </li>
3796
+
3797
+
3798
+
3799
+
3800
+
3801
+
3802
+
3803
+
3804
+
3805
+
3616
3806
  <li class="md-nav__item">
3617
3807
  <a href="../../project/upgrade.html" class="md-nav__link">
3618
3808
 
@@ -3685,6 +3875,8 @@
3685
3875
 
3686
3876
 
3687
3877
 
3878
+
3879
+
3688
3880
 
3689
3881
 
3690
3882
 
@@ -3777,6 +3969,34 @@
3777
3969
 
3778
3970
 
3779
3971
 
3972
+
3973
+
3974
+ <li class="md-nav__item">
3975
+ <a href="../releases.html" class="md-nav__link">
3976
+
3977
+
3978
+
3979
+ <span class="md-ellipsis">
3980
+
3981
+
3982
+ Branching & Releases
3983
+
3984
+
3985
+
3986
+ </span>
3987
+
3988
+
3989
+
3990
+ </a>
3991
+ </li>
3992
+
3993
+
3994
+
3995
+
3996
+
3997
+
3998
+
3999
+
3780
4000
 
3781
4001
 
3782
4002
 
@@ -3810,7 +4030,7 @@
3810
4030
 
3811
4031
 
3812
4032
 
3813
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_3" checked>
4033
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_4" checked>
3814
4034
 
3815
4035
 
3816
4036
  <div class="md-nav__link md-nav__container">
@@ -3832,14 +4052,14 @@
3832
4052
  </a>
3833
4053
 
3834
4054
 
3835
- <label class="md-nav__link " for="__nav_10_3" id="__nav_10_3_label" tabindex="">
4055
+ <label class="md-nav__link " for="__nav_10_4" id="__nav_10_4_label" tabindex="">
3836
4056
  <span class="md-nav__icon md-icon"></span>
3837
4057
  </label>
3838
4058
 
3839
4059
  </div>
3840
4060
 
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">
4061
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_4_label" aria-expanded="true">
4062
+ <label class="md-nav__title" for="__nav_10_4">
3843
4063
  <span class="md-nav__icon md-icon"></span>
3844
4064
 
3845
4065
 
@@ -4070,6 +4290,28 @@
4070
4290
  </span>
4071
4291
  </a>
4072
4292
 
4293
+ </li>
4294
+
4295
+ <li class="md-nav__item">
4296
+ <a href="#delta-build-hooks" class="md-nav__link">
4297
+ <span class="md-ellipsis">
4298
+
4299
+ Delta build hooks
4300
+
4301
+ </span>
4302
+ </a>
4303
+
4304
+ </li>
4305
+
4306
+ <li class="md-nav__item">
4307
+ <a href="#plugin-hook-method-pre_test_compile_registerarg_hash" class="md-nav__link">
4308
+ <span class="md-ellipsis">
4309
+
4310
+ Plugin hook method pre_test_compile_register(arg_hash)
4311
+
4312
+ </span>
4313
+ </a>
4314
+
4073
4315
  </li>
4074
4316
 
4075
4317
  <li class="md-nav__item">
@@ -4081,6 +4323,17 @@
4081
4323
  </span>
4082
4324
  </a>
4083
4325
 
4326
+ </li>
4327
+
4328
+ <li class="md-nav__item">
4329
+ <a href="#plugin-hook-method-pre_test_link_registerarg_hash" class="md-nav__link">
4330
+ <span class="md-ellipsis">
4331
+
4332
+ Plugin hook method pre_test_link_register(arg_hash)
4333
+
4334
+ </span>
4335
+ </a>
4336
+
4084
4337
  </li>
4085
4338
 
4086
4339
  <li class="md-nav__item">
@@ -4092,6 +4345,17 @@
4092
4345
  </span>
4093
4346
  </a>
4094
4347
 
4348
+ </li>
4349
+
4350
+ <li class="md-nav__item">
4351
+ <a href="#plugin-hook-method-pre_test_fixture_registerarg_hash" class="md-nav__link">
4352
+ <span class="md-ellipsis">
4353
+
4354
+ Plugin hook method pre_test_fixture_register(arg_hash)
4355
+
4356
+ </span>
4357
+ </a>
4358
+
4095
4359
  </li>
4096
4360
 
4097
4361
  <li class="md-nav__item">
@@ -4103,6 +4367,17 @@
4103
4367
  </span>
4104
4368
  </a>
4105
4369
 
4370
+ </li>
4371
+
4372
+ <li class="md-nav__item">
4373
+ <a href="#plugin-hook-method-explain_test_crasharg_hash" class="md-nav__link">
4374
+ <span class="md-ellipsis">
4375
+
4376
+ Plugin hook method explain_test_crash(arg_hash)
4377
+
4378
+ </span>
4379
+ </a>
4380
+
4106
4381
  </li>
4107
4382
 
4108
4383
  <li class="md-nav__item">
@@ -4175,7 +4450,7 @@
4175
4450
  <a href="#validating-a-plugins-tools" class="md-nav__link">
4176
4451
  <span class="md-ellipsis">
4177
4452
 
4178
- Validating a plugin's tools
4453
+ Validating a plugin’s tools
4179
4454
 
4180
4455
  </span>
4181
4456
  </a>
@@ -4191,6 +4466,78 @@
4191
4466
  </span>
4192
4467
  </a>
4193
4468
 
4469
+ </li>
4470
+
4471
+ <li class="md-nav__item">
4472
+ <a href="#test-results-report-templates" class="md-nav__link">
4473
+ <span class="md-ellipsis">
4474
+
4475
+ Test results report templates
4476
+
4477
+ </span>
4478
+ </a>
4479
+
4480
+ <nav class="md-nav" aria-label="Test results report templates">
4481
+ <ul class="md-nav__list">
4482
+
4483
+ <li class="md-nav__item">
4484
+ <a href="#supplying-a-template" class="md-nav__link">
4485
+ <span class="md-ellipsis">
4486
+
4487
+ Supplying a template
4488
+
4489
+ </span>
4490
+ </a>
4491
+
4492
+ </li>
4493
+
4494
+ <li class="md-nav__item">
4495
+ <a href="#supported-syntax" class="md-nav__link">
4496
+ <span class="md-ellipsis">
4497
+
4498
+ Supported syntax
4499
+
4500
+ </span>
4501
+ </a>
4502
+
4503
+ </li>
4504
+
4505
+ <li class="md-nav__item">
4506
+ <a href="#newline-trimming" class="md-nav__link">
4507
+ <span class="md-ellipsis">
4508
+
4509
+ Newline trimming
4510
+
4511
+ </span>
4512
+ </a>
4513
+
4514
+ </li>
4515
+
4516
+ <li class="md-nav__item">
4517
+ <a href="#what-a-template-can-reference" class="md-nav__link">
4518
+ <span class="md-ellipsis">
4519
+
4520
+ What a template can reference
4521
+
4522
+ </span>
4523
+ </a>
4524
+
4525
+ </li>
4526
+
4527
+ <li class="md-nav__item">
4528
+ <a href="#unsupported-syntax" class="md-nav__link">
4529
+ <span class="md-ellipsis">
4530
+
4531
+ Unsupported syntax
4532
+
4533
+ </span>
4534
+ </a>
4535
+
4536
+ </li>
4537
+
4538
+ </ul>
4539
+ </nav>
4540
+
4194
4541
  </li>
4195
4542
 
4196
4543
  </ul>
@@ -4396,6 +4743,28 @@
4396
4743
  </span>
4397
4744
  </a>
4398
4745
 
4746
+ </li>
4747
+
4748
+ <li class="md-nav__item">
4749
+ <a href="#delta-build-hooks" class="md-nav__link">
4750
+ <span class="md-ellipsis">
4751
+
4752
+ Delta build hooks
4753
+
4754
+ </span>
4755
+ </a>
4756
+
4757
+ </li>
4758
+
4759
+ <li class="md-nav__item">
4760
+ <a href="#plugin-hook-method-pre_test_compile_registerarg_hash" class="md-nav__link">
4761
+ <span class="md-ellipsis">
4762
+
4763
+ Plugin hook method pre_test_compile_register(arg_hash)
4764
+
4765
+ </span>
4766
+ </a>
4767
+
4399
4768
  </li>
4400
4769
 
4401
4770
  <li class="md-nav__item">
@@ -4407,6 +4776,17 @@
4407
4776
  </span>
4408
4777
  </a>
4409
4778
 
4779
+ </li>
4780
+
4781
+ <li class="md-nav__item">
4782
+ <a href="#plugin-hook-method-pre_test_link_registerarg_hash" class="md-nav__link">
4783
+ <span class="md-ellipsis">
4784
+
4785
+ Plugin hook method pre_test_link_register(arg_hash)
4786
+
4787
+ </span>
4788
+ </a>
4789
+
4410
4790
  </li>
4411
4791
 
4412
4792
  <li class="md-nav__item">
@@ -4418,6 +4798,17 @@
4418
4798
  </span>
4419
4799
  </a>
4420
4800
 
4801
+ </li>
4802
+
4803
+ <li class="md-nav__item">
4804
+ <a href="#plugin-hook-method-pre_test_fixture_registerarg_hash" class="md-nav__link">
4805
+ <span class="md-ellipsis">
4806
+
4807
+ Plugin hook method pre_test_fixture_register(arg_hash)
4808
+
4809
+ </span>
4810
+ </a>
4811
+
4421
4812
  </li>
4422
4813
 
4423
4814
  <li class="md-nav__item">
@@ -4429,6 +4820,17 @@
4429
4820
  </span>
4430
4821
  </a>
4431
4822
 
4823
+ </li>
4824
+
4825
+ <li class="md-nav__item">
4826
+ <a href="#plugin-hook-method-explain_test_crasharg_hash" class="md-nav__link">
4827
+ <span class="md-ellipsis">
4828
+
4829
+ Plugin hook method explain_test_crash(arg_hash)
4830
+
4831
+ </span>
4832
+ </a>
4833
+
4432
4834
  </li>
4433
4835
 
4434
4836
  <li class="md-nav__item">
@@ -4501,7 +4903,7 @@
4501
4903
  <a href="#validating-a-plugins-tools" class="md-nav__link">
4502
4904
  <span class="md-ellipsis">
4503
4905
 
4504
- Validating a plugin's tools
4906
+ Validating a plugin’s tools
4505
4907
 
4506
4908
  </span>
4507
4909
  </a>
@@ -4517,6 +4919,78 @@
4517
4919
  </span>
4518
4920
  </a>
4519
4921
 
4922
+ </li>
4923
+
4924
+ <li class="md-nav__item">
4925
+ <a href="#test-results-report-templates" class="md-nav__link">
4926
+ <span class="md-ellipsis">
4927
+
4928
+ Test results report templates
4929
+
4930
+ </span>
4931
+ </a>
4932
+
4933
+ <nav class="md-nav" aria-label="Test results report templates">
4934
+ <ul class="md-nav__list">
4935
+
4936
+ <li class="md-nav__item">
4937
+ <a href="#supplying-a-template" class="md-nav__link">
4938
+ <span class="md-ellipsis">
4939
+
4940
+ Supplying a template
4941
+
4942
+ </span>
4943
+ </a>
4944
+
4945
+ </li>
4946
+
4947
+ <li class="md-nav__item">
4948
+ <a href="#supported-syntax" class="md-nav__link">
4949
+ <span class="md-ellipsis">
4950
+
4951
+ Supported syntax
4952
+
4953
+ </span>
4954
+ </a>
4955
+
4956
+ </li>
4957
+
4958
+ <li class="md-nav__item">
4959
+ <a href="#newline-trimming" class="md-nav__link">
4960
+ <span class="md-ellipsis">
4961
+
4962
+ Newline trimming
4963
+
4964
+ </span>
4965
+ </a>
4966
+
4967
+ </li>
4968
+
4969
+ <li class="md-nav__item">
4970
+ <a href="#what-a-template-can-reference" class="md-nav__link">
4971
+ <span class="md-ellipsis">
4972
+
4973
+ What a template can reference
4974
+
4975
+ </span>
4976
+ </a>
4977
+
4978
+ </li>
4979
+
4980
+ <li class="md-nav__item">
4981
+ <a href="#unsupported-syntax" class="md-nav__link">
4982
+ <span class="md-ellipsis">
4983
+
4984
+ Unsupported syntax
4985
+
4986
+ </span>
4987
+ </a>
4988
+
4989
+ </li>
4990
+
4991
+ </ul>
4992
+ </nav>
4993
+
4520
4994
  </li>
4521
4995
 
4522
4996
  </ul>
@@ -4609,17 +5083,17 @@
4609
5083
  <p>Naming and location conventions:</p>
4610
5084
  <ul>
4611
5085
  <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")
5086
+ <li>The plugin’s class name must be the camelized version (a.k.a. "bumpy case")
4613
5087
  of the plugin filename — <code>whiz_bang.rb</code> ➡️ <code>WhizBang</code>.</li>
4614
5088
  </ul>
4615
5089
  <p>This plugin option allows full programmatic ability connected to any of a number
4616
5090
  of predefined Ceedling build steps.</p>
4617
5091
  <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>
5092
+ <code>Plugin</code>, Ceedling’s plugin base class.</p>
4619
5093
  <h2 id="example-plugin-subclass">Example <code>Plugin</code> subclass</h2>
4620
5094
  <p>An incomplete <code>Plugin</code> subclass follows to illustrate the basics.</p>
4621
5095
  <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>
4622
- <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="nb">require</span><span class="w"> </span><span class="s1">&#39;ceedling/plugins/plugin&#39;</span>
5096
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="nb">require</span><span class="w"> </span><span class="s1">'ceedling/plugins/plugin'</span>
4623
5097
  <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>
4624
5098
  <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="k">class</span><span class="w"> </span><span class="nc">WhizBang</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="no">Plugin</span>
4625
5099
  <a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="w"> </span><span class="k">def</span><span class="w"> </span><span class="nf">setup</span>
@@ -4698,7 +5172,7 @@ one difference.</p>
4698
5172
  <p>In the <code>post_</code> hook, the <code>arg_hash</code> parameter will contain a <code>shell_result</code> key
4699
5173
  whose associated value is itself a hash with the following contents:</p>
4700
5174
  <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="p">{</span>
4701
- <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="w"> </span><span class="ss">:output</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;Console output&gt;&quot;</span><span class="p">,</span><span class="w"> </span><span class="c1"># String holding any $stdout / redirected $stderr output</span>
5175
+ <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="w"> </span><span class="ss">:output</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;Console output&gt;"</span><span class="p">,</span><span class="w"> </span><span class="c1"># String holding any $stdout / redirected $stderr output</span>
4702
5176
  <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span><span class="ss">:status</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="no">Process</span><span class="o">::</span><span class="no">Status</span><span class="o">&gt;</span><span class="p">,</span><span class="w"> </span><span class="c1"># Ruby object of type Process::Status</span>
4703
5177
  <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="w"> </span><span class="ss">:exit_code</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="n">int</span><span class="o">&gt;</span><span class="p">,</span><span class="w"> </span><span class="c1"># Command line exit code (extracted from :status object)</span>
4704
5178
  <a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="w"> </span><span class="ss">:time</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="n">float</span><span class="o">&gt;</span><span class="w"> </span><span class="c1"># Seconds elapsed for shell operation</span>
@@ -4708,7 +5182,7 @@ whose associated value is itself a hash with the following contents:</p>
4708
5182
  <p class="admonition-title">Preprocessing Hook Limitations</p>
4709
5183
  <p>Test preprocessing steps are quite sophisticated and involve various combinations
4710
5184
  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
5185
+ Future updates to Ceedling’s plugin system will create a more robust means of
4712
5186
  attaching custom behaviors to test preprocessing or connecting your own
4713
5187
  preprocessing pipeline with toolchains other than GCC.</p>
4714
5188
  </div>
@@ -4721,11 +5195,11 @@ number of mocks in a test build.</p>
4721
5195
  <p>The argument <code>arg_hash</code> follows the structure below:</p>
4722
5196
  <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
4723
5197
  <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="c1"># Filepath of header file to be preprocessed on its way to being mocked</span>
4724
- <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="ss">:header_file</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>
5198
+ <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="ss">:header_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4725
5199
  <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span><span class="c1"># Filepath of processed header file</span>
4726
- <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="ss">:preprocessed_header_file</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>
5200
+ <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="ss">:preprocessed_header_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4727
5201
  <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="w"> </span><span class="c1"># Filepath of tests C file the mock will be used by</span>
4728
- <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="w"> </span><span class="ss">:test</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>
5202
+ <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="w"> </span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4729
5203
  <a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="w"> </span><span class="c1"># List of flags to be provided to `cpp` GNU preprocessor tool</span>
4730
5204
  <a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></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>
4731
5205
  <a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="w"> </span><span class="c1"># List of search paths to be provided to `cpp` GNU preprocessor tool</span>
@@ -4743,11 +5217,11 @@ files in a test build.</p>
4743
5217
  <p>The argument <code>arg_hash</code> follows the structure below:</p>
4744
5218
  <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
4745
5219
  <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span><span class="c1"># Filepath of C test file to be preprocessed on its way to being used to generate runner</span>
4746
- <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w"> </span><span class="ss">:test_file</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>
5220
+ <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w"> </span><span class="ss">:test_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4747
5221
  <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="w"> </span><span class="c1"># Filepath of processed tests file</span>
4748
- <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="w"> </span><span class="ss">:preprocessed_test_file</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>
5222
+ <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="w"> </span><span class="ss">:preprocessed_test_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4749
5223
  <a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="w"> </span><span class="c1"># Filepath of tests C file the mock will be used by</span>
4750
- <a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a><span class="w"> </span><span class="ss">:test</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>
5224
+ <a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a><span class="w"> </span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4751
5225
  <a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a><span class="w"> </span><span class="c1"># List of flags to be provided to `cpp` GNU preprocessor tool</span>
4752
5226
  <a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></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>
4753
5227
  <a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a><span class="w"> </span><span class="c1"># List of search paths to be provided to `cpp` GNU preprocessor tool</span>
@@ -4764,14 +5238,14 @@ build.</p>
4764
5238
  <p>The argument <code>arg_hash</code> follows the structure below:</p>
4765
5239
  <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="n">arg_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
4766
5240
  <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="c1"># Filepath of the header file being mocked.</span>
4767
- <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="w"> </span><span class="ss">:header_file</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>
5241
+ <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="w"> </span><span class="ss">:header_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4768
5242
  <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="w"> </span><span class="c1"># Additional context passed by the calling function.</span>
4769
5243
  <a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="w"> </span><span class="c1"># Ceedling passes the :test symbol by default while plugins may provide another</span>
4770
5244
  <a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></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>
4771
5245
  <a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="w"> </span><span class="c1"># Filepath of the tests C file that references the requested mock</span>
4772
- <a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="w"> </span><span class="ss">:test</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>
5246
+ <a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="w"> </span><span class="ss">:test</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4773
5247
  <a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a><span class="w"> </span><span class="c1"># Filepath of the generated mock C code.</span>
4774
- <a id="__codelineno-6-10" name="__codelineno-6-10" href="#__codelineno-6-10"></a><span class="w"> </span><span class="ss">:output_path</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">&quot;&lt;filepath&gt;&quot;</span>
5248
+ <a id="__codelineno-6-10" name="__codelineno-6-10" href="#__codelineno-6-10"></a><span class="w"> </span><span class="ss">:output_path</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span>
4775
5249
  <a id="__codelineno-6-11" name="__codelineno-6-11" href="#__codelineno-6-11"></a><span class="p">}</span>
4776
5250
  </code></pre></div>
4777
5251
  <h2 id="plugin-hook-methods-pre_runner_generatearg_hash-and-post_runner_generatearg_hash"><code>Plugin</code> hook methods <code>pre_runner_generate(arg_hash)</code> and <code>post_runner_generate(arg_hash)</code></h2>
@@ -4786,42 +5260,90 @@ called a number of times equal to the number of test files in a test build.</p>
4786
5260
  <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="w"> </span><span class="c1"># Ceedling passes the :test symbol by default while plugins may provide another</span>
4787
5261
  <a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></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>
4788
5262
  <a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a><span class="w"> </span><span class="c1"># Filepath of the tests C file.</span>
4789
- <a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a><span class="w"> </span><span class="ss">:test_file</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>
5263
+ <a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a><span class="w"> </span><span class="ss">:test_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4790
5264
  <a id="__codelineno-7-7" name="__codelineno-7-7" href="#__codelineno-7-7"></a><span class="w"> </span><span class="c1"># Filepath of the test file to be processed (if preprocessing enabled, this is not the same as :test_file). </span>
4791
- <a id="__codelineno-7-8" name="__codelineno-7-8" href="#__codelineno-7-8"></a><span class="w"> </span><span class="ss">:input_file</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>
5265
+ <a id="__codelineno-7-8" name="__codelineno-7-8" href="#__codelineno-7-8"></a><span class="w"> </span><span class="ss">:input_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s2">"&lt;filepath&gt;"</span><span class="p">,</span>
4792
5266
  <a id="__codelineno-7-9" name="__codelineno-7-9" href="#__codelineno-7-9"></a><span class="w"> </span><span class="c1"># Filepath of the generated tests runner file.</span>
4793
- <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>
5267
+ <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">"&lt;filepath&gt;"</span>
4794
5268
  <a id="__codelineno-7-11" name="__codelineno-7-11" href="#__codelineno-7-11"></a><span class="p">}</span>
4795
5269
  </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>
5270
+ <h2 id="delta-build-hooks">Delta build hooks</h2>
5271
+ <p>Ceedling skips work when nothing has changed. This is called a delta build.
5272
+ See <a href="../../getting-started/builds.html">Delta Builds</a> for the full picture.</p>
5273
+ <p>Three hook methods run before Ceedling checks delta build state for a
5274
+ target. Each one always runs, for every target, whether or not that target
5275
+ turns out to need rebuilding. A plugin uses one of these hooks to swap in
5276
+ its own tool for its own build context. Doing the swap here, not only in
5277
+ the matching <code>pre_*_execute</code> hook below, makes sure Ceedling’s delta build
5278
+ check sees the real tool. Otherwise a change to that tool’s own settings
5279
+ will not force a rebuild.</p>
5280
+ <h2 id="plugin-hook-method-pre_test_compile_registerarg_hash"><code>Plugin</code> hook method <code>pre_test_compile_register(arg_hash)</code></h2>
5281
+ <p>Test builds only, not release builds. Runs once per C file in a test build.
5282
+ Runs before Ceedling registers the file as a delta build target.</p>
4800
5283
  <p>The argument <code>arg_hash</code> follows the structure below:</p>
4801
5284
  <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
5285
  <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
- <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>
5286
+ <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 ':tools' in the Project Configuration Reference</span>
4804
5287
  <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>
5288
+ <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
5289
  <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>
5290
+ <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>
5291
+ <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">"&lt;name&gt;"</span><span class="p">,</span>
5292
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5293
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5294
+ <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>
5295
+ <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>
5296
+ <a id="__codelineno-8-13" name="__codelineno-8-13" href="#__codelineno-8-13"></a><span class="p">}</span>
5297
+ </code></pre></div>
5298
+ <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>
5299
+ <p>These methods are called before and after source file compilation. These are
5300
+ called in both test and release builds. This pair of methods is called a number
5301
+ of times equal to the number of C files in a test or release build.</p>
5302
+ <p>The argument <code>arg_hash</code> follows the structure below:</p>
5303
+ <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>
5304
+ <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>
5305
+ <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 ':tools' in the Project Configuration Reference</span>
5306
+ <a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="w"> </span><span class="p">},</span>
5307
+ <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>
5308
+ <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>
5309
+ <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>
5310
+ <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>
5311
+ <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>
5312
+ <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>
5313
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5314
+ <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>
5315
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5316
+ <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>
5317
+ <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>
5318
+ <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>
5319
+ <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>
5320
+ <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>
5321
+ <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>
5322
+ <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>
5323
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5324
+ <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>
5325
+ <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">"&lt;filepath&gt;"</span>
5326
+ <a id="__codelineno-9-24" name="__codelineno-9-24" href="#__codelineno-9-24"></a><span class="p">}</span>
5327
+ </code></pre></div>
5328
+ <h2 id="plugin-hook-method-pre_test_link_registerarg_hash"><code>Plugin</code> hook method <code>pre_test_link_register(arg_hash)</code></h2>
5329
+ <p>Test builds only, not release builds. Runs once per test executable in a
5330
+ test build. Runs before Ceedling registers the executable as a delta build
5331
+ target. See <a href="#delta-build-hooks">Delta build hooks</a> above for why this hook
5332
+ exists and when it runs.</p>
5333
+ <p>A plugin swapping in its own linker tool for its own build context should
5334
+ do so here, for the same reason described under <code>pre_test_compile_register</code>
5335
+ above. Because this hook always runs, it also gives a plugin a reliable
5336
+ place to note that its own build context ran at all, apart from whether
5337
+ anything actually needed relinking.</p>
5338
+ <p>The argument <code>arg_hash</code> follows the structure below:</p>
5339
+ <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>
5340
+ <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>
5341
+ <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 ':tools' in the Project Configuration Reference</span>
5342
+ <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="p">},</span>
5343
+ <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>
5344
+ <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>
5345
+ <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">"&lt;filepath&gt;"</span>
5346
+ <a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="p">}</span>
4825
5347
  </code></pre></div>
4826
5348
  <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
5349
  <p>These methods are called before and after linking an executable. These are
@@ -4830,27 +5352,58 @@ executable and each release artifact. This pair of methods is called a number
4830
5352
  of times equal to the number of test files in a test build or release artifacts
4831
5353
  in a release build.</p>
4832
5354
  <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>
5355
+ <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>
5356
+ <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>
5357
+ <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>
5358
+ <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 ':tools' in the Project Configuration Reference</span>
5359
+ <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="w"> </span><span class="p">},</span>
5360
+ <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>
5361
+ <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>
5362
+ <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>
5363
+ <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>
5364
+ <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>
5365
+ <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>
5366
+ <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>
5367
+ <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>
5368
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5369
+ <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>
5370
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5371
+ <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>
5372
+ <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>
5373
+ <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>
5374
+ <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>
5375
+ <a id="__codelineno-11-21" name="__codelineno-11-21" href="#__codelineno-11-21"></a><span class="p">}</span>
5376
+ </code></pre></div>
5377
+ <h2 id="plugin-hook-method-pre_test_fixture_registerarg_hash"><code>Plugin</code> hook method <code>pre_test_fixture_register(arg_hash)</code></h2>
5378
+ <p>Runs once per test executable. Runs before Ceedling registers the test run
5379
+ as a delta build target. See <a href="#delta-build-hooks">Delta build hooks</a> above
5380
+ for why this hook exists and when it runs.</p>
5381
+ <p>A plugin swapping in its own wrapper tool to run the test executable (as
5382
+ Valgrind does) should do so here, for the same reason described under
5383
+ <code>pre_test_compile_register</code> above. Otherwise a change to that wrapper tool’s own
5384
+ settings will not force a rerun.</p>
5385
+ <p>A wrapper tool runs the test executable as one of its own arguments. Ceedling
5386
+ places Unity’s test case filters (from <code>--test-case</code>, <code>--exclude_test_case</code>, and
5387
+ backtrace reruns) after the tool’s arguments, where the executable is.</p>
5388
+ <p>A crashed test executable reruns one test case at a time when
5389
+ <code>:use_backtrace</code> is <code>:simple</code>. By default the reruns go through Ceedling’s own
5390
+ backtrace tool, not a swapped wrapper. A wrapper the reruns should run through
5391
+ too (as the Sanitize plugin’s does, to keep its runtime options) sets
5392
+ <code>:backtrace_rerun =&gt; true</code> in its tool hash. Such a tool can't run under gdb, so
5393
+ <code>:gdb</code> backtraces fall back to <code>:simple</code> for it, with a notice. Leave the key out
5394
+ for a wrapper that writes one report per test, as Valgrind’s does, since each
5395
+ rerun would overwrite it.</p>
5396
+ <p>The argument <code>arg_hash</code> follows the structure below:</p>
5397
+ <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>
5398
+ <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>
5399
+ <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 ':tools' in the Project Configuration Reference</span>
5400
+ <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a><span class="w"> </span><span class="p">},</span>
5401
+ <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>
5402
+ <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">"&lt;name&gt;"</span><span class="p">,</span>
5403
+ <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>
5404
+ <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>
5405
+ <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">"&lt;filepath&gt;"</span>
5406
+ <a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a><span class="p">}</span>
4854
5407
  </code></pre></div>
4855
5408
  <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
5409
  <p>These methods are called before and after running a test executable. If a build
@@ -4858,23 +5411,56 @@ does not include tests, these are not called. This pair of methods is called
4858
5411
  for each test executable in a build (each test file is ultimately built into a
4859
5412
  test executable).</p>
4860
5413
  <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>
5414
+ <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>
5415
+ <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>
5416
+ <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>
5417
+ <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 ':tools' in the Project Configuration Reference</span>
5418
+ <a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a><span class="w"> </span><span class="p">},</span>
5419
+ <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>
5420
+ <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>
5421
+ <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>
5422
+ <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; 'TestIness')</span>
5423
+ <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">"&lt;name&gt;"</span><span class="p">,</span>
5424
+ <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>
5425
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5426
+ <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>
5427
+ <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">"&lt;filepath&gt;"</span><span class="p">,</span>
5428
+ <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>
5429
+ <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">"&lt;filepath&gt;"</span>
5430
+ <a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a><span class="p">}</span>
5431
+ </code></pre></div>
5432
+ <h2 id="plugin-hook-method-explain_test_crasharg_hash"><code>Plugin</code> hook method <code>explain_test_crash(arg_hash)</code></h2>
5433
+ <p>Called when a test executable crashed, before Ceedling writes the crash as test
5434
+ failures. A plugin that recognizes the cause, such as a sanitizer’s report in the
5435
+ run’s output, sets <code>arg_hash[:explanation]</code> to a short message. That message
5436
+ replaces the generic crash message in the test’s failure, except with <code>:gdb</code>
5437
+ backtraces, whose failures carry gdb’s own trace. It also replaces Ceedling’s
5438
+ generic crash notice and its backtrace advice.</p>
5439
+ <p>Two optional keys shape the notice:</p>
5440
+ <ul>
5441
+ <li><code>:explanation_heading</code> completes its first line, “Test executable <code>x</code> …”.
5442
+ Without it, the line ends “crashed.”</li>
5443
+ <li><code>:explanation_details</code> lists lines that follow the cause, such as where a
5444
+ log is. The failure message adds them in parentheses.</li>
5445
+ </ul>
5446
+ <p>With <code>:use_backtrace</code> set to <code>:simple</code>, it is called again for each rerun that
5447
+ crashes, with that rerun’s own shell result, so each crashed test case can be
5448
+ explained on its own.</p>
5449
+ <p>The argument <code>arg_hash</code> holds the same keys as <code>pre_test_fixture_execute</code> above,
5450
+ plus:</p>
5451
+ <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>
5452
+ <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>
5453
+ <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>
5454
+ <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>
5455
+ <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>
5456
+ <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>
5457
+ <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's main run, whose explanation reaches the crash notice;</span>
5458
+ <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>
5459
+ <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>
5460
+ <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>
5461
+ <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>
5462
+ <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>
5463
+ <a id="__codelineno-14-13" name="__codelineno-14-13" href="#__codelineno-14-13"></a><span class="p">}</span>
4878
5464
  </code></pre></div>
4879
5465
  <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
5466
  <p>These methods are called before and after performing all steps needed to run a
@@ -4889,6 +5475,10 @@ termination points, including early exit due to a build error.</p>
4889
5475
  <p>The argument <code>context</code> is the build context symbol (e.g. <code>:test</code>, <code>:gcov</code>) that
4890
5476
  was passed to <code>TestInvoker#setup_and_invoke</code>. This lets a plugin respond
4891
5477
  differently depending on which kind of build triggered the pipeline.</p>
5478
+ <p>Each context also gets its own separate delta build cache. A plugin that
5479
+ runs its own build under a distinct context symbol keeps that build’s
5480
+ tracked state apart from ordinary test builds and from any other plugin’s
5481
+ builds. See <a href="../../getting-started/builds.html">Delta Builds</a> for more.</p>
4892
5482
  <p>The argument <code>timestamp_s</code> is a floating-point stopwatch value in seconds
4893
5483
  (from <code>SystemWrapper.time_stopwatch_s</code>). Compare the <code>pre_test_build</code> and
4894
5484
  <code>post_test_build</code> timestamps to compute the total test build duration using
@@ -4918,27 +5508,27 @@ cases is not a build error.</p>
4918
5508
  <p>This method is called when invoking the summary task, <code>ceedling summary</code>. This
4919
5509
  method facilitates logging the results of the last build without running the
4920
5510
  previous build again.</p>
4921
- <h2 id="validating-a-plugins-tools">Validating a plugin's tools</h2>
5511
+ <h2 id="validating-a-plugins-tools">Validating a plugin’s tools</h2>
4922
5512
  <p>By default, Ceedling validates configured tools at startup according to a
4923
5513
  simple setting within the tool definition. This works just fine for default
4924
5514
  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
5515
+ relevant to a plugin’s operation depending on its configurable options. It’s
4926
5516
  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
5517
+ Ceedling can't find it in your <code>$PATH</code>. Similarly, it’s irresponsible to skip
4928
5518
  validating a tool just because it may not be needed.</p>
4929
5519
  <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
5520
+ <code>@ceedling[:tool_validator].validate()</code> can be forced to ignore a tool’s
4931
5521
  <code>required:</code> setting to validate it. In such a scenario, a plugin should
4932
5522
  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>
5523
+ plugin startup if the plugin’s configuration options require said tool.</p>
4934
5524
  <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>
5525
+ <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>
5526
+ <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>
5527
+ <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>
5528
+ <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>
5529
+ <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>
5530
+ <a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a><span class="w"> </span><span class="p">)</span>
5531
+ <a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a><span class="k">end</span>
4942
5532
  </code></pre></div>
4943
5533
  <p>The tool <code>TOOLS_GCOV_SUMMARY</code> is defined with a Ruby hash in the plugin code.
4944
5534
  It is configured with <code>:optional =&gt; true</code>. At plugin startup, configuration
@@ -4950,73 +5540,221 @@ utility method is available for this purpose.</p>
4950
5540
  <p><code>@ceedling[:plugin_reportinator].assemble_test_results()</code></p>
4951
5541
  <p>This method takes as an argument a list of results filepaths. These typically
4952
5542
  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
5543
+ given test build. It’s common for this list of filepaths to be assembled from
4954
5544
  the <code>post_test_fixture_execute</code> build step execution hook.</p>
4955
5545
  <p>The data that <code>assemble_test_results()</code> returns has a structure as follows. In
4956
5546
  this example, actual results from a single, real test file are presented as
4957
5547
  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>
5548
+ <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>
5549
+ <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>
5550
+ <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>
5551
+ <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="w"> </span><span class="s2">"test/TestUsartModel.c"</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>
5552
+ <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="w"> </span><span class="p">},</span>
5553
+ <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a>
5554
+ <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>
5555
+ <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>
5556
+ <a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a><span class="w"> </span><span class="p">{</span>
5557
+ <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">"test/TestUsartModel.c"</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">"test"</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">"TestUsartModel.c"</span><span class="p">},</span>
5558
+ <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>
5559
+ <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>
5560
+ <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>
5561
+ <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">"testCase1"</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">""</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>
5562
+ <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">"testCase2"</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">""</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>
5563
+ <a id="__codelineno-16-16" name="__codelineno-16-16" href="#__codelineno-16-16"></a><span class="w"> </span><span class="o">]</span>
5564
+ <a id="__codelineno-16-17" name="__codelineno-16-17" href="#__codelineno-16-17"></a><span class="w"> </span><span class="p">}</span>
5565
+ <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>
5566
+ <a id="__codelineno-16-19" name="__codelineno-16-19" href="#__codelineno-16-19"></a>
5567
+ <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>
5568
+ <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>
5569
+ <a id="__codelineno-16-22" name="__codelineno-16-22" href="#__codelineno-16-22"></a><span class="w"> </span><span class="p">{</span>
5570
+ <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">"test/TestUsartModel.c"</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">"test"</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">"TestUsartModel.c"</span><span class="p">},</span>
5571
+ <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>
5572
+ <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">"testCase3"</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">"&lt;failure message&gt;"</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>
5573
+ <a id="__codelineno-16-26" name="__codelineno-16-26" href="#__codelineno-16-26"></a><span class="w"> </span><span class="o">]</span>
5574
+ <a id="__codelineno-16-27" name="__codelineno-16-27" href="#__codelineno-16-27"></a><span class="w"> </span><span class="p">}</span>
5575
+ <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>
5576
+ <a id="__codelineno-16-29" name="__codelineno-16-29" href="#__codelineno-16-29"></a>
5577
+ <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>
5578
+ <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>
5579
+ <a id="__codelineno-16-32" name="__codelineno-16-32" href="#__codelineno-16-32"></a><span class="w"> </span><span class="p">{</span>
5580
+ <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">"test/TestUsartModel.c"</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">"test"</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">"TestUsartModel.c"</span><span class="p">},</span>
5581
+ <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>
5582
+ <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">"testCase4"</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">""</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>
5583
+ <a id="__codelineno-16-36" name="__codelineno-16-36" href="#__codelineno-16-36"></a><span class="w"> </span><span class="o">]</span>
5584
+ <a id="__codelineno-16-37" name="__codelineno-16-37" href="#__codelineno-16-37"></a><span class="w"> </span><span class="p">}</span>
5585
+ <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>
5586
+ <a id="__codelineno-16-39" name="__codelineno-16-39" href="#__codelineno-16-39"></a>
5587
+ <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>
5588
+ <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>
5589
+ <a id="__codelineno-16-42" name="__codelineno-16-42" href="#__codelineno-16-42"></a><span class="w"> </span><span class="p">{</span>
5590
+ <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">"test/TestUsartModel.c"</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">"test"</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">"TestUsartModel.c"</span><span class="p">},</span>
5591
+ <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>
5592
+ <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>
5593
+ <a id="__codelineno-16-46" name="__codelineno-16-46" href="#__codelineno-16-46"></a><span class="w"> </span><span class="s2">"&lt;$stdout string (e.g. printf() call)&gt;"</span>
5594
+ <a id="__codelineno-16-47" name="__codelineno-16-47" href="#__codelineno-16-47"></a><span class="w"> </span><span class="o">]</span>
5595
+ <a id="__codelineno-16-48" name="__codelineno-16-48" href="#__codelineno-16-48"></a><span class="w"> </span><span class="p">}</span>
5596
+ <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>
5597
+ <a id="__codelineno-16-50" name="__codelineno-16-50" href="#__codelineno-16-50"></a>
5598
+ <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>
5599
+ <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>
5600
+ <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>
5601
+ <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>
5602
+ <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>
5603
+ <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>
5604
+ <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>
5605
+ <a id="__codelineno-16-58" name="__codelineno-16-58" href="#__codelineno-16-58"></a>
5606
+ <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>
5607
+ <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>
5608
+ <a id="__codelineno-16-61" name="__codelineno-16-61" href="#__codelineno-16-61"></a><span class="p">}</span>
5019
5609
  </code></pre></div>
5610
+ <h2 id="test-results-report-templates">Test results report templates</h2>
5611
+ <p>Ceedling renders test results reports from templates. A plugin that prints test
5612
+ results supplies a template, and Ceedling compiles these templates with its own
5613
+ compiler rather than with ERB.</p>
5614
+ <p>ERB was removed as a Ceedling dependency in 1.2.0. The template language Ceedling
5615
+ accepts is now a deliberate subset of what ERB accepted. Every template Ceedling
5616
+ ships stays within that subset. A template written for an earlier Ceedling works
5617
+ unchanged if it does the same.</p>
5618
+ <h3 id="supplying-a-template">Supplying a template</h3>
5619
+ <p>A <code>ReportTestsStdoutPlugin</code> subclass supplies a template by overriding the private
5620
+ <code>load_template</code> method. That method returns the template as a String. The base
5621
+ class registers the template during <code>setup()</code> and owns every build step hook, so a
5622
+ subclass needs nothing else.</p>
5623
+ <p>The default <code>load_template</code> reads <code>assets/test_results.template</code> from the plugin’s
5624
+ own root path. It falls back to the historical <code>assets/template.erb</code> name when only
5625
+ that older file exists. A plugin shipping the old filename therefore keeps working.</p>
5626
+ <p>Every stock stdout report plugin uses the asset file default.
5627
+ <code>report_tests_pretty_stdout</code> has an empty subclass body.</p>
5628
+ <p>A template can also call its own plugin object. Ceedling’s system objects include
5629
+ each loaded plugin, named for it, so a template reaches its plugin as
5630
+ <code>@ceedling[:&lt;plugin name&gt;]</code>. <code>report_tests_gtestlike_stdout</code> and
5631
+ <code>report_tests_ide_stdout</code> work this way. Their templates hand results to plugin
5632
+ methods that build lines in Ruby. That keeps formatting logic testable and
5633
+ configurable. Gcov, Bullseye, and Valgrind render test results through whichever
5634
+ template is registered, so they get the same lines.</p>
5635
+ <p>A plugin can also render a template directly. <code>@ceedling[:plugin_reportinator]</code>
5636
+ exposes <code>run_report(template, hash)</code> for this. The Bullseye plugin uses it to
5637
+ render its coverage summary from <code>assets/coverage.template</code>.</p>
5638
+ <h3 id="supported-syntax">Supported syntax</h3>
5639
+ <p>Five constructs are available, and two of them carry nearly every template. A
5640
+ percent sign in column zero introduces a line of Ruby. A <code>&lt;%= expression %&gt;</code> tag
5641
+ inserts that expression’s value into the output.</p>
5642
+ <table>
5643
+ <thead>
5644
+ <tr>
5645
+ <th>Construct</th>
5646
+ <th>Effect</th>
5647
+ </tr>
5648
+ </thead>
5649
+ <tbody>
5650
+ <tr>
5651
+ <td><code>% ruby_code</code></td>
5652
+ <td>Executes the line as Ruby. Nothing is emitted.</td>
5653
+ </tr>
5654
+ <tr>
5655
+ <td><code>%%</code></td>
5656
+ <td>Emits one literal percent sign. Column zero only.</td>
5657
+ </tr>
5658
+ <tr>
5659
+ <td><code>&lt;%= expression %&gt;</code></td>
5660
+ <td>Emits the expression, converted with <code>to_s</code>.</td>
5661
+ </tr>
5662
+ <tr>
5663
+ <td><code>&lt;% ruby_code %&gt;</code></td>
5664
+ <td>Executes the code. Nothing is emitted.</td>
5665
+ </tr>
5666
+ <tr>
5667
+ <td><code>&lt;%# comment %&gt;</code></td>
5668
+ <td>Emits nothing.</td>
5669
+ </tr>
5670
+ </tbody>
5671
+ </table>
5672
+ <p>A percent sign is only special in column zero. Whitespace may follow it freely, so
5673
+ a template can indent Ruby lines to show nesting. A percent sign anywhere else on a
5674
+ line is literal text.</p>
5675
+ <p>All Ruby in a template shares one scope. A value assigned on a percent line is
5676
+ visible to every later line and tag, including across block boundaries.</p>
5677
+ <h3 id="newline-trimming">Newline trimming</h3>
5678
+ <p>A line whose first tag opens it and whose last tag closes it contributes no newline
5679
+ of its own. Text between those two tags does not change that. Every other line
5680
+ keeps its newline. Ceedling’s own templates depend on this behavior to control
5681
+ blank lines in report output.</p>
5682
+ <h3 id="what-a-template-can-reference">What a template can reference</h3>
5683
+ <p>Templates render against <code>PluginReportinator</code>’s own binding. The report data
5684
+ arrives as a local named <code>hash</code>. Global constants such as <code>TEST_SYM</code> resolve
5685
+ normally.</p>
5686
+ <p><code>@ceedling[:plugin_reportinator]</code> exposes several helpers intended for templates.</p>
5687
+ <table>
5688
+ <thead>
5689
+ <tr>
5690
+ <th>Helper</th>
5691
+ <th>Purpose</th>
5692
+ </tr>
5693
+ </thead>
5694
+ <tbody>
5695
+ <tr>
5696
+ <td><code>test_report_preamble(hash)</code></td>
5697
+ <td>Returns the counts and banner prefix every stdout report needs.</td>
5698
+ </tr>
5699
+ <tr>
5700
+ <td><code>generate_banner(text)</code></td>
5701
+ <td>Formats a section divider.</td>
5702
+ </tr>
5703
+ <tr>
5704
+ <td><code>generate_heading(text)</code></td>
5705
+ <td>Formats a heading.</td>
5706
+ </tr>
5707
+ <tr>
5708
+ <td><code>reflow_message(message, continuation_prefix)</code></td>
5709
+ <td>Indents the second and later lines of a multi-line message.</td>
5710
+ </tr>
5711
+ <tr>
5712
+ <td><code>decorate_summary_banner(text, failed_count)</code></td>
5713
+ <td>Colors a summary banner by outcome.</td>
5714
+ </tr>
5715
+ </tbody>
5716
+ </table>
5717
+ <h3 id="unsupported-syntax">Unsupported syntax</h3>
5718
+ <p>Four ERB constructs are unavailable. A template relying on any of them needs
5719
+ revision.</p>
5720
+ <table>
5721
+ <thead>
5722
+ <tr>
5723
+ <th>Construct</th>
5724
+ <th>Behavior</th>
5725
+ </tr>
5726
+ </thead>
5727
+ <tbody>
5728
+ <tr>
5729
+ <td><code>-%&gt;</code></td>
5730
+ <td>Raises <code>SyntaxError</code>. ERB offered this only under a trim mode Ceedling never used.</td>
5731
+ </tr>
5732
+ <tr>
5733
+ <td><code>&lt;%%</code></td>
5734
+ <td>Not an escape. The characters are not translated to a literal <code>&lt;%</code>.</td>
5735
+ </tr>
5736
+ <tr>
5737
+ <td>A tag spanning lines</td>
5738
+ <td>Raises <code>CeedlingException</code> naming the template line.</td>
5739
+ </tr>
5740
+ <tr>
5741
+ <td>A tag never closed on its line</td>
5742
+ <td>Raises <code>CeedlingException</code> naming the template line.</td>
5743
+ </tr>
5744
+ </tbody>
5745
+ </table>
5746
+ <p>The last two are deliberate. ERB accepted a multi-line tag. ERB also responded to
5747
+ an unclosed tag by treating the rest of the template as Ruby, which produced
5748
+ garbled output rather than an error. Naming the offending line is more useful to a
5749
+ template author than either behavior.</p>
5750
+ <div class="admonition warning">
5751
+ <p class="admonition-title">Porting a template written for ERB</p>
5752
+ <p>Ceedling’s own templates never used the unsupported constructs above, and
5753
+ neither did any template this project has seen. Check a template against the
5754
+ table before assuming it needs no changes. A Ruby error inside a template
5755
+ reports its location as <code>(ceedling template):&lt;line&gt;</code>, where the line number is
5756
+ the template’s own.</p>
5757
+ </div>
5020
5758
  <p><br/><br/></p>
5021
5759
 
5022
5760
 
@@ -5088,10 +5826,10 @@ hash/array Ruby code with comments and with some edits to reduce line length.</p
5088
5826
 
5089
5827
 
5090
5828
 
5091
- <script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script>
5829
+ <script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../../assets/javascripts/workers/search.a7633da7.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script>
5092
5830
 
5093
5831
 
5094
- <script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
5832
+ <script src="../../assets/javascripts/bundle.c21346df.min.js"></script>
5095
5833
 
5096
5834
 
5097
5835
  </body>