ceedling 1.1.10 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1131) 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 +51 -29
  8. data/Rakefile +768 -16
  9. data/assets/{project.yml → features/project.yml} +4 -1
  10. data/assets/fixtures/bullseye_branch_coverage/src/branchy.c +24 -0
  11. data/assets/fixtures/bullseye_branch_coverage/src/branchy.h +14 -0
  12. data/assets/fixtures/bullseye_branch_coverage/test/test_branchy.c +18 -0
  13. data/assets/fixtures/cppcheck_findings/findings.c +23 -0
  14. data/assets/fixtures/cppcheck_findings/findings.h +13 -0
  15. data/assets/fixtures/header_include_path_validation/alt_drivers/foo.h +6 -0
  16. data/assets/fixtures/header_include_path_validation/bar.h +6 -0
  17. data/assets/fixtures/header_include_path_validation/drivers/foo.h +6 -0
  18. data/assets/fixtures/header_include_path_validation/dup.h +6 -0
  19. data/assets/fixtures/header_include_path_validation/other_inc/dup.h +6 -0
  20. data/assets/fixtures/header_include_path_validation/test_ambiguous_mock.c +15 -0
  21. data/assets/fixtures/header_include_path_validation/test_bare_mock.c +11 -0
  22. data/assets/fixtures/header_include_path_validation/test_bogus_mock_path.c +11 -0
  23. data/assets/fixtures/header_include_path_validation/test_bogus_vanilla_path.c +10 -0
  24. data/assets/fixtures/header_include_path_validation/test_include_outranks_test_include_path.c +16 -0
  25. data/assets/fixtures/header_include_path_validation/test_pathed_mock.c +11 -0
  26. data/assets/fixtures/header_include_path_validation/test_pathed_mock_ambiguous.c +14 -0
  27. data/assets/fixtures/header_include_path_validation/test_test_include_path_outranks_include.c +17 -0
  28. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.c +6 -0
  29. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.h +6 -0
  30. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.c +6 -0
  31. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.h +6 -0
  32. data/assets/fixtures/implicit_source_header_correspondence/gamma/dup_gamma.c +6 -0
  33. data/assets/fixtures/implicit_source_header_correspondence/test_dup_alpha.c +10 -0
  34. data/assets/fixtures/implicit_source_header_correspondence/test_dup_bare.c +10 -0
  35. data/assets/fixtures/implicit_source_header_correspondence/test_dup_beta.c +10 -0
  36. data/assets/fixtures/implicit_source_header_correspondence/test_dup_override.c +19 -0
  37. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive.c +19 -0
  38. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive_noop.c +16 -0
  39. data/assets/fixtures/parent_directory_references/alpha/extra.c +4 -0
  40. data/assets/fixtures/parent_directory_references/common/helper.c +6 -0
  41. data/assets/fixtures/parent_directory_references/common/helper.h +6 -0
  42. data/assets/fixtures/parent_directory_references/unit/test_dotdot_include.c +10 -0
  43. data/assets/fixtures/parent_directory_references/unit/test_dotdot_source.c +16 -0
  44. data/assets/fixtures/plain_inline_module.h +9 -0
  45. data/assets/fixtures/same_named_modules/include/drivers/spi/config.h +6 -0
  46. data/assets/fixtures/same_named_modules/include/drivers/uart/config.h +6 -0
  47. data/assets/fixtures/same_named_modules/src/drivers/spi/config.c +8 -0
  48. data/assets/fixtures/same_named_modules/src/drivers/uart/config.c +10 -0
  49. data/assets/fixtures/same_named_modules/test/test_both_configs.c +26 -0
  50. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked.c +20 -0
  51. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked_traditional.c +19 -0
  52. data/assets/fixtures/same_named_modules/test/test_both_modules.c +19 -0
  53. data/assets/fixtures/same_named_modules/test/test_uart_config_bare.c +19 -0
  54. data/assets/fixtures/same_named_modules/test/test_uart_config_partial_only.c +20 -0
  55. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.c +6 -0
  56. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.h +6 -0
  57. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.c +6 -0
  58. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.h +6 -0
  59. data/assets/fixtures/sources_with_duplicate_basenames/main.c +11 -0
  60. data/assets/fixtures/sources_with_duplicate_basenames/test_baz_bar.c +10 -0
  61. data/assets/fixtures/sources_with_duplicate_basenames/test_both_bars.c +12 -0
  62. data/assets/fixtures/sources_with_duplicate_basenames/test_foo_bar.c +10 -0
  63. data/assets/{test_example_file_boom.c → fixtures/test_nosanitize_boom.c} +9 -0
  64. data/assets/{test_example_file_crash_assert.c → fixtures/test_nosanitize_crash_assert.c} +8 -0
  65. data/assets/{test_example_file_crash_sigsegv.c → fixtures/test_nosanitize_crash_sigsegv.c} +8 -0
  66. data/assets/{test_example_file_crash_sigsegv_with_param.c → fixtures/test_nosanitize_crash_sigsegv_with_param.c} +8 -0
  67. data/assets/fixtures/test_nosanitize_heap_buffer_overflow.c +31 -0
  68. data/assets/fixtures/test_nosanitize_leak.c +34 -0
  69. data/assets/fixtures/test_nosanitize_two_findings.c +36 -0
  70. data/assets/{test_example_file_ub_shift_overflow.c → fixtures/test_nosanitize_ub_shift_overflow.c} +9 -0
  71. data/assets/fixtures/test_plain_inline_module.c +15 -0
  72. data/assets/fixtures/test_source_file_duplicate_basenames/alpha/calc.c +4 -0
  73. data/assets/fixtures/test_source_file_duplicate_basenames/beta/calc.c +4 -0
  74. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_alpha.c +15 -0
  75. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_ambiguous.c +15 -0
  76. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_beta.c +15 -0
  77. data/assets/fixtures/tests_with_conditional_includes/src/feature_extra2.h +13 -0
  78. data/assets/fixtures/tests_with_conditional_includes/src/macro_target_extra.h +13 -0
  79. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.c +19 -3
  80. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.h +1 -0
  81. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.c +17 -1
  82. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget.c +12 -4
  83. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget_feature.c +8 -5
  84. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.c +7 -0
  85. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.h +6 -0
  86. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.c +16 -0
  87. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.h +6 -0
  88. data/assets/fixtures/tests_with_conditional_mocks/src/FeatureConfig.h +6 -0
  89. data/assets/fixtures/tests_with_conditional_mocks/src/Gpt.h +6 -0
  90. data/assets/fixtures/tests_with_conditional_mocks/src/MyModuleConfig.h +17 -0
  91. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart1.h +6 -0
  92. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart2.h +6 -0
  93. data/assets/fixtures/tests_with_conditional_mocks/src/drivers/widget.h +6 -0
  94. data/assets/fixtures/tests_with_conditional_mocks/src/reader.c +7 -0
  95. data/assets/fixtures/tests_with_conditional_mocks/src/reader.h +6 -0
  96. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01.c +21 -0
  97. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01_legacy.c +16 -0
  98. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_02.c +31 -0
  99. data/assets/fixtures/tests_with_conditional_mocks/test/test_FeatureConfig.c +15 -0
  100. data/assets/fixtures/tests_with_conditional_mocks/test/test_reader.c +13 -0
  101. data/assets/fixtures/tests_with_duplicate_test_names/integration/test_foo.c +21 -0
  102. data/assets/fixtures/tests_with_duplicate_test_names/unit/test_foo.c +21 -0
  103. data/assets/fixtures/tests_with_fallback_conditionals/src/conditional_module.c +28 -0
  104. data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/test/test_conditionals.c +8 -1
  105. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_lower.s +2 -0
  106. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_upper.S +13 -0
  107. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.c +13 -0
  108. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.h +13 -0
  109. data/assets/fixtures/tests_with_multiple_assembly_extensions/test/test_counter_module.c +27 -0
  110. data/assets/fixtures/tests_with_subdir_includes/src/module/app/config.h +13 -0
  111. data/assets/fixtures/tests_with_subdir_includes/src/module/drivers/config.h +13 -0
  112. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.c +30 -0
  113. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.h +13 -0
  114. data/assets/fixtures/tests_with_subdir_includes/src/shared/config.h +13 -0
  115. data/assets/fixtures/tests_with_subdir_includes/test/test_sensor.c +32 -0
  116. data/bin/actionator.rb +234 -0
  117. data/bin/app_cfg.rb +7 -0
  118. data/bin/cli.rb +78 -47
  119. data/bin/cli_handler.rb +89 -57
  120. data/bin/cli_helper.rb +90 -49
  121. data/bin/cli_options_transform.rb +22 -0
  122. data/bin/{configinator.rb → composinator.rb} +39 -32
  123. data/bin/mixin_resolvinator.rb +124 -0
  124. data/bin/mixin_standardizer.rb +31 -61
  125. data/bin/mixinator.rb +27 -29
  126. data/bin/mixins.rb +0 -5
  127. data/bin/objects.yml +20 -7
  128. data/bin/path_validator.rb +6 -5
  129. data/bin/projectinator.rb +51 -142
  130. data/bin/rake_patches.rb +36 -2
  131. data/bin/recursive_merger.rb +7 -1
  132. data/bin/versionator.rb +2 -3
  133. data/ceedling.gemspec +83 -12
  134. data/docs/BreakingChanges.md +46 -2
  135. data/docs/CONTRIBUTING.md +45 -29
  136. data/docs/CeedlingPullRequestChecklist.md +10 -9
  137. data/docs/Changelog.md +327 -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 +32 -0
  143. data/examples/temp_sensor/mixin/add_bullseye.yml +19 -0
  144. data/examples/wondrous_forest/README.md +3 -0
  145. data/examples/wondrous_forest/src/sensors/light/Calibration.c +21 -0
  146. data/examples/wondrous_forest/src/sensors/light/Calibration.h +14 -0
  147. data/examples/wondrous_forest/src/sensors/soil/Calibration.c +23 -0
  148. data/examples/wondrous_forest/src/sensors/soil/Calibration.h +14 -0
  149. data/examples/wondrous_forest/test/TestCalibration.c +39 -0
  150. data/lib/ceedling/batchinator.rb +81 -22
  151. data/lib/ceedling/c_extractor/README.md +61 -0
  152. data/lib/ceedling/c_extractor/c_extractor.rb +33 -2
  153. data/lib/ceedling/c_extractor/c_extractor_code_text.rb +18 -10
  154. data/lib/ceedling/c_extractor/c_extractor_constants.rb +10 -10
  155. data/lib/ceedling/c_extractor/c_extractor_declarations.rb +14 -14
  156. data/lib/ceedling/c_extractor/c_extractor_functions.rb +10 -13
  157. data/lib/ceedling/c_extractor/c_extractor_preprocessing.rb +77 -0
  158. data/lib/ceedling/c_extractor/c_extractor_types.rb +8 -5
  159. data/lib/ceedling/ceedling.h +33 -0
  160. data/lib/ceedling/config/config_matchinator.rb +36 -13
  161. data/lib/ceedling/config/configurator.rb +366 -530
  162. data/lib/ceedling/config/configurator_builder.rb +253 -365
  163. data/lib/ceedling/config/configurator_plugins.rb +68 -102
  164. data/lib/ceedling/config/configurator_setup.rb +343 -610
  165. data/lib/ceedling/config/configurator_validator.rb +114 -142
  166. data/lib/ceedling/config/line_marker_suppressors.rb +67 -0
  167. data/lib/ceedling/constants.rb +60 -6
  168. data/lib/ceedling/defaults.rb +28 -14
  169. data/lib/ceedling/defineinator.rb +9 -4
  170. data/lib/ceedling/dependencies/README.md +69 -0
  171. data/lib/ceedling/dependencies/dependency_cache_store.rb +160 -0
  172. data/lib/ceedling/dependencies/dependency_debug_tree.rb +129 -0
  173. data/lib/ceedling/dependencies/dependency_differ.rb +127 -0
  174. data/lib/ceedling/dependencies/dependency_hasher.rb +94 -0
  175. data/lib/ceedling/dependencies/dependency_path_normalizer.rb +80 -0
  176. data/lib/ceedling/dependencies/dependency_tracker.rb +405 -0
  177. data/lib/ceedling/dependencies/dependinator.rb +65 -0
  178. data/lib/ceedling/dependencies/gcc_dependency_parser.rb +86 -0
  179. data/lib/ceedling/encodinator.rb +23 -11
  180. data/lib/ceedling/file_finder.rb +373 -89
  181. data/lib/ceedling/file_finder_helper.rb +44 -33
  182. data/lib/ceedling/file_path_collection_utils.rb +17 -4
  183. data/lib/ceedling/file_path_utils.rb +310 -52
  184. data/lib/ceedling/file_wrapper.rb +245 -8
  185. data/lib/ceedling/filename_extension.rb +91 -0
  186. data/lib/ceedling/flaginator.rb +6 -2
  187. data/lib/ceedling/generators/generator.rb +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/rakefile.rb +2 -1
  231. data/lib/ceedling/{tasks_base.rake → rakefiles/base/tasks_base.rake} +1 -1
  232. data/lib/ceedling/{tasks_filesystem.rake → rakefiles/base/tasks_filesystem.rake} +3 -0
  233. data/lib/ceedling/rakefiles/release/rules_release.rake +52 -0
  234. data/lib/ceedling/{erb_wrapper.rb → rakefiles/release/tasks_release.rake} +5 -8
  235. data/lib/ceedling/rakefiles/tests/rules_tests.rake +43 -0
  236. data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +80 -0
  237. data/lib/ceedling/{tasks_tests.rake → rakefiles/tests/tasks_tests.rake} +11 -20
  238. data/lib/ceedling/rakefiles/tests/tasks_tests_generate.rake +55 -0
  239. data/lib/ceedling/release_invoker/README.md +35 -0
  240. data/lib/ceedling/release_invoker/release_build_executor.rb +263 -0
  241. data/lib/ceedling/release_invoker/release_build_planner.rb +80 -0
  242. data/lib/ceedling/release_invoker/release_invoker.rb +78 -0
  243. data/lib/ceedling/release_invoker/release_invoker_types.rb +40 -0
  244. data/lib/ceedling/reportinator.rb +18 -2
  245. data/lib/ceedling/ruby_expandinator.rb +40 -1
  246. data/lib/ceedling/setupinator.rb +9 -3
  247. data/lib/ceedling/system_wrapper.rb +17 -0
  248. data/lib/ceedling/templateinator.rb +146 -0
  249. data/lib/ceedling/test_context_extractor.rb +59 -28
  250. data/lib/ceedling/test_invoker/HEADER_COLLISIONS.md +41 -0
  251. data/lib/ceedling/test_invoker/PIPELINE.md +142 -0
  252. data/lib/ceedling/test_invoker/README.md +6 -0
  253. data/lib/ceedling/test_invoker/mock_locator.rb +49 -0
  254. data/lib/ceedling/test_invoker/partials_manager.rb +426 -0
  255. data/lib/ceedling/test_invoker/standin_headerinator.rb +136 -0
  256. data/lib/ceedling/test_invoker/test_bare_includes_extractinator.rb +117 -0
  257. data/lib/ceedling/test_invoker/test_build_executor.rb +783 -429
  258. data/lib/ceedling/test_invoker/test_build_planner.rb +175 -70
  259. data/lib/ceedling/test_invoker/test_build_setup.rb +132 -241
  260. data/lib/ceedling/test_invoker/test_build_validations.rb +102 -0
  261. data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +148 -0
  262. data/lib/ceedling/test_invoker/test_includes_extractinator.rb +34 -0
  263. data/lib/ceedling/test_invoker/test_includes_preprocessinator.rb +118 -0
  264. data/lib/ceedling/test_invoker/test_includes_reconcilinator.rb +149 -0
  265. data/lib/ceedling/test_invoker/test_invoker.rb +16 -183
  266. data/lib/ceedling/test_invoker/test_invoker_types.rb +85 -16
  267. data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +121 -0
  268. data/lib/ceedling/test_invoker/test_pipeline_manager.rb +303 -0
  269. data/lib/ceedling/test_invoker/test_runner_generatinator.rb +105 -0
  270. data/lib/ceedling/test_invoker/test_search_paths.rb +73 -0
  271. data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +78 -0
  272. data/lib/ceedling/tool_executor.rb +42 -13
  273. data/lib/ceedling/tool_executor_helper.rb +1 -1
  274. data/lib/ceedling/tool_validator.rb +124 -123
  275. data/lib/ceedling/yaml_wrapper.rb +5 -3
  276. data/lib/version.rb +19 -2
  277. data/mkdocs.prerelease.yml +42 -0
  278. data/mkdocs.yml +10 -2
  279. data/plugins/bullseye/bullseye.rake +70 -107
  280. data/plugins/bullseye/config/defaults.yml +12 -54
  281. data/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  282. data/plugins/bullseye/lib/bullseye.rb +511 -120
  283. data/plugins/bullseye/lib/bullseye_constants.rb +100 -0
  284. data/plugins/command_hooks/lib/command_hooks.rb +117 -199
  285. data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +72 -27
  286. data/plugins/cppcheck/config/defaults.yml +6 -1
  287. data/plugins/cppcheck/config/defaults_cppcheck.rb +5 -1
  288. data/plugins/cppcheck/cppcheck.rake +7 -1
  289. data/plugins/cppcheck/lib/cppcheck.rb +175 -26
  290. data/plugins/cppcheck/lib/cppcheck_constants.rb +12 -0
  291. data/plugins/cppcheck/lib/cppcheck_reports.rb +5 -1
  292. data/plugins/dependencies/Rakefile +14 -2
  293. data/plugins/dependencies/config/defaults.yml +9 -6
  294. data/plugins/dependencies/dependencies.rake +46 -76
  295. data/plugins/dependencies/example/boss/project.yml +1 -1
  296. data/plugins/dependencies/example/supervisor/project.yml +1 -1
  297. data/plugins/dependencies/example/version.tar.gzip +0 -0
  298. data/plugins/dependencies/lib/dependencies.rb +232 -427
  299. data/plugins/dependencies/lib/dependency_commands.rb +72 -0
  300. data/plugins/dependencies/lib/dependency_environment.rb +57 -0
  301. data/plugins/dependencies/lib/dependency_spec.rb +145 -0
  302. data/plugins/fff/.rspec +1 -0
  303. data/plugins/fff/Rakefile +14 -2
  304. data/plugins/fff/examples/fff_example/project.yml +1 -1
  305. data/plugins/fff/lib/fff.rb +30 -9
  306. data/plugins/fff/lib/fff_mock_generator.rb +142 -128
  307. data/plugins/fff/spec/fff_mock_header_generator_spec.rb +15 -0
  308. data/plugins/fff/spec/fff_mock_source_generator_spec.rb +14 -0
  309. data/plugins/fff/spec/spec_helper.rb +45 -0
  310. data/plugins/fff/src/fff_unity_helper.h +5 -0
  311. data/plugins/fff/vendor/fff/fakegen.rb +5 -4
  312. data/plugins/fff/vendor/fff/fff.h +4 -4
  313. data/plugins/gcov/config/defaults.yml +5 -0
  314. data/plugins/gcov/gcov.rake +12 -8
  315. data/plugins/gcov/lib/console_reportinator.rb +140 -20
  316. data/plugins/gcov/lib/gcov.rb +155 -60
  317. data/plugins/gcov/lib/gcov_constants.rb +4 -7
  318. data/plugins/gcov/lib/gcov_reportinator.rb +90 -0
  319. data/plugins/gcov/lib/gcov_types.rb +62 -1
  320. data/plugins/gcov/lib/gcovr_reportinator.rb +255 -213
  321. data/plugins/gcov/lib/reportgenerator_reportinator.rb +122 -44
  322. data/plugins/module_generator/Rakefile +4 -4
  323. data/plugins/module_generator/config/module_generator.yml +0 -1
  324. data/plugins/module_generator/example/project.yml +1 -1
  325. data/plugins/module_generator/lib/module_generator.rb +117 -87
  326. data/plugins/module_generator/lib/module_generator_options.rb +150 -0
  327. data/plugins/module_generator/lib/module_generator_project.rb +45 -0
  328. data/plugins/module_generator/lib/module_generator_request.rb +83 -0
  329. data/plugins/module_generator/lib/module_generator_test_file.rb +68 -0
  330. data/plugins/module_generator/lib/module_generator_unity.rb +24 -0
  331. data/plugins/module_generator/module_generator.rake +24 -46
  332. data/plugins/report_build_warnings_log/config/defaults.yml +4 -1
  333. data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +47 -55
  334. data/plugins/report_build_warnings_log/lib/warning_collector.rb +140 -0
  335. data/plugins/report_build_warnings_log/lib/warning_reports.rb +135 -0
  336. data/plugins/report_tests_gtestlike_stdout/assets/test_results.template +3 -0
  337. data/{spec/units/configurator_builder_spec.rb → plugins/report_tests_gtestlike_stdout/config/defaults.yml} +6 -10
  338. data/plugins/report_tests_gtestlike_stdout/lib/gtestlike_report.rb +168 -0
  339. data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +25 -1
  340. data/plugins/report_tests_ide_stdout/assets/test_results.template +50 -0
  341. data/plugins/report_tests_ide_stdout/config/defaults.yml +13 -0
  342. data/plugins/report_tests_ide_stdout/lib/ide_report_lines.rb +103 -0
  343. data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +12 -4
  344. data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +33 -51
  345. data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +286 -295
  346. data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +22 -35
  347. data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +91 -133
  348. data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +72 -86
  349. data/plugins/report_tests_log_factory/lib/tests_reporter.rb +31 -12
  350. data/plugins/report_tests_pretty_stdout/assets/{template.erb → test_results.template} +8 -8
  351. data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +18 -48
  352. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +13 -2
  353. data/plugins/sanitize/config/defaults.yml +44 -0
  354. data/plugins/sanitize/config/defaults_sanitize.rb +20 -0
  355. data/plugins/sanitize/lib/sanitize.rb +174 -0
  356. data/plugins/sanitize/lib/sanitize_config.rb +110 -0
  357. data/plugins/sanitize/lib/sanitize_constants.rb +13 -0
  358. data/plugins/sanitize/lib/sanitize_findings.rb +85 -0
  359. data/plugins/sanitize/lib/sanitize_records.rb +115 -0
  360. data/plugins/sanitize/lib/sanitize_reports.rb +135 -0
  361. data/plugins/sanitize/sanitize.rake +108 -0
  362. data/plugins/valgrind/config/defaults.yml +7 -1
  363. data/plugins/valgrind/config/defaults_valgrind.rb +6 -1
  364. data/plugins/valgrind/lib/valgrind.rb +202 -39
  365. data/plugins/valgrind/lib/valgrind_constants.rb +4 -0
  366. data/plugins/valgrind/lib/valgrind_report.rb +52 -0
  367. data/plugins/valgrind/valgrind.rake +33 -11
  368. data/site-local/404.html +248 -14
  369. data/site-local/configuration/environment-vars.html +248 -14
  370. data/site-local/configuration/global-collections.html +248 -19
  371. data/site-local/configuration/index.html +249 -15
  372. data/site-local/configuration/loading.html +260 -22
  373. data/site-local/configuration/mixins.html +252 -17
  374. data/site-local/configuration/parallel-builds.html +248 -14
  375. data/site-local/configuration/project-file.html +275 -30
  376. data/site-local/configuration/reference/cexception.html +255 -20
  377. data/site-local/configuration/reference/cmock.html +281 -14
  378. data/site-local/configuration/reference/defines.html +262 -19
  379. data/site-local/configuration/reference/environment.html +251 -17
  380. data/site-local/configuration/reference/extension.html +361 -16
  381. data/site-local/configuration/reference/files.html +262 -14
  382. data/site-local/configuration/reference/flags.html +270 -19
  383. data/site-local/configuration/reference/index.html +248 -14
  384. data/site-local/configuration/reference/libraries.html +248 -14
  385. data/site-local/configuration/reference/mixins.html +248 -14
  386. data/site-local/configuration/reference/partials.html +249 -19
  387. data/site-local/configuration/reference/paths.html +275 -15
  388. data/site-local/configuration/reference/plugins.html +248 -14
  389. data/site-local/configuration/reference/project.html +291 -14
  390. data/site-local/configuration/reference/release-build.html +256 -14
  391. data/site-local/configuration/reference/test-build.html +290 -24
  392. data/site-local/configuration/reference/test-runner.html +288 -17
  393. data/site-local/configuration/reference/tools.html +254 -14
  394. data/site-local/configuration/reference/unity.html +280 -15
  395. data/site-local/configuration/which-ceedling.html +248 -14
  396. data/site-local/development/index.html +254 -14
  397. data/site-local/development/plugins/configuration.html +269 -17
  398. data/site-local/development/plugins/index.html +267 -15
  399. data/site-local/development/plugins/plugin-subclass.html +906 -154
  400. data/site-local/development/plugins/rake-tasks.html +276 -14
  401. data/site-local/development/releases.html +4708 -0
  402. data/site-local/development/workflow.html +1030 -51
  403. data/site-local/getting-started/builds.html +4607 -0
  404. data/site-local/getting-started/command-line.html +418 -34
  405. data/site-local/getting-started/example-projects/cipher-quest.html +248 -14
  406. data/site-local/getting-started/example-projects/index.html +249 -15
  407. data/site-local/getting-started/example-projects/temp-sensor.html +248 -14
  408. data/site-local/getting-started/example-projects/wondrous-forest.html +248 -14
  409. data/site-local/getting-started/index.html +255 -14
  410. data/site-local/getting-started/installation.html +258 -22
  411. data/site-local/getting-started/quick-start.html +251 -15
  412. data/site-local/help.html +255 -14
  413. data/site-local/index.html +292 -22
  414. data/site-local/overview/build-system.html +249 -15
  415. data/site-local/overview/index.html +248 -14
  416. data/site-local/overview/test-environments.html +257 -14
  417. data/site-local/overview/tools-and-frameworks.html +248 -14
  418. data/site-local/plugins/beep.html +251 -14
  419. data/site-local/plugins/bullseye/index.html +5079 -0
  420. data/site-local/plugins/bullseye/licensing.html +4840 -0
  421. data/site-local/plugins/command-hooks.html +265 -27
  422. data/site-local/plugins/compile-commands-json-db.html +256 -17
  423. data/site-local/plugins/cppcheck.html +1081 -262
  424. data/site-local/plugins/dependencies.html +934 -242
  425. data/site-local/plugins/fff.html +296 -15
  426. data/site-local/plugins/gcov/examples.html +251 -14
  427. data/site-local/plugins/gcov/gcovr.html +567 -65
  428. data/site-local/plugins/gcov/index.html +251 -14
  429. data/site-local/plugins/gcov/overview.html +259 -18
  430. data/site-local/plugins/gcov/reportgenerator.html +386 -38
  431. data/site-local/plugins/gcov/reporting.html +348 -100
  432. data/site-local/plugins/gcov/setup.html +253 -15
  433. data/site-local/plugins/gcov/tool-versions.html +301 -19
  434. data/site-local/plugins/gcov/troubleshooting.html +273 -36
  435. data/site-local/plugins/index.html +294 -36
  436. data/site-local/plugins/module-generator.html +779 -195
  437. data/site-local/plugins/report-build-warnings-log.html +578 -33
  438. data/site-local/plugins/report-tests-gtestlike-stdout.html +467 -84
  439. data/site-local/plugins/report-tests-ide-stdout.html +654 -51
  440. data/site-local/plugins/report-tests-log-factory.html +337 -70
  441. data/site-local/plugins/report-tests-pretty-stdout.html +251 -14
  442. data/site-local/plugins/report-tests-raw-output-log.html +251 -14
  443. data/site-local/plugins/report-tests-teamcity-stdout.html +251 -14
  444. data/site-local/plugins/sanitize.html +5332 -0
  445. data/site-local/plugins/valgrind.html +416 -26
  446. data/site-local/{plugins/bullseye.html → project/index.html} +297 -217
  447. data/site-local/project/release-history.html +251 -17
  448. data/site-local/project/sbom.html +4726 -0
  449. data/site-local/project/upgrade.html +250 -16
  450. data/site-local/reference/build-directives.html +257 -14
  451. data/site-local/reference/command-line.html +373 -16
  452. data/site-local/reference/environment-vars.html +248 -14
  453. data/site-local/reference/gcov-plugin.html +492 -18
  454. data/site-local/reference/global-collections.html +249 -15
  455. data/site-local/reference/index.html +248 -14
  456. data/site-local/reference/partials-macros.html +258 -14
  457. data/site-local/reference/project-configuration.html +248 -14
  458. data/site-local/sitemap.xml.gz +0 -0
  459. data/{docs/mkdocs/snapshot/assets → site-local/snapshot/assets/features}/project.yml +4 -1
  460. data/site-local/snapshot/examples/cipher_quest/index.html +248 -14
  461. data/site-local/snapshot/examples/temp_sensor/index.html +248 -14
  462. data/site-local/snapshot/examples/wondrous_forest/index.html +265 -25
  463. data/site-local/snapshot/plugins/bullseye/config/defaults.yml +24 -0
  464. data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  465. data/site-local/snapshot/plugins/gcov/config/defaults.yml +5 -0
  466. data/site-local/testing-guide/build-directives.html +332 -22
  467. data/site-local/testing-guide/conventions.html +678 -153
  468. data/site-local/testing-guide/frameworks.html +248 -14
  469. data/site-local/testing-guide/index.html +248 -21
  470. data/site-local/testing-guide/partials/configuration.html +248 -14
  471. data/site-local/testing-guide/partials/conventions.html +316 -17
  472. data/site-local/testing-guide/partials/directives.html +456 -48
  473. data/site-local/testing-guide/partials/example.html +248 -14
  474. data/site-local/testing-guide/partials/index.html +255 -14
  475. data/site-local/testing-guide/partials/overview.html +248 -14
  476. data/site-local/testing-guide/partials/variables.html +248 -14
  477. data/site-local/testing-guide/test-cases.html +248 -14
  478. data/site-local/testing-guide/test-sample.html +248 -14
  479. data/site-local/testing-guide/test-suite-anatomy.html +248 -14
  480. data/spec/integration/actionator_file_operations_spec.rb +287 -0
  481. data/spec/integration/analysis_tool_output_spec.rb +204 -0
  482. data/spec/{units/c_extractor/c_extractor_integration_spec.rb → integration/c_extractor_composition_spec.rb} +196 -17
  483. data/spec/integration/command_hooks_plugin_spec.rb +152 -0
  484. data/spec/integration/compile_commands_json_db_spec.rb +76 -0
  485. data/spec/integration/configurator_pipeline_spec.rb +180 -0
  486. data/spec/integration/configurator_plugins_spec.rb +122 -0
  487. data/spec/integration/configurator_validation_spec.rb +98 -0
  488. data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +396 -0
  489. data/spec/integration/dependencies/dependency_tracker_core_spec.rb +244 -0
  490. data/spec/integration/dependencies/dependency_tracker_diagnose_spec.rb +224 -0
  491. data/spec/integration/dependencies/dependency_tracker_filename_handling_spec.rb +118 -0
  492. data/spec/integration/dependencies/dependency_tracker_gcc_deps_spec.rb +199 -0
  493. data/spec/integration/dependencies/dependency_tracker_pruning_spec.rb +167 -0
  494. data/spec/integration/dependencies_plugin_spec.rb +473 -0
  495. data/spec/integration/erb_dependency_removed_spec.rb +167 -0
  496. data/spec/integration/includes_extraction_spec.rb +612 -0
  497. data/spec/integration/mixin_loading_spec.rb +414 -0
  498. data/spec/integration/module_generator_spec.rb +436 -0
  499. data/spec/integration/partials_fallback_preprocessing_spec.rb +316 -0
  500. data/spec/integration/partials_header_composition_spec.rb +889 -0
  501. data/spec/integration/partials_module_resolution_spec.rb +372 -0
  502. data/spec/integration/partials_symbol_linkage_spec.rb +371 -0
  503. data/spec/integration/preprocessing_transient_io_retry_spec.rb +135 -0
  504. data/spec/integration/quote_include_isolator_spec.rb +167 -0
  505. data/spec/integration/report_build_warnings_log_spec.rb +170 -0
  506. data/spec/integration/report_tests_log_factory_spec.rb +100 -0
  507. data/spec/integration/sanitizer_exclusions_spec.rb +126 -0
  508. data/spec/integration/system_harness_sanitizers_spec.rb +104 -0
  509. data/spec/integration/test_build_parallel_barrier_spec.rb +89 -0
  510. data/spec/integration/test_executable_manifest_spec.rb +118 -0
  511. data/spec/integration/test_includes_extractinator_spec.rb +293 -0
  512. data/spec/integration/tool_executor_spec.rb +224 -0
  513. data/spec/integration/tool_validator_spec.rb +133 -0
  514. data/spec/integration/vendor_copy_transient_io_retry_spec.rb +130 -0
  515. data/spec/manual/stress_test.rb +1 -1
  516. data/spec/support/config_yaml_helper.rb +17 -0
  517. data/spec/support/fixtures/sanitizer_reports/clang_asan_heap.txt +45 -0
  518. data/spec/support/fixtures/sanitizer_reports/clang_ubsan_shift.txt +5 -0
  519. data/spec/support/fixtures/sanitizer_reports/gcc_heap.txt +47 -0
  520. data/spec/support/fixtures/sanitizer_reports/gcc_leak.txt +10 -0
  521. data/spec/support/fixtures/sanitizer_reports/gcc_segv.txt +6 -0
  522. data/spec/support/fixtures/sanitizer_reports/gcc_ubsan_shift.txt +6 -0
  523. data/spec/support/fixtures/templates/bullseye__all_pass.txt +6 -0
  524. data/spec/support/fixtures/templates/bullseye__coverage_branches_only.txt +6 -0
  525. data/spec/support/fixtures/templates/bullseye__coverage_functions_only.txt +6 -0
  526. data/spec/support/fixtures/templates/bullseye__coverage_none.txt +6 -0
  527. data/spec/support/fixtures/templates/bullseye__empty.txt +6 -0
  528. data/spec/support/fixtures/templates/bullseye__gcov_context.txt +6 -0
  529. data/spec/support/fixtures/templates/bullseye__mixed_all.txt +6 -0
  530. data/spec/support/fixtures/templates/bullseye__one_failure_matching.txt +6 -0
  531. data/spec/support/fixtures/templates/bullseye__one_failure_multiline.txt +6 -0
  532. data/spec/support/fixtures/templates/bullseye__one_failure_no_message.txt +6 -0
  533. data/spec/support/fixtures/templates/bullseye__one_failure_nonmatching.txt +6 -0
  534. data/spec/support/fixtures/templates/bullseye__one_ignore_no_message.txt +6 -0
  535. data/spec/support/fixtures/templates/bullseye__one_ignore_with_message.txt +6 -0
  536. data/spec/support/fixtures/templates/bullseye__stdout_only.txt +6 -0
  537. data/spec/support/fixtures/templates/ide__all_pass.txt +10 -0
  538. data/spec/support/fixtures/templates/ide__coverage_branches_only.txt +10 -0
  539. data/spec/support/fixtures/templates/ide__coverage_functions_only.txt +10 -0
  540. data/spec/support/fixtures/templates/ide__coverage_none.txt +10 -0
  541. data/spec/support/fixtures/templates/ide__empty.txt +8 -0
  542. data/spec/support/fixtures/templates/ide__gcov_context.txt +28 -0
  543. data/spec/support/fixtures/templates/ide__mixed_all.txt +29 -0
  544. data/spec/support/fixtures/templates/ide__one_failure_matching.txt +15 -0
  545. data/spec/support/fixtures/templates/ide__one_failure_multiline.txt +17 -0
  546. data/spec/support/fixtures/templates/ide__one_failure_no_message.txt +15 -0
  547. data/spec/support/fixtures/templates/ide__one_failure_nonmatching.txt +15 -0
  548. data/spec/support/fixtures/templates/ide__one_ignore_no_message.txt +15 -0
  549. data/spec/support/fixtures/templates/ide__one_ignore_with_message.txt +15 -0
  550. data/spec/support/fixtures/templates/ide__stdout_only.txt +16 -0
  551. data/spec/support/fixtures/templates/pretty__all_pass.txt +8 -0
  552. data/spec/support/fixtures/templates/pretty__coverage_branches_only.txt +8 -0
  553. data/spec/support/fixtures/templates/pretty__coverage_functions_only.txt +8 -0
  554. data/spec/support/fixtures/templates/pretty__coverage_none.txt +8 -0
  555. data/spec/support/fixtures/templates/pretty__empty.txt +6 -0
  556. data/spec/support/fixtures/templates/pretty__gcov_context.txt +31 -0
  557. data/spec/support/fixtures/templates/pretty__mixed_all.txt +35 -0
  558. data/spec/support/fixtures/templates/pretty__one_failure_matching.txt +15 -0
  559. data/spec/support/fixtures/templates/pretty__one_failure_multiline.txt +17 -0
  560. data/spec/support/fixtures/templates/pretty__one_failure_no_message.txt +15 -0
  561. data/spec/support/fixtures/templates/pretty__one_failure_nonmatching.txt +15 -0
  562. data/spec/support/fixtures/templates/pretty__one_ignore_no_message.txt +15 -0
  563. data/spec/support/fixtures/templates/pretty__one_ignore_with_message.txt +15 -0
  564. data/spec/support/fixtures/templates/pretty__stdout_only.txt +15 -0
  565. data/spec/support/fixtures/valgrind_reports/sigsegv.log +51 -0
  566. data/spec/support/fixtures/valgrind_reports/sigsegv.xml +182 -0
  567. data/spec/support/include_guard_helper.rb +20 -0
  568. data/spec/support/integration/configurator_integration_helper.rb +159 -0
  569. data/spec/support/integration/dependency_tracker_integration_helper.rb +136 -0
  570. data/spec/support/integration/partials_generation_integration_helper.rb +726 -0
  571. data/spec/support/integration/spec_integration_helper.rb +285 -0
  572. data/spec/support/integration/test_includes_harness.rb +259 -0
  573. data/spec/support/integration/tool_executor_integration_helper.rb +55 -0
  574. data/spec/support/spec_helper.rb +41 -0
  575. data/spec/support/system/sanitizers/asan_ubsan.yml +82 -0
  576. data/spec/support/system/sanitizers/asan_ubsan_leaks.yml +57 -0
  577. data/spec/support/system/simplecov_boot.rb +66 -0
  578. data/spec/support/system/spec_system_helper.rb +376 -16
  579. data/spec/support/system/system_context.rb +181 -59
  580. data/spec/support/template_render_cases.rb +166 -0
  581. data/spec/system/bracket_path_handling_spec.rb +175 -0
  582. data/spec/system/build_output_mirroring_spec.rb +89 -0
  583. data/spec/system/build_recovery_spec.rb +382 -0
  584. data/spec/system/bullseye_deployment_spec.rb +102 -0
  585. data/spec/system/cli_surface_spec.rb +245 -0
  586. data/spec/system/command_hooks_spec.rb +117 -0
  587. data/spec/system/conditional_include_macro_visibility_spec.rb +32 -124
  588. data/spec/system/conditional_mock_includes_spec.rb +181 -0
  589. data/spec/system/cppcheck_deployment_spec.rb +26 -8
  590. data/spec/system/delta_builds_spec.rb +751 -0
  591. data/spec/system/deployment_as_gem_spec.rb +7 -0
  592. data/spec/system/deployment_as_vendor_spec.rb +29 -145
  593. data/spec/system/dumpconfig_spec.rb +137 -0
  594. data/spec/system/encoding_stress_spec.rb +7 -4
  595. data/spec/system/example_cipher_quest_spec.rb +25 -100
  596. data/spec/system/example_temp_sensor_spec.rb +30 -172
  597. data/spec/system/example_wondrous_forest_spec.rb +25 -62
  598. data/spec/system/extension_multiple_values_spec.rb +75 -0
  599. data/spec/system/files_paths_reporting_spec.rb +154 -0
  600. data/spec/system/gcov_deployment_spec.rb +72 -3
  601. data/spec/system/header_include_path_validation_spec.rb +222 -0
  602. data/spec/system/implicit_source_header_correspondence_disambiguation_spec.rb +100 -0
  603. data/spec/system/include_path_reconciliation_spec.rb +64 -0
  604. data/spec/system/mixin_ordering_spec.rb +30 -415
  605. data/spec/system/mocks_partials_configuration_validation_spec.rb +126 -0
  606. data/spec/system/parent_directory_reference_spec.rb +114 -0
  607. data/spec/system/partials_module_disambiguation_spec.rb +143 -0
  608. data/spec/system/pinned_thread_count_spec.rb +102 -0
  609. data/spec/system/plugin_delta_builds_spec.rb +179 -0
  610. data/spec/system/preprocessing_encoding_spec.rb +87 -4
  611. data/spec/system/preprocessing_fallback_conditionals_spec.rb +19 -25
  612. data/spec/system/preprocessing_parameterized_tests_spec.rb +2 -2
  613. data/spec/system/rake_release_task_path_disambiguation_spec.rb +97 -0
  614. data/spec/system/rake_test_task_path_disambiguation_spec.rb +118 -0
  615. data/spec/system/report_and_tooling_plugins_spec.rb +327 -0
  616. data/spec/system/ruby_replacement_spec.rb +1 -1
  617. data/spec/system/same_named_modules_spec.rb +115 -0
  618. data/spec/system/sanitize_deployment_spec.rb +64 -0
  619. data/spec/system/shuffle_tests_spec.rb +139 -0
  620. data/spec/system/sibling_header_collision_spec.rb +620 -0
  621. data/spec/system/subdir_include_preservation_spec.rb +63 -0
  622. data/spec/system/support/bullseye_common_test_cases.rb +369 -0
  623. data/spec/system/support/bullseye_helpers.rb +70 -0
  624. data/spec/system/support/common_test_cases.rb +167 -43
  625. data/spec/system/support/cppcheck_common_test_cases.rb +80 -0
  626. data/spec/system/support/cppcheck_helpers.rb +10 -8
  627. data/spec/system/support/gcov_common_test_cases.rb +173 -37
  628. data/spec/system/support/gcov_helpers.rb +3 -3
  629. data/spec/system/support/gcov_partials_test_cases.rb +48 -2
  630. data/spec/system/support/sanitize_common_test_cases.rb +222 -0
  631. data/spec/system/support/sanitize_helpers.rb +27 -0
  632. data/spec/system/support/valgrind_common_test_cases.rb +116 -16
  633. data/spec/system/support/valgrind_helpers.rb +3 -4
  634. data/spec/system/test_pipeline_stop_points_spec.rb +160 -0
  635. data/spec/system/test_runner_system_include_spec.rb +19 -41
  636. data/spec/system/test_source_file_directive_spec.rb +235 -0
  637. data/spec/system/upgrade_as_vendor_spec.rb +25 -46
  638. data/spec/system/valgrind_deployment_spec.rb +41 -0
  639. data/spec/units/batchinator_spec.rb +314 -0
  640. data/spec/units/bin/actionator_spec.rb +412 -0
  641. data/spec/units/bin/app_cfg_spec.rb +90 -0
  642. data/spec/units/bin/cli_handler_spec.rb +204 -0
  643. data/spec/units/bin/cli_helper_spec.rb +238 -10
  644. data/spec/units/bin/cli_options_transform_spec.rb +49 -0
  645. data/spec/units/bin/composinator_spec.rb +236 -0
  646. data/spec/units/bin/{projectinator_mixin_spec.rb → mixin_resolvinator_spec.rb} +122 -83
  647. data/spec/units/bin/mixin_standardizer_spec.rb +4 -3
  648. data/spec/units/bin/mixinator_spec.rb +58 -22
  649. data/spec/units/bin/path_validator_spec.rb +112 -0
  650. data/spec/units/bin/projectinator_spec.rb +223 -0
  651. data/spec/units/bin/rake_patches_spec.rb +52 -0
  652. data/spec/units/bin/recursive_merger_spec.rb +22 -0
  653. data/spec/units/bin/versionator_spec.rb +104 -0
  654. data/spec/units/c_extractor/c_extractor_code_text_spec.rb +4 -4
  655. data/spec/units/c_extractor/c_extractor_declarations_spec.rb +70 -0
  656. data/spec/units/c_extractor/c_extractor_functions_spec.rb +75 -1
  657. data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +158 -0
  658. data/spec/units/c_extractor/c_extractor_spec.rb +236 -6
  659. data/spec/units/ceedling/templateinator_golden_spec.rb +84 -0
  660. data/spec/units/ceedling/templateinator_spec.rb +188 -0
  661. data/spec/units/config/configurator_builder_spec.rb +444 -0
  662. data/spec/units/config/configurator_plugins_spec.rb +160 -0
  663. data/spec/units/config/configurator_setup_spec.rb +706 -6
  664. data/spec/units/config/configurator_spec.rb +952 -0
  665. data/spec/units/config/configurator_validator_spec.rb +259 -0
  666. data/spec/units/config/line_marker_suppressors_spec.rb +89 -0
  667. data/spec/units/config_matchinator_spec.rb +103 -0
  668. data/spec/units/defineinator_spec.rb +158 -0
  669. data/spec/units/dependencies/dependency_cache_store_spec.rb +364 -0
  670. data/spec/units/dependencies/dependency_debug_tree_spec.rb +189 -0
  671. data/spec/units/dependencies/dependency_differ_spec.rb +139 -0
  672. data/spec/units/dependencies/dependency_hasher_spec.rb +141 -0
  673. data/spec/units/dependencies/dependency_path_normalizer_spec.rb +111 -0
  674. data/spec/units/dependencies/dependency_tracker_spec.rb +905 -0
  675. data/spec/units/dependencies/dependinator_spec.rb +99 -0
  676. data/spec/units/dependencies/gcc_dependency_parser_spec.rb +152 -0
  677. data/spec/units/encodinator_spec.rb +92 -0
  678. data/spec/units/file_finder_helper_spec.rb +99 -15
  679. data/spec/units/file_finder_spec.rb +495 -0
  680. data/spec/units/file_path_collection_utils_spec.rb +9 -0
  681. data/spec/units/file_path_utils_spec.rb +736 -0
  682. data/spec/units/file_wrapper_spec.rb +447 -0
  683. data/spec/units/filename_extension_spec.rb +120 -0
  684. data/spec/units/flaginator_spec.rb +114 -0
  685. data/spec/units/generators/generator_helper_spec.rb +113 -0
  686. data/spec/units/generators/generator_mocks_spec.rb +131 -0
  687. data/spec/units/generators/generator_partials_spec.rb +336 -160
  688. data/spec/units/generators/generator_spec.rb +317 -0
  689. data/spec/units/generators/generator_test_results_backtrace_spec.rb +169 -9
  690. data/spec/units/generators/generator_test_results_sanity_checker_spec.rb +14 -6
  691. data/spec/units/generators/generator_test_results_spec.rb +65 -8
  692. data/spec/units/generators/generator_test_runner_spec.rb +1 -1
  693. data/spec/units/includes/include_factory_spec.rb +53 -0
  694. data/spec/units/includes/include_pathinator_spec.rb +269 -0
  695. data/spec/units/includes/include_spec.rb +8 -4
  696. data/spec/units/includes/includes_spec.rb +326 -18
  697. data/spec/units/mock_locator_spec.rb +74 -0
  698. data/spec/units/parsing_parcels_spec.rb +65 -0
  699. data/spec/units/partials/partializer_config_spec.rb +284 -18
  700. data/spec/units/partials/partializer_helper_spec.rb +122 -0
  701. data/spec/units/partials/partializer_spec.rb +346 -71
  702. data/spec/units/partials/partializer_utils_spec.rb +4 -4
  703. data/spec/units/partials_manager_spec.rb +539 -0
  704. data/spec/units/path_matcher_spec.rb +193 -0
  705. data/spec/units/path_mirror_spec.rb +103 -0
  706. data/spec/units/plugin_manager_spec.rb +77 -0
  707. data/spec/units/plugin_reportinator_spec.rb +78 -3
  708. data/spec/units/plugins/bullseye_spec.rb +1068 -0
  709. data/spec/units/plugins/command_hooks_spec.rb +157 -0
  710. data/spec/units/plugins/compile_commands_json_db_spec.rb +145 -0
  711. data/spec/units/plugins/console_reportinator_spec.rb +370 -0
  712. data/spec/units/plugins/cppcheck_spec.rb +330 -4
  713. data/spec/units/plugins/cppunit_tests_reporter_spec.rb +118 -0
  714. data/spec/units/plugins/dependencies_spec.rb +295 -0
  715. data/spec/units/plugins/dependency_commands_spec.rb +83 -0
  716. data/spec/units/plugins/dependency_environment_spec.rb +64 -0
  717. data/spec/units/plugins/dependency_spec_spec.rb +170 -0
  718. data/spec/units/plugins/gcov_reportinator_spec.rb +272 -0
  719. data/spec/units/plugins/gcov_spec.rb +521 -0
  720. data/spec/units/plugins/gcovr_reportinator_spec.rb +795 -0
  721. data/spec/units/plugins/gtestlike_report_spec.rb +363 -0
  722. data/spec/units/plugins/html_tests_reporter_spec.rb +158 -0
  723. data/spec/units/plugins/ide_report_lines_spec.rb +229 -0
  724. data/spec/units/plugins/json_tests_reporter_spec.rb +87 -0
  725. data/spec/units/plugins/junit_tests_reporter_spec.rb +237 -0
  726. data/spec/units/plugins/module_generator_options_spec.rb +185 -0
  727. data/spec/units/plugins/module_generator_project_spec.rb +55 -0
  728. data/spec/units/plugins/module_generator_request_spec.rb +107 -0
  729. data/spec/units/plugins/module_generator_spec.rb +214 -0
  730. data/spec/units/plugins/module_generator_test_file_spec.rb +102 -0
  731. data/spec/units/plugins/module_generator_unity_spec.rb +37 -0
  732. data/spec/units/plugins/report_build_warnings_log_spec.rb +199 -0
  733. data/spec/units/plugins/report_log_writer_plugin_spec.rb +94 -0
  734. data/spec/units/plugins/report_tests_gtestlike_stdout_spec.rb +274 -0
  735. data/spec/units/plugins/report_tests_ide_stdout_spec.rb +140 -0
  736. data/spec/units/plugins/report_tests_log_factory_spec.rb +210 -0
  737. data/spec/units/plugins/report_tests_pretty_stdout_spec.rb +83 -0
  738. data/spec/units/plugins/report_tests_raw_output_log_spec.rb +98 -0
  739. data/spec/units/plugins/report_tests_stdout_plugin_spec.rb +145 -0
  740. data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +121 -0
  741. data/spec/units/plugins/reportgenerator_reportinator_spec.rb +410 -0
  742. data/spec/units/plugins/sanitize_config_spec.rb +119 -0
  743. data/spec/units/plugins/sanitize_findings_spec.rb +69 -0
  744. data/spec/units/plugins/sanitize_records_spec.rb +114 -0
  745. data/spec/units/plugins/sanitize_reports_spec.rb +84 -0
  746. data/spec/units/plugins/sanitize_spec.rb +300 -0
  747. data/spec/units/plugins/tests_reporter_spec.rb +89 -0
  748. data/spec/units/plugins/valgrind_spec.rb +560 -0
  749. data/spec/units/plugins/warning_collector_spec.rb +185 -0
  750. data/spec/units/plugins/warning_reports_spec.rb +150 -0
  751. data/spec/units/preprocess/c_comment_scanner_spec.rb +17 -17
  752. data/spec/units/preprocess/c_preprocessor_conditionals_spec.rb +94 -0
  753. data/spec/units/preprocess/preprocessinator_bare_includes_extractor_spec.rb +73 -0
  754. data/spec/units/preprocess/preprocessinator_code_finder_spec.rb +35 -16
  755. data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +129 -48
  756. data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +292 -9
  757. data/spec/units/preprocess/preprocessinator_includes_handler_spec.rb +294 -16
  758. data/spec/units/preprocess/preprocessinator_line_marker_includes_extractor_spec.rb +356 -6
  759. data/spec/units/preprocess/preprocessinator_reconstructor_spec.rb +58 -4
  760. data/spec/units/preprocess/preprocessinator_spec.rb +693 -5
  761. data/spec/units/quote_include_isolator_spec.rb +176 -0
  762. data/spec/units/rake_app/rake_invocation_tracker_spec.rb +94 -0
  763. data/spec/units/rake_app/rake_task_registry_spec.rb +263 -0
  764. data/spec/units/rake_app/rake_utils_spec.rb +54 -0
  765. data/spec/units/rake_app/rake_wrapper_spec.rb +64 -0
  766. data/spec/units/rake_app/rakefile_component_resolver_spec.rb +182 -0
  767. data/spec/units/release_build_executor_spec.rb +404 -0
  768. data/spec/units/release_build_planner_spec.rb +144 -0
  769. data/spec/units/release_invoker_spec.rb +127 -0
  770. data/spec/units/reportinator_spec.rb +35 -0
  771. data/spec/units/ruby_expandinator_spec.rb +36 -0
  772. data/spec/units/standin_headerinator_spec.rb +168 -0
  773. data/spec/units/system_wrapper_spec.rb +16 -0
  774. data/spec/units/test_build_executor_spec.rb +1653 -8
  775. data/spec/units/test_build_planner_spec.rb +878 -0
  776. data/spec/units/test_build_setup_spec.rb +583 -0
  777. data/spec/units/test_context_extractor_spec.rb +51 -3
  778. data/spec/units/test_file_preprocessinator_spec.rb +206 -0
  779. data/spec/units/test_includes_extractinator_spec.rb +764 -0
  780. data/spec/units/test_invoker/objects_wiring_spec.rb +31 -0
  781. data/spec/units/test_invoker_spec.rb +147 -0
  782. data/spec/units/test_invoker_types_spec.rb +182 -0
  783. data/spec/units/test_pipeline_helpers_spec.rb +100 -0
  784. data/spec/units/test_pipeline_manager_spec.rb +415 -0
  785. data/spec/units/test_runner_generatinator_spec.rb +215 -0
  786. data/spec/units/test_runner_manager_spec.rb +70 -0
  787. data/spec/units/test_search_paths_spec.rb +84 -0
  788. data/spec/units/test_source_file_directive_resolver_spec.rb +239 -0
  789. data/spec/units/tool_executor_helper_spec.rb +1 -1
  790. data/spec/units/tool_executor_spec.rb +571 -2
  791. data/spec/units/tool_validator_spec.rb +303 -24
  792. data/spec/units/version_spec.rb +74 -0
  793. data/spec/units/yaml_wrapper_spec.rb +4 -1
  794. data/vendor/cmock/docs/CMock_Summary.md +11 -0
  795. data/vendor/cmock/lib/cmock_config.rb +1 -0
  796. data/vendor/cmock/lib/cmock_generator.rb +5 -1
  797. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +31 -0
  798. data/vendor/cmock/vendor/unity/auto/generate_module.rb +4 -4
  799. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +8 -2
  800. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +2 -2
  801. data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +7 -0
  802. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +4 -0
  803. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  804. data/vendor/cmock/vendor/unity/src/unity_internals.h +21 -7
  805. data/vendor/cmock/vendor/unity/test/Makefile +9 -2
  806. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -0
  807. data/vendor/cmock/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  808. data/vendor/cmock/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  809. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  810. data/vendor/cmock/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  811. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +78 -0
  812. data/vendor/cmock/vendor/unity/test/tests/test_unity_test_summary.rb +58 -0
  813. data/vendor/diy/lib/diy/factory.rb +5 -4
  814. data/vendor/diy/lib/diy.rb +5 -4
  815. data/vendor/diy/sample_code/car.rb +5 -4
  816. data/vendor/diy/sample_code/chassis.rb +5 -4
  817. data/vendor/diy/sample_code/diy_example.rb +5 -4
  818. data/vendor/diy/sample_code/engine.rb +5 -4
  819. data/vendor/diy/sample_code/objects.yml +5 -4
  820. data/vendor/diy/test/constructor.rb +5 -4
  821. data/vendor/diy/test/diy_test.rb +5 -4
  822. data/vendor/diy/test/factory_test.rb +5 -4
  823. data/vendor/diy/test/files/broken_construction.yml +5 -4
  824. data/vendor/diy/test/files/cat/cat.rb +5 -4
  825. data/vendor/diy/test/files/cat/extra_conflict.yml +5 -4
  826. data/vendor/diy/test/files/cat/heritage.rb +5 -4
  827. data/vendor/diy/test/files/cat/needs_input.yml +5 -4
  828. data/vendor/diy/test/files/cat/the_cat_lineage.rb +5 -4
  829. data/vendor/diy/test/files/dog/dog_model.rb +5 -4
  830. data/vendor/diy/test/files/dog/dog_presenter.rb +5 -4
  831. data/vendor/diy/test/files/dog/dog_view.rb +5 -4
  832. data/vendor/diy/test/files/dog/file_resolver.rb +5 -4
  833. data/vendor/diy/test/files/dog/other_thing.rb +5 -4
  834. data/vendor/diy/test/files/dog/simple.yml +5 -4
  835. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +5 -4
  836. data/vendor/diy/test/files/donkey/foo.rb +5 -4
  837. data/vendor/diy/test/files/factory/beef.rb +5 -4
  838. data/vendor/diy/test/files/factory/dog.rb +5 -4
  839. data/vendor/diy/test/files/factory/factory.yml +5 -4
  840. data/vendor/diy/test/files/factory/farm/llama.rb +5 -4
  841. data/vendor/diy/test/files/factory/farm/pork.rb +5 -4
  842. data/vendor/diy/test/files/factory/kitten.rb +5 -4
  843. data/vendor/diy/test/files/fud/objects.yml +5 -4
  844. data/vendor/diy/test/files/fud/toy.rb +5 -4
  845. data/vendor/diy/test/files/functions/attached_things_builder.rb +5 -4
  846. data/vendor/diy/test/files/functions/invalid_method.yml +5 -4
  847. data/vendor/diy/test/files/functions/method_extractor.rb +5 -4
  848. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -4
  849. data/vendor/diy/test/files/functions/objects.yml +5 -4
  850. data/vendor/diy/test/files/functions/thing.rb +5 -4
  851. data/vendor/diy/test/files/functions/thing_builder.rb +5 -4
  852. data/vendor/diy/test/files/functions/things_builder.rb +5 -4
  853. data/vendor/diy/test/files/gnu/objects.yml +5 -4
  854. data/vendor/diy/test/files/gnu/thinger.rb +5 -4
  855. data/vendor/diy/test/files/goat/base.rb +5 -4
  856. data/vendor/diy/test/files/goat/can.rb +5 -4
  857. data/vendor/diy/test/files/goat/goat.rb +5 -4
  858. data/vendor/diy/test/files/goat/objects.yml +5 -4
  859. data/vendor/diy/test/files/goat/paper.rb +5 -4
  860. data/vendor/diy/test/files/goat/plane.rb +5 -4
  861. data/vendor/diy/test/files/goat/shirt.rb +5 -4
  862. data/vendor/diy/test/files/goat/wings.rb +5 -4
  863. data/vendor/diy/test/files/horse/holder_thing.rb +5 -4
  864. data/vendor/diy/test/files/horse/objects.yml +5 -4
  865. data/vendor/diy/test/files/namespace/animal/bird.rb +5 -4
  866. data/vendor/diy/test/files/namespace/animal/cat.rb +5 -4
  867. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +5 -4
  868. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +5 -4
  869. data/vendor/diy/test/files/namespace/bad_module_specified.yml +5 -4
  870. data/vendor/diy/test/files/namespace/class_name_combine.yml +5 -4
  871. data/vendor/diy/test/files/namespace/no_module_specified.yml +5 -4
  872. data/vendor/diy/test/files/namespace/objects.yml +5 -4
  873. data/vendor/diy/test/files/namespace/road.rb +5 -4
  874. data/vendor/diy/test/files/namespace/sky.rb +5 -4
  875. data/vendor/diy/test/files/namespace/subcontext.yml +5 -4
  876. data/vendor/diy/test/files/non_singleton/air.rb +5 -4
  877. data/vendor/diy/test/files/non_singleton/fat_cat.rb +5 -4
  878. data/vendor/diy/test/files/non_singleton/objects.yml +5 -4
  879. data/vendor/diy/test/files/non_singleton/pig.rb +5 -4
  880. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +5 -4
  881. data/vendor/diy/test/files/non_singleton/tick.rb +5 -4
  882. data/vendor/diy/test/files/non_singleton/yard.rb +5 -4
  883. data/vendor/diy/test/files/yak/core_model.rb +5 -4
  884. data/vendor/diy/test/files/yak/core_presenter.rb +5 -4
  885. data/vendor/diy/test/files/yak/core_view.rb +5 -4
  886. data/vendor/diy/test/files/yak/data_source.rb +5 -4
  887. data/vendor/diy/test/files/yak/fringe_model.rb +5 -4
  888. data/vendor/diy/test/files/yak/fringe_presenter.rb +5 -4
  889. data/vendor/diy/test/files/yak/fringe_view.rb +5 -4
  890. data/vendor/diy/test/files/yak/giant_squid.rb +5 -4
  891. data/vendor/diy/test/files/yak/krill.rb +5 -4
  892. data/vendor/diy/test/files/yak/my_objects.yml +5 -4
  893. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +5 -4
  894. data/vendor/diy/test/test_helper.rb +5 -4
  895. data/vendor/unity/auto/generate_module.rb +4 -4
  896. data/vendor/unity/auto/generate_test_runner.rb +5 -1
  897. data/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  898. data/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  899. data/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  900. data/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  901. data/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  902. data/vendor/unity/test/tests/test_generate_test_runner.rb +29 -0
  903. metadata +770 -287
  904. data/assets/tests_with_fallback_conditionals/src/conditional_module.c +0 -18
  905. data/bin/actions_wrapper.rb +0 -51
  906. data/docs/mkdocs/assets/images/ceedling-logo-circle.png +0 -0
  907. data/docs/mkdocs/assets/images/ceedling.svg +0 -90
  908. data/docs/mkdocs/assets/images/favicon.png +0 -0
  909. data/docs/mkdocs/assets/stylesheets/admonitions.css +0 -152
  910. data/docs/mkdocs/assets/stylesheets/fixes-local.css +0 -15
  911. data/docs/mkdocs/assets/stylesheets/styling.css +0 -102
  912. data/docs/mkdocs/configuration/environment-vars.md +0 -14
  913. data/docs/mkdocs/configuration/global-collections.md +0 -156
  914. data/docs/mkdocs/configuration/index.md +0 -75
  915. data/docs/mkdocs/configuration/loading.md +0 -89
  916. data/docs/mkdocs/configuration/mixins.md +0 -607
  917. data/docs/mkdocs/configuration/parallel-builds.md +0 -97
  918. data/docs/mkdocs/configuration/project-file.md +0 -216
  919. data/docs/mkdocs/configuration/reference/cexception.md +0 -35
  920. data/docs/mkdocs/configuration/reference/cmock.md +0 -106
  921. data/docs/mkdocs/configuration/reference/defines.md +0 -352
  922. data/docs/mkdocs/configuration/reference/environment.md +0 -55
  923. data/docs/mkdocs/configuration/reference/extension.md +0 -63
  924. data/docs/mkdocs/configuration/reference/files.md +0 -154
  925. data/docs/mkdocs/configuration/reference/flags.md +0 -296
  926. data/docs/mkdocs/configuration/reference/index.md +0 -176
  927. data/docs/mkdocs/configuration/reference/libraries.md +0 -82
  928. data/docs/mkdocs/configuration/reference/mixins.md +0 -24
  929. data/docs/mkdocs/configuration/reference/partials.md +0 -38
  930. data/docs/mkdocs/configuration/reference/paths.md +0 -276
  931. data/docs/mkdocs/configuration/reference/plugins.md +0 -60
  932. data/docs/mkdocs/configuration/reference/project.md +0 -333
  933. data/docs/mkdocs/configuration/reference/release-build.md +0 -62
  934. data/docs/mkdocs/configuration/reference/test-build.md +0 -55
  935. data/docs/mkdocs/configuration/reference/test-runner.md +0 -61
  936. data/docs/mkdocs/configuration/reference/tools.md +0 -457
  937. data/docs/mkdocs/configuration/reference/unity.md +0 -49
  938. data/docs/mkdocs/configuration/which-ceedling.md +0 -77
  939. data/docs/mkdocs/development/index.md +0 -61
  940. data/docs/mkdocs/development/plugins/configuration.md +0 -164
  941. data/docs/mkdocs/development/plugins/index.md +0 -84
  942. data/docs/mkdocs/development/plugins/plugin-subclass.md +0 -513
  943. data/docs/mkdocs/development/plugins/rake-tasks.md +0 -54
  944. data/docs/mkdocs/development/workflow.md +0 -284
  945. data/docs/mkdocs/getting-started/command-line.md +0 -477
  946. data/docs/mkdocs/getting-started/example-projects/cipher-quest.md +0 -65
  947. data/docs/mkdocs/getting-started/example-projects/index.md +0 -49
  948. data/docs/mkdocs/getting-started/example-projects/temp-sensor.md +0 -60
  949. data/docs/mkdocs/getting-started/example-projects/wondrous-forest.md +0 -45
  950. data/docs/mkdocs/getting-started/index.md +0 -41
  951. data/docs/mkdocs/getting-started/installation.md +0 -179
  952. data/docs/mkdocs/getting-started/quick-start.md +0 -86
  953. data/docs/mkdocs/help.md +0 -49
  954. data/docs/mkdocs/index.md +0 -222
  955. data/docs/mkdocs/overview/build-system.md +0 -115
  956. data/docs/mkdocs/overview/index.md +0 -29
  957. data/docs/mkdocs/overview/test-environments.md +0 -33
  958. data/docs/mkdocs/overview/tools-and-frameworks.md +0 -115
  959. data/docs/mkdocs/plugins/beep.md +0 -134
  960. data/docs/mkdocs/plugins/bullseye.md +0 -83
  961. data/docs/mkdocs/plugins/command-hooks.md +0 -268
  962. data/docs/mkdocs/plugins/compile-commands-json-db.md +0 -42
  963. data/docs/mkdocs/plugins/cppcheck.md +0 -377
  964. data/docs/mkdocs/plugins/dependencies.md +0 -310
  965. data/docs/mkdocs/plugins/fff.md +0 -247
  966. data/docs/mkdocs/plugins/gcov/examples.md +0 -92
  967. data/docs/mkdocs/plugins/gcov/gcovr.md +0 -526
  968. data/docs/mkdocs/plugins/gcov/index.md +0 -74
  969. data/docs/mkdocs/plugins/gcov/overview.md +0 -145
  970. data/docs/mkdocs/plugins/gcov/reportgenerator.md +0 -246
  971. data/docs/mkdocs/plugins/gcov/reporting.md +0 -147
  972. data/docs/mkdocs/plugins/gcov/setup.md +0 -232
  973. data/docs/mkdocs/plugins/gcov/tool-versions.md +0 -60
  974. data/docs/mkdocs/plugins/gcov/troubleshooting.md +0 -78
  975. data/docs/mkdocs/plugins/index.md +0 -261
  976. data/docs/mkdocs/plugins/module-generator.md +0 -267
  977. data/docs/mkdocs/plugins/report-build-warnings-log.md +0 -42
  978. data/docs/mkdocs/plugins/report-tests-gtestlike-stdout.md +0 -98
  979. data/docs/mkdocs/plugins/report-tests-ide-stdout.md +0 -63
  980. data/docs/mkdocs/plugins/report-tests-log-factory.md +0 -454
  981. data/docs/mkdocs/plugins/report-tests-pretty-stdout.md +0 -56
  982. data/docs/mkdocs/plugins/report-tests-raw-output-log.md +0 -52
  983. data/docs/mkdocs/plugins/report-tests-teamcity-stdout.md +0 -96
  984. data/docs/mkdocs/plugins/sample_html_report.png +0 -0
  985. data/docs/mkdocs/plugins/valgrind.md +0 -198
  986. data/docs/mkdocs/project/release-history.md +0 -61
  987. data/docs/mkdocs/project/upgrade.md +0 -85
  988. data/docs/mkdocs/reference/build-directives.md +0 -37
  989. data/docs/mkdocs/reference/command-line.md +0 -323
  990. data/docs/mkdocs/reference/environment-vars.md +0 -60
  991. data/docs/mkdocs/reference/gcov-plugin.md +0 -600
  992. data/docs/mkdocs/reference/global-collections.md +0 -160
  993. data/docs/mkdocs/reference/index.md +0 -65
  994. data/docs/mkdocs/reference/partials-macros.md +0 -79
  995. data/docs/mkdocs/reference/project-configuration.md +0 -46
  996. data/docs/mkdocs/snapshot/examples/cipher_quest/README.md +0 -210
  997. data/docs/mkdocs/snapshot/examples/temp_sensor/README.md +0 -283
  998. data/docs/mkdocs/snapshot/examples/wondrous_forest/README.md +0 -92
  999. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +0 -32
  1000. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults_gcov.rb +0 -136
  1001. data/docs/mkdocs/snapshot.yml +0 -20
  1002. data/docs/mkdocs/testing-guide/build-directives.md +0 -153
  1003. data/docs/mkdocs/testing-guide/conventions.md +0 -616
  1004. data/docs/mkdocs/testing-guide/frameworks.md +0 -192
  1005. data/docs/mkdocs/testing-guide/index.md +0 -80
  1006. data/docs/mkdocs/testing-guide/partials/configuration.md +0 -67
  1007. data/docs/mkdocs/testing-guide/partials/conventions.md +0 -68
  1008. data/docs/mkdocs/testing-guide/partials/directives.md +0 -212
  1009. data/docs/mkdocs/testing-guide/partials/example.md +0 -149
  1010. data/docs/mkdocs/testing-guide/partials/index.md +0 -88
  1011. data/docs/mkdocs/testing-guide/partials/overview.md +0 -81
  1012. data/docs/mkdocs/testing-guide/partials/variables.md +0 -244
  1013. data/docs/mkdocs/testing-guide/test-cases.md +0 -194
  1014. data/docs/mkdocs/testing-guide/test-sample.md +0 -94
  1015. data/docs/mkdocs/testing-guide/test-suite-anatomy.md +0 -58
  1016. data/lib/ceedling/cacheinator.rb +0 -53
  1017. data/lib/ceedling/cacheinator_helper.rb +0 -60
  1018. data/lib/ceedling/dependinator.rb +0 -31
  1019. data/lib/ceedling/makefile.rb +0 -52
  1020. data/lib/ceedling/release_invoker.rb +0 -112
  1021. data/lib/ceedling/rules_release.rake +0 -109
  1022. data/lib/ceedling/rules_tests.rake +0 -40
  1023. data/lib/ceedling/tasks_release.rake +0 -36
  1024. data/plugins/fff/vendor/fff/Makefile +0 -10
  1025. data/plugins/fff/vendor/fff/buildandtest +0 -15
  1026. data/plugins/fff/vendor/fff/examples/Makefile +0 -7
  1027. data/plugins/fff/vendor/fff/examples/driver_testing/Makefile +0 -64
  1028. data/plugins/fff/vendor/fff/examples/driver_testing/driver.c +0 -32
  1029. data/plugins/fff/vendor/fff/examples/driver_testing/driver.h +0 -21
  1030. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.cpp +0 -58
  1031. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.fff.cpp +0 -70
  1032. data/plugins/fff/vendor/fff/examples/driver_testing/hardware_abstraction.h +0 -25
  1033. data/plugins/fff/vendor/fff/examples/driver_testing/registers.h +0 -23
  1034. data/plugins/fff/vendor/fff/examples/embedded_ui/DISPLAY.h +0 -27
  1035. data/plugins/fff/vendor/fff/examples/embedded_ui/Kata.txt +0 -25
  1036. data/plugins/fff/vendor/fff/examples/embedded_ui/Makefile +0 -67
  1037. data/plugins/fff/vendor/fff/examples/embedded_ui/SYSTEM.h +0 -31
  1038. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.c +0 -56
  1039. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.h +0 -22
  1040. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_ansic.c +0 -191
  1041. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_cpp.cpp +0 -144
  1042. data/plugins/fff/vendor/fff/examples/embedded_ui/test_suite_template.c +0 -42
  1043. data/plugins/fff/vendor/fff/gtest/Makefile +0 -22
  1044. data/plugins/fff/vendor/fff/gtest/gtest-all.cc +0 -9118
  1045. data/plugins/fff/vendor/fff/gtest/gtest-main.cc +0 -6
  1046. data/plugins/fff/vendor/fff/gtest/gtest.h +0 -19547
  1047. data/plugins/fff/vendor/fff/test/Makefile +0 -81
  1048. data/plugins/fff/vendor/fff/test/c_test_framework.h +0 -25
  1049. data/plugins/fff/vendor/fff/test/fff_test_c.c +0 -116
  1050. data/plugins/fff/vendor/fff/test/fff_test_cpp.cpp +0 -53
  1051. data/plugins/fff/vendor/fff/test/fff_test_global_c.c +0 -84
  1052. data/plugins/fff/vendor/fff/test/fff_test_global_cpp.cpp +0 -31
  1053. data/plugins/fff/vendor/fff/test/global_fakes.c +0 -21
  1054. data/plugins/fff/vendor/fff/test/global_fakes.h +0 -47
  1055. data/plugins/fff/vendor/fff/test/test_cases.include +0 -276
  1056. data/plugins/report_tests_gtestlike_stdout/assets/template.erb +0 -83
  1057. data/site-local/snapshot/assets/project.yml +0 -404
  1058. data/spec/system/partials_types_header_spec.rb +0 -166
  1059. data/spec/units/configurator_spec.rb +0 -232
  1060. /data/assets/{ceedling → features/ceedling} +0 -0
  1061. /data/assets/{ceedling.cmd → features/ceedling.cmd} +0 -0
  1062. /data/assets/{default_gitignore → features/default_gitignore} +0 -0
  1063. /data/assets/{broken_uncovered_file.c → fixtures/broken_uncovered_file.c} +0 -0
  1064. /data/assets/{example_file.c → fixtures/example_file.c} +0 -0
  1065. /data/assets/{example_file.h → fixtures/example_file.h} +0 -0
  1066. /data/assets/{example_file_call.c → fixtures/example_file_call.c} +0 -0
  1067. /data/assets/{example_file_call.h → fixtures/example_file_call.h} +0 -0
  1068. /data/assets/{example_file_with_statics.c → fixtures/example_file_with_statics.c} +0 -0
  1069. /data/assets/{example_file_with_stdio.c → fixtures/example_file_with_stdio.c} +0 -0
  1070. /data/assets/{example_file_with_stdio.h → fixtures/example_file_with_stdio.h} +0 -0
  1071. /data/assets/{fake_crash_test_fixture.rb → fixtures/fake_crash_test_fixture.rb} +0 -0
  1072. /data/assets/{partial_all_module.h → fixtures/partial_all_module.h} +0 -0
  1073. /data/assets/{run_with_ubsan.rb → fixtures/run_with_ubsan.rb} +0 -0
  1074. /data/assets/{same_dir_pairing_module.c → fixtures/same_dir_pairing_module.c} +0 -0
  1075. /data/assets/{same_dir_pairing_module.h → fixtures/same_dir_pairing_module.h} +0 -0
  1076. /data/assets/{same_dir_pairing_module_func.h → fixtures/same_dir_pairing_module_func.h} +0 -0
  1077. /data/assets/{same_dir_pairing_other.c → fixtures/same_dir_pairing_other.c} +0 -0
  1078. /data/assets/{same_dir_pairing_other.h → fixtures/same_dir_pairing_other.h} +0 -0
  1079. /data/assets/{test_example_file.c → fixtures/test_example_file.c} +0 -0
  1080. /data/assets/{test_example_file_2.c → fixtures/test_example_file_2.c} +0 -0
  1081. /data/assets/{test_example_file_source_include.c → fixtures/test_example_file_source_include.c} +0 -0
  1082. /data/assets/{test_example_file_success.c → fixtures/test_example_file_success.c} +0 -0
  1083. /data/assets/{test_example_file_unity_printf.c → fixtures/test_example_file_unity_printf.c} +0 -0
  1084. /data/assets/{test_example_file_verbose.c → fixtures/test_example_file_verbose.c} +0 -0
  1085. /data/assets/{test_example_file_with_mock.c → fixtures/test_example_file_with_mock.c} +0 -0
  1086. /data/assets/{test_example_file_with_stdio.c → fixtures/test_example_file_with_stdio.c} +0 -0
  1087. /data/assets/{test_example_with_parameterized_tests.c → fixtures/test_example_with_parameterized_tests.c} +0 -0
  1088. /data/assets/{test_partial_all_module.c → fixtures/test_partial_all_module.c} +0 -0
  1089. /data/assets/{test_same_dir_pairing.c → fixtures/test_same_dir_pairing.c} +0 -0
  1090. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_config.h +0 -0
  1091. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_extra.h +0 -0
  1092. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/local_flag_extra.h +0 -0
  1093. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_extra.h +0 -0
  1094. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_wrapper.h +0 -0
  1095. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/project_flag_extra.h +0 -0
  1096. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.h +0 -0
  1097. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.c +0 -0
  1098. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.h +0 -0
  1099. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.c +0 -0
  1100. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.h +0 -0
  1101. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware.c +0 -0
  1102. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware_special.c +0 -0
  1103. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.c +0 -0
  1104. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.h +0 -0
  1105. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder.c +0 -0
  1106. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder_partial.c +0 -0
  1107. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/conditional_module.h +0 -0
  1108. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/optional_dep.h +0 -0
  1109. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.c +0 -0
  1110. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.h +0 -0
  1111. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.c +0 -0
  1112. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.h +0 -0
  1113. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.c +0 -0
  1114. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.h +0 -0
  1115. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_blanks.c +0 -0
  1116. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_counter.c +0 -0
  1117. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_decorators.c +0 -0
  1118. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.c +0 -0
  1119. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.h +0 -0
  1120. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.c +0 -0
  1121. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.h +0 -0
  1122. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.c +0 -0
  1123. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.h +0 -0
  1124. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorA.h +0 -0
  1125. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorB.h +0 -0
  1126. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorC.h +0 -0
  1127. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareA.c +0 -0
  1128. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareB.c +0 -0
  1129. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareC.c +0 -0
  1130. /data/assets/{uncovered_example_file.c → fixtures/uncovered_example_file.c} +0 -0
  1131. /data/plugins/bullseye/assets/{template.erb → coverage.template} +0 -0
data/docs/Changelog.md CHANGED
@@ -10,6 +10,300 @@ This changelog is complemented by three other documents:
10
10
 
11
11
  ---
12
12
 
13
+ # [1.2.0] — 2026-10-21
14
+
15
+ ## 🌟 Added
16
+
17
+ ### Delta builds
18
+ [Delta builds](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/builds/) have been restored after a temporary hiatus following a major refactoring for 1.0.0 ([Restore delta test builds to Ceedling 1.0.0+](https://github.com/ThrowTheSwitch/Ceedling/issues/1143)).
19
+
20
+ A [delta build](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/builds/#delta-build-overview) is simply a build run that only performs regeneration, compilation, linking, or execution as needed because of changed files or configuration. Ceedling 1.0.0 introduced [threaded parallel build steps](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/parallel-builds/) but had to remove [delta builds](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/builds/) in the process. As of 1.2.0, both build speedups are now available. [Delta builds](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/builds/) are automatic with no configuration needed.
21
+
22
+ If a build requests a test to be built/run but no changes for it exist, its cached test results will be reported. The [`--force-test-rerun`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-build-tasks) flag is available at the command line for any test-related tasks to force the [delta build](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/builds/#delta-build-special-cases) mechanism to rerun test executables and produce new test results.
23
+
24
+ [Delta builds](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/builds/) are fully integrated with test build plugins (e.g. [GCov](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/), [Valgrind](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/)). Each runs its own build through the same test pipeline as an ordinary test build, under its own build context, so it benefits from the same staleness tracking within its own isolated dependency cache
25
+
26
+ ### `#include` relative paths & duplicate filename disambiguation
27
+ Added support for properly [distinguishing all C files by filepath](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#distinguishing-same-named-files) (addressing [#1167](https://github.com/ThrowTheSwitch/Ceedling/issues/1167) specifically but also the fundamental problem generally).
28
+
29
+ In Ceedling’s early history simplicity won out with the assumption that every C file would be uniquely named. But, for example, this meant _dir1/foo.h_ and _dir2/foo.h_ were indistiguishable and Ceedling “guessed” to disambiguate using the ordering of filepath collections. This worked, but there was no ability to use partial paths to explicitly select a specific file. Now Ceedling fully utilizes filepaths to distinguish all elements of a test build. [Relative paths are supported in `#include` directives](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#distinguishing-same-named-files). [`test:` build tasks](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-testpath) at the command line can optionally include a filepath to distinguish test files of the same name. The previous convention still works where the ordering of paths is identical among [compiler search paths](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#test-build-search-paths) and those used to find files for test builds, but now additional path information can be provided to target specific files in your source collection.
30
+
31
+ ### Partials filepaths & duplicate module name disambiguation
32
+ [#1311](https://github.com/ThrowTheSwitch/Ceedling/issues/1311) Added [directory-qualified Partial directive macros](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/directives/#naming-a-module-by-directory) so [Partials](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/) share the filepath handling the rest of a test build gained in this release (see previous section).
33
+
34
+ Previously, [Partial directive macros](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/directives/) took only a bare module name with no means to provide path information to distinguish modules of the same name. Every Partials [`_MODULE` and `_CONFIG` macro](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/directives/#partials-function-selection-by-macro) now has an `_AT` variant taking that module’s directory as a separate first argument (e.g. [`TEST_PARTIAL_PRIVATE_MODULE_AT(sensors/soil, Calibration)`](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/directives/#naming-a-module-by-directory)). As with [`#include` directives](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#distinguishing-same-named-files) elsewhere, the directory is matched against the trailing end of a real file’s path. [Supply only as much of it](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/directives/#how-much-path-to-supply) as it takes to name the module you mean. A bare module name in the original macros continues to work unchanged.
35
+
36
+ A test file can now **test** two same-named modules together, and it can **mock** both of them too (see the next section).
37
+
38
+ ### Mocking same-named headers by directory
39
+ A test file can now mock two headers that share a filename, such as `drivers/uart/config.h` and `drivers/spi/config.h`, by including each mock through its folder (`#include "drivers/uart/mock_config.h"`). This works for [traditional mocks](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/frameworks/#cmock-configuration), [`MOCK_PARTIAL_*_MODULE_AT()` Partials](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/directives/#naming-a-module-by-directory), and the [FFF plugin’s fakes](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/fff/#fakes-of-same-named-headers). The new [`:cmock` ↳ `:mock_name_include_folder`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/cmock/#mock_name_include_folder) setting, enabled by default, names each mock’s internals by that folder so the two mocks no longer collide. It relies on matching features in [CMock](https://docs.throwtheswitch.org/Ceedling/1.2.0/overview/tools-and-frameworks/#cmock) and [Unity](https://docs.throwtheswitch.org/Ceedling/1.2.0/overview/tools-and-frameworks/#unity), which Ceedling’s vendored copies include.
40
+
41
+ ### Multiple file extensions per file type
42
+ Added support for multiple [file extensions](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/extension/) per type (e.g. [`:extension` ↳ `:source`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/extension/#source) ⇒ `['.c', '.C']`) such as requested in [#947](https://github.com/ThrowTheSwitch/Ceedling/issues/947).
43
+
44
+ ### Dedicated mocks and test runner generation build tasks
45
+ Some users have asked for the ability to run the [test build pipeline](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-build-tasks) only up through generating mocks or test runners without running the rest of a build. This is now possible.
46
+
47
+ Tasks mirroring [command line `test:` task invocation](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-test) but with an early termination like [`test:build_only`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-testbuild_only) now exist:
48
+
49
+ * [`gen:mocks:<test>`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-genmocks)
50
+ * [`gen:test_runner:<test>`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-gentest_runner)
51
+
52
+ Like with [command line `test:` tasks](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-test), `<test>` can be `all`, a test file name, or a source file name that has a corresponding test file.
53
+
54
+ ### Test build fallback preprocessing improvements
55
+ If your toolchain’s preprocessor lacks certain features, Ceedling still attempts to extract information and code from C files through [fallback text processing](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#fallback-test-build-preprocessing). In 1.1.0 this was exposed as a [project configuration option](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/test-build/#preprocess_force_fallback) mostly for Ceedling’s self-tests and also noted as a possible option should Ceedling’s [probe for toolchain preprocessor features](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#fallback-test-build-preprocessing) ever provide a false positive.
56
+
57
+ In 1.2.0, [fallback preprocessing](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#fallback-test-build-preprocessing) can now sometimes be used in projects with simple conditional compilation (e.g. `#ifdef`) as a faster alternative to [full toolchain preprocessing](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#test-preprocessing). A test file’s [`#include`s](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#preprocessing-for-include-directives) are now checked against a plain run of your toolchain’s preprocessor. A mock in an `#if` branch that is off no longer stops a build or replaces the real module it guards. [Fallback preprocessing](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#fallback-test-build-preprocessing) remains a best effort with no guarantees. Error messages will indicate if [fallback preprocessing](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#fallback-test-build-preprocessing) is insufficient for your project’s preprocessing needs.
58
+
59
+ Force fallback preprocessing with [`:test_build` ↳ `:preprocess_force_fallback`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/test-build/#preprocess_force_fallback) but **_be sure to understand [Ceedling’s test preprocessing](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#test-preprocessing) before doing so_**.
60
+
61
+ ### Test case shuffling at runtime
62
+ Ceedling now integrates [Unity’s](https://docs.throwtheswitch.org/Ceedling/1.2.0/overview/tools-and-frameworks/#unity) features for randomizing test case execution within a test executable ([PR #1041](https://github.com/ThrowTheSwitch/Ceedling/pull/1041) via [`:unity` ↳ `:shuffle_tests`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/unity/#shuffle_tests) ⇒ `TRUE`. If enabled, the behavior of [delta builds](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/builds/) automatically adjusts to always execute test executables even if no code changes have occurred. This ensures the randomization occurs when test executables would otherwise fail to run for lack of any code or configuration changes up the dependency tree.
63
+
64
+ ### Subtractive paths in `TEST_SOURCE_FILE()`
65
+ The [`TEST_SOURCE_FILE()` build directive macro](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/build-directives/#test_source_file-subtractive-notation) can now be used to remove source files from a test executable build using the same `-:` filepath decorator as available in [`:paths`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/paths/#subtractive-entries) project configuration (ex. `TEST_SOURCE_FILE("-:foo/bar/file.c")`). This can be handy in overriding [Ceedling’s conventions](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/build-directives/#test_source_file-the-headersource-convention) for associating source files with a test executable if your project structure does not match up with Ceedling’s conventions.
66
+
67
+ ### `ceedling.yml` as an alternate default project file
68
+ [#1250](https://github.com/ThrowTheSwitch/Ceedling/issues/1250) [`ceedling.yml`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/loading/#default-project-file-in-your-working-directory) is now recognized as an alternate default project filename alongside `project.yml`. Either name is loaded the same way; neither is preferred over the other. If both exist in the same directory, Ceedling raises an error. [`ceedling new`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-new-dest) continues to generate `project.yml` by default; pass `--ceedling-yml` to generate `ceedling.yml` instead. See [Loading a Project Configuration](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/loading/).
69
+
70
+ ### `ceedling dumpconfig` gains a `--stdout` option
71
+ Running the [`dumpconfig`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-dumpconfig-filepath-sections) application command to produce a fully resolved project configuration now supports an option to send the resulting YAML directly to `$stdout` instead of a filepath. This is one small step towards Ceedling support for working with other tooling (e.g. agentic coding tools) in future releases.
72
+
73
+ ### Gcov plugin
74
+ #### Gcovr raw custom arguments
75
+ [#1159](https://github.com/ThrowTheSwitch/Ceedling/issues/1159) Added [`:gcov` ↳ `:gcovr` ↳ `:custom_args:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#custom_args), a list of raw command line arguments passed straight through to `gcovr`. This is an escape hatch for any `gcovr` flag Ceedling has no named option for (e.g. limiting gcovr’s search root), mirroring the [`:report_generator` ↳ `:custom_args:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/reportgenerator/#custom_args) option that already existed for the ReportGenerator side of the [Gcov plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/). Unlike every other GCovr option, `:custom_args:` still applies even when [`:config_file`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#config_file) is set.
76
+
77
+ #### Gcovr JaCoCo and LCOV reports
78
+ [#963](https://github.com/ThrowTheSwitch/Ceedling/issues/963) Added [`JaCoCo`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#jacoco-xml-reports) to the [Gcov plugin’s `:reports`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/reporting/), a JaCoCo XML coverage report generated by `gcovr` and importable by IDEs such as CLion. The existing `lcov` report, previously generated only by [ReportGenerator](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/reportgenerator/), is now also generated by [`gcovr`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#lcov-reports). Both require `gcovr` 7.0 or higher and come with options for [pretty-printing](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#jacoco_pretty), [LCOV comments](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#lcov_comment) and [test names](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#lcov_test_name), and [artifact filenames](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#jacoco_artifact_filename).
79
+
80
+ #### ReportGenerator coverage-threshold parity
81
+ Added `:gcov` ↳ `:report_generator` ↳ [`:fail_under_line`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/reportgenerator/#fail_under_line)/[`:fail_under_branch`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/reportgenerator/#fail_under_branch)/[`:fail_under_method`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/reportgenerator/#fail_under_method)/[`:fail_under_full_method`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/reportgenerator/#fail_under_full_method), ReportGenerator’s own coverage-threshold options mirroring the Gcovr side’s existing [`:fail_under_*`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/#fail_under_line) family. A configured threshold breaks the build in the same way as these options do with Gcovr.
82
+
83
+ ### Bullseye plugin
84
+ The [Bullseye code coverage plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/bullseye/) using the commercial [Bullseye](https://www.bullseye.com/) tool is enabled again (disabled since 1.0.0). The makers of Bullseye generously provided a license in order to modernize the plugin.
85
+
86
+ The refreshed Bullseye plugin offers additional features over the original version including support for [branch coverage detail](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/bullseye/#branch_detail), [machine-readable coverage reports (XML flavors)](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/bullseye/#xml_report), and an optional [coverage threshold](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/bullseye/#fail_under) that will break a test build.
87
+
88
+ ### Sanitize plugin
89
+ The new [Sanitize plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/sanitize/) builds and runs tests with the compiler’s sanitizers. [`sanitize:all`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/sanitize/#usage) and its sibling tasks run [AddressSanitizer](https://clang.llvm.org/docs/AddressSanitizer.html), [UndefinedBehaviorSanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html), and [LeakSanitizer](https://clang.llvm.org/docs/LeakSanitizer.html) in a build of their own, and [`:sanitize` ↳ `:test_builds`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/sanitize/#test_builds) instruments ordinary `test:` builds as well. The plugin’s flags never reach another plugin’s build, such as [Gcov](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/) or [Valgrind](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/). A test a sanitizer stops fails with [its finding named](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/sanitize/#how-findings-are-reported), such as `AddressSanitizer heap-buffer-overflow at test/test_buffer.c:21`, while a leak is reported as a finding without disturbing test results. Each test’s sanitizer reports are kept in a [log of its own](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/sanitize/#artifacts), [`:reports`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/sanitize/#reports) writes text, JSON, and SARIF reports, and [`:fail_build`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/sanitize/#fail_build) fails the build on any finding. The plugin runs on Linux and macOS; leak detection is Linux only.
90
+
91
+ ### Valgrind plugin
92
+
93
+ - Added [`:valgrind` ↳ `:suppressions:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/#suppressions), a list of Valgrind suppression files. Previously these had to be hand-injected into [`:arguments:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/#arguments).
94
+ - Added [`:valgrind` ↳ `:xml_report:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/#xml_report) to write a machine-readable report per test executable alongside the text log, for CI systems or other tooling to consume Valgrind output directly.
95
+
96
+ ### Cppcheck plugin
97
+
98
+ - Added [`:cppcheck` ↳ `:fail_build:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#fail_build) and [`:fail_build_severities:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#fail_build_severities) to break a build on findings. Cppcheck exits successfully even when it finds defects, so [`cppcheck:all`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#analyze-whole-project) previously could not fail a build at all. Only `error` severity fails by default, since whole project analysis always enables every check.
99
+ - [`cppcheck:all`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#analyze-whole-project) now prints a per-severity tally of findings. Results previously landed only in report files, with nothing shown at the console.
100
+
101
+ ### Module Generator plugin
102
+
103
+ - [#695](https://github.com/ThrowTheSwitch/Ceedling/issues/695) Added [`module:test[...]`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#testing-from-headers), which writes a test file holding an ignored test for each function a module’s header declares. Run again, it adds tests only for newly declared functions.
104
+ - [#665](https://github.com/ThrowTheSwitch/Ceedling/issues/665) Added [`:test_guard`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#test-guards) to wrap generated tests in `#if` rather than `#ifdef`. Generating tests now warns when the guarding [test define](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#test-defines) is not defined for test builds, since those tests would compile to nothing.
105
+ - [#1025](https://github.com/ThrowTheSwitch/Ceedling/issues/1025) [`module:create`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#overview) now warns about each [existing file elsewhere in the project that shares a name](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#same-named-files) with a file it creates.
106
+
107
+ ### Dependencies plugin executables
108
+ [#1110](https://github.com/ThrowTheSwitch/Ceedling/issues/1110) A dependency can now list the programs it builds under [`:artifacts` ↳ `:executables`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#executables) for tools rather than libraries. A release build or [`dependencies:make`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#ceedling-dependenciesmake) builds them when missing, test builds do not wait on them, and they are never linked. [`dependencies:deploy`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#ceedling-dependenciesdeploy) copies them, along with [dynamic libraries](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#dynamic_libraries), to a new optional [`:paths` ↳ `:deploy`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#working-paths) folder, by default beside the release executable.
109
+
110
+ ### Build warnings plugin context, deduplication, and filtering
111
+ The [Build Warnings Log plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/) now logs each GCC or Clang warning with the lines that explain it — the function or include context before it along with the source line, caret, and any note after it. Each distinct warning is logged once per build context, so a header's warning appears once rather than once per file including it, and compiler summary lines are left out. New [`:patterns`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#patterns) and [`:excludes`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#excludes) settings optionally take regular expressions that replace the default match of any line mentioning “warning” and optionally drop warnings you have already accepted or prevent false positives.
112
+
113
+ ### Build warnings plugin SARIF and JSON reports
114
+ The [Build Warnings Log plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#reports) can now write its warnings as [SARIF](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#sarif-report) and [JSON](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#json-report) reports alongside, or instead of, its plain [text log](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#text-report). SARIF, the standard format for static analysis results, lets GitHub code scanning, Azure DevOps, SonarQube, Jenkins, and IDE viewers show each warning on the line it concerns. The [JSON report](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#json-report) lists each warning’s file, line, column, severity, flag, message, and context for scripts. The new [`:reports`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#reports) setting selects any of `:text`, `:sarif`, and `:json`, and defaults to `:text`. The structured reports are written for every build context that ran a build step, even without warnings, so a CI step always finds its file.
115
+
116
+ ### JUnit report plugin test locations
117
+ [#583](https://github.com/ThrowTheSwitch/Ceedling/issues/583) The [Test Suite Report Log Factory plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/#junit-test-locations)’s [JUnit report](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/#junit-xml-format) now says where each test case lives. Each `<testcase>` carries `classname`, `file`, and `line` attributes, and a failure’s message starts with its file and line (e.g. `test/TestUsartModel.c:44: ...`). CI tools such as GitLab can then link a result to its code. `classname` keeps the test file’s path so same-named test files in different folders stay distinct. The new [`:junit` ↳ `:file_line_anchor`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/#junit-test-locations) option writes `file` as `path#line` for tools that follow that form.
118
+
119
+ ### GTest-like report plugin skipped tests
120
+ The [GTest-like console report](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-gtestlike-stdout/) (`report_tests_gtestlike_stdout`) now reports a Unity test ignored with `TEST_IGNORE()` or `TEST_IGNORE_MESSAGE()` as a [GoogleTest skipped test](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-gtestlike-stdout/#googletest-skip-support-and-its-consumers). A skipped test is listed with its location and message, counted in the run, and summarized between passed and failed tests, the way GoogleTest 1.10.0 and later reports `GTEST_SKIP()`. A test file whose every test is ignored now gets its own section. The new [`:report_tests_gtestlike_stdout` ↳ `:ignored_as_skipped:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-gtestlike-stdout/#configuration) setting defaults to `TRUE`. Set it to `FALSE` to leave ignored tests out of the report for tools that do not understand skipped tests (see the related _Changed_ entry below).
121
+
122
+ ### IDE report plugin formats
123
+ [#633](https://github.com/ThrowTheSwitch/Ceedling/issues/633) The [IDE console report](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/) (`report_tests_ide_stdout`) now lists failed and ignored tests in the shape of [GCC diagnostics](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#plugin-overview) (e.g. `test/TestModel.c:21:1: error: testInit: Expected 5 Was 4`). [Eclipse CDT](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#eclipse-cdt), [VS Code](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#vs-code), [CLion](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#clion), and other tools that read GCC output show each failure as an error and each ignored test as a warning, linked to the test. The new [`:report_tests_ide_stdout` ↳ `:format`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#format) setting defaults to `:gcc`. [`:legacy`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#format) restores the earlier, simpler lines. `:vscode`, `:eclipse`, and `:clion` name the settings each IDE needs. The plugin documentation now covers [set up for each of these IDEs](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#ide-setup) (see the related _Changed_ entry below).
124
+
125
+ ### Filepath limit checks
126
+ Platform filepath limits (especially on Windows) can lead to mysterious build failures, especially in CI where deep project subdirectories can occur. To help track down funny business, filepaths are intercepted and their lengths logged if they are nearing or exceed the platform limit.
127
+
128
+ ### Retry handling for child process generated file dependencies
129
+ In certain intervening circumstances, particularly on Windows, a child process may successfully generate a file that Ceedling expects to be present but OS-related issues (e.g. virus software, security checks, cloud storage syncing) delay from actually appearing in the file system. A new application-wide retry mechanism deals with the situations and fails properly if the delay exceeds the retry limit.
130
+
131
+ ### Windows test executable manifests
132
+ [#146](https://github.com/ThrowTheSwitch/Ceedling/issues/146) [#116](https://github.com/ThrowTheSwitch/Ceedling/issues/116) On Windows, Ceedling now writes a manifest beside each test executable to help ensure that [any test filename can be run](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#installer-like-test-filenames-on-windows). The Installer Detection feature of User Account Control (UAC) otherwise demands administrator privileges for an executable whose name contains _install_, _setup_, _update_, or _patch_. A test filename containing one of these words is noted with a warning. Note that modern Windows compiler toolchains tend to
133
+ embed a manifest that prevents the privilege limitation; Ceedling’s external manifest is further insurance.
134
+
135
+ ## 💪 Fixed
136
+
137
+ Note: 1.2.0 includes all bug fixes for 1.1.x.
138
+
139
+ - A CLI parameter string mutation issue that could corrupt certain build or plugin task invocations.
140
+ - Fixed a Unity `TEST_IGNORE_MESSAGE()` test case being misreported as crash evidence during crash-diagnosis retries when it shares a test file with a genuine crash.
141
+ - [#104](https://github.com/ThrowTheSwitch/Ceedling/issues/104) Fixed a literal `[` or `]` in a path being silently misread as a [glob](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/paths/#paths-globs) or regular expression syntax. This could drop files from a build with no error, cause issues with a [`:build_root`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/project/#build_root) entry, or cause a passing test run to be reported as "no tests executed."
142
+ - [#1083](https://github.com/ThrowTheSwitch/Ceedling/issues/1083) Fixed a test file’s `#include` of a mock being dropped with [`:use_test_preprocessor`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/project/#use_test_preprocessor) set to `:tests` or `:all` when an `#ifdef` or `#if` around it depended on a [macro defined in a header](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#where-the-macros-deciding-an-include-come-from). The mock was never generated, and the build stopped on a missing mock header. The macro now decides the `#include` as it will at compile time, whether it reaches the test file through a header the test includes directly or through one it mocks.
143
+ - [#1267](https://github.com/ThrowTheSwitch/Ceedling/issues/1267) Fixed a conditional `#include` whose target is a macro invocation (e.g. `#include DEVICE_HEADER(x)`) being silently dropped from [includes extraction](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#preprocessing-for-include-directives) whenever its own guard condition depended on a symbol defined in another header.
144
+ - [#1292](https://github.com/ThrowTheSwitch/Ceedling/issues/1292) Fixed an intermittent `Errno::ENOTDIR`/`EISDIR` crash when automatically vendoring Unity, CMock, and CException into a project’s build directory, caused by a transient file-system race (e.g. an antivirus/EDR lock, a cloud-sync filter driver, or a second concurrent Ceedling invocation). The copy step now retries transient races and self-heals a stale, wrong-typed leftover from a previous failed copy.
145
+ - Fixed a rare, Ruby-version- and platform-dependent misordering of include lists and mixin environment variable resolution caused by relying on `sort`/`sort_by`’s ordering among tied elements, which Ruby does not guarantee to be stable.
146
+ - Fixed two source files of the same name in one test executable sharing a single preprocessed intermediate file, so whichever was preprocessed second overwrote the first. Preprocessed files now mirror their source’s own directory, matching the convention compiled objects already follow.
147
+ - Fixed a generated header’s fallback `#include` guard being built from a filename alone, so two same-named headers in one test shared one guard and whichever the compiler read second was emptied of its declarations.
148
+ - Fixed a local release gem build packaging leftover build output from the machine that built it, including compiled object files and executables. Fixed the same packaging omitting the configuration file that the test suites bundled with the gem need in order to run at all. Since the release gem is produced in a clean CI environment the underlying issue never affected gems published through GitHub and RubyGems.org.
149
+
150
+ ### Backtrace / `gdb` handling
151
+
152
+ - Fixed [`:use_backtrace` ⇒ `:gdb`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/project/#gdb) remaining active on a machine where `gdb` cannot actually attach to a process (e.g. lost macOS codesigning trust after a system update or Homebrew upgrade). Previously, Ceedling validated that `gdb` was available but not its ability to probe a process. Ceedling now detects a degraded `gdb` at build startup and falls back to [`:simple`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/project/#simple) automatically, with a prominent warning for the condition.
153
+ - Fixed handling for a crashed test executable that `gdb` could not usefully explain looking identical to an ordinary crash report. Ceedling now better detects this and prominently warns when this happens.
154
+
155
+ ### Partials
156
+
157
+ - Fixed a bare, top-level macro invocation that expands to a full function definition (a common x-macro boilerplate idiom) silently corrupting or losing whatever construct followed it during [Partials](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/) extraction.
158
+ - Fixed a [Partial](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/) resolving its module’s header and its module’s source independently, which could pair one module’s header with a same-named other module’s source.
159
+ - Fixed a [Partialized module’s](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/) own real header being reachable by its bare filename from inside the [generated Partial](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/overview/#generated-files), so a Partial could be compiled against a same-named other module’s header.
160
+
161
+ ### Mixins
162
+
163
+ - Fixed priority / precedence issues with [command line mixin](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/mixins/#-mixin-command-line-flags) edge case (same mixin provided multiple times).
164
+ - Fixed [mixin environment variable](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/mixins/#environment-variables) name matching issues such as a leading zero for `01` numbering or improperly matching on an environment variable similar to the mixin convention.
165
+ - Fixed an edge case for [`tools:` argument](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/tools/#ceedling-tool-arguments-addition-shortcut) special handling merging involving a single string argument instead of list of arguments.
166
+
167
+ ### Reporting plugins
168
+
169
+ - Fixed a thread-safety issue in [`report_build_warnings_log`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/) that could crash a multi-threaded build or produce an incomplete warnings log.
170
+ - Fixed the GTest-like console report ([`report_tests_gtestlike_stdout`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-gtestlike-stdout/)) mislabeling ignored tests as passing and silently dropping their ignore message; its header and footer test counts could also disagree whenever a build had ignored tests.
171
+ - Fixed the TeamCity console report ([`report_tests_teamcity_stdout`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-teamcity-stdout/)) not escaping a real line break in a failure message, corrupting the TeamCity service message it produced.
172
+
173
+ #### `report_tests_log_factory`
174
+ - Fixed [`report_tests_log_factory`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/)’s [JUnit](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/#junit-xml-format), [CppUnit](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/#cppunit-xml-format), and [HTML](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/#html-format) reports producing malformed or unsafe output when processing characters like `<`, `>`, `&`, or `"`.
175
+ - Fixed [`report_tests_log_factory`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/) report content silently depending on the order reports were listed in [`:report_tests_log_factory` ↳ `:reports:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-log-factory/#configuration) (e.g. enabling `junit` ahead of `cppunit`)
176
+
177
+ ### Module Generator plugin
178
+
179
+ - Fixed a [path hint](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#path-hints) carrying over from one module to the next when a call names several, such as [`module:create[lab:First,Second]`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#patterns).
180
+ - Fixed several [ordered hints](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#path-hints) such as `lab:secret:lair` creating a file named `secret:lair` rather than matching nested folders. A Windows drive letter in a hint now stays part of its path.
181
+ - Fixed a hint failing the whole command when it matched no path of one kind. Files of that kind now go to its [first path](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#default-paths), and only a hint matching nothing at all stops the command. Headers go with the source when no include paths are listed.
182
+ - Fixed any name beginning with `test` being taken as a test file, turning `testimony` into `imony`. Only a name carrying the configured [`:test_file_prefix`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/project/#test_file_prefix) asks for a test file alone.
183
+ - Fixed [`module:stub`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#stubbing) ignoring the project’s [`:cmock`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/cmock/) settings and a subdirectory named with a slash, printing its configuration, and triggering a CMock warning about [`:includes`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/cmock/#includes).
184
+ - Fixed [`:boilerplate_files`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#boilerplate-files) changing the configured [`:boilerplates`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#boilerplates). A boilerplate file that does not exist now stops the command rather than being ignored.
185
+
186
+ ### Command Hooks plugin
187
+
188
+ - Fixed certain [hooks](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/command-hooks/#available-build-step-hooks) handing their tools an empty `${1}`.
189
+ - The [compile hooks](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/command-hooks/#pre_compile_execute) now pass the source file as `${1}` and the object file as `${2}`, and [`:pre_runner_generate`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/command-hooks/#pre_runner_generate) passes the test file, as documented.
190
+ - Fixed a hook configured with a [list of tools](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/command-hooks/#tool-lists) failing validation.
191
+ - Fixed the build hooks ([`:pre_build`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/command-hooks/#pre_build), [`:post_build`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/command-hooks/#post_build), [`:pre_test_build`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/command-hooks/#pre_test_build), and the like) handing their tools a date string rather than a timestamp in seconds on Windows.
192
+
193
+ ### Dependencies plugin
194
+
195
+ - Fixed enabling the plugin making its [fetch tools](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#fetching-dependencies) (`unzip`, `tar`, `git`, `svn`) and its [`:build_lib`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#building-dependencies) compiler and archiver requirements of every Ceedling command, including plain [`test:all`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-testall). Each is now checked just before a dependency fetches or builds with it.
196
+ - [#1076](https://github.com/ThrowTheSwitch/Ceedling/issues/1076) Fixed a second [`dependencies:fetch`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#ceedling-dependenciesfetch), or a [`dependencies:make`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#ceedling-dependenciesmake) after a fetch, failing because `git clone` ran into the already-populated folder. A dependency whose fetch path holds files now counts as fetched, and [`dependencies:clean`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#ceedling-dependenciesclean) allows a fresh fetch. [Working paths](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#working-paths) are no longer created ahead of fetching, which made a clone into a fetch path containing the build path fail.
197
+ - [#1110](https://github.com/ThrowTheSwitch/Ceedling/issues/1110) Fixed [`dependencies:deploy`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#ceedling-dependenciesdeploy) trying to copy a file named for the dependency rather than its dynamic libraries. It now copies every [dynamic library](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#dynamic_libraries) from the artifact path beside the release executable.
198
+ - Fixed a [`:tar_gzip`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#fetching-dependencies) fetch from an absolute Windows path failing with "Cannot connect to D: resolve failed" where GNU tar, as Git for Windows provides, came first on the path. GNU tar reads a path beginning with a drive letter as a remote host, so `tar` now reads the archive on its standard input.
199
+ - Fixed a dependency's [`:environment`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#environment-variables) variables lasting for the rest of the run, reaching every later dependency and Ceedling itself. They now apply only while that dependency's commands run. An entry not of the form `NAME=value`, `NAME+=value`, or `NAME-=value` now stops the build rather than being ignored. Text after `+=` and `-=` now keeps its leading space, so an appended flag can carry the delimiter it needs.
200
+ - Fixed a dependency without [`:artifacts`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#artifacts) crashing the build. Configuration problems now stop the build with a message naming the dependency: a missing name, a name without letters or digits, two names sharing a task name, an unknown [fetch method](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#fetching-dependencies), or a fetch method missing its `:source` or `:executable`.
201
+ - Fixed an [`:includes`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#includes) glob under [`:artifacts`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#artifacts) expanding against the working directory rather than the artifact path, and joining every directory it found into one path.
202
+ - Fixed [`:build_lib`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#building-dependencies) depending on the process working directory, and miscomputing where to copy its library when the `:artifact` path was absolute or climbed with `..`. The [`:deps_compiler`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/dependencies/#custom-tools) tool now receives its search paths and defines as `${5}` and `${6}`, like Ceedling's own [compilers](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/tools/#tool-element-runtime-substitution-notational-substitution).
203
+
204
+ ### Valgrind & Cppcheck plugins
205
+
206
+ - Fixed enabling either plugin making its analysis tool a hard dependency of *every* Ceedling command, including plain [`test:all`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-testall). Each tool is now required only by its own plugin’s tasks. [`ceedling files:cppcheck`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#list-suppression-files) no longer needs Cppcheck installed either.
207
+
208
+ ### Valgrind plugin
209
+
210
+ - Fixed memory errors being undercounted for a test that forks. Valgrind reports a separate error summary for each process it traces, and only the first was counted.
211
+ - Fixed a test whose Valgrind report could not be read being treated as a clean result. Ceedling now warns that the memory error status is unknown.
212
+ - Fixed the "Wrote N Valgrind report(s)" notice repeating with a different partial count for each test that found errors. It is reported once and counts the reports actually written.
213
+ - Fixed settings other than [`:arguments`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/#arguments) configured under [`:tools` ↳ `:valgrind`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/#configuration) being silently discarded.
214
+ - Fixed a `valgrind:` build’s test results report coming up empty. The plugin looked for results where an ordinary `test:` build writes them, not where its own build does.
215
+ - Fixed [`--test-case`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-test-test-casetest_case_name) and `--exclude_test_case` filters in a `valgrind:` build being handed to Valgrind rather than to the test executable.
216
+ - A `valgrind:` task on a platform without Valgrind now explains that Valgrind runs on Linux and other Unix-like systems rather than only reporting a missing executable.
217
+
218
+ ### Cppcheck plugin
219
+
220
+ - Fixed [`:cppcheck` ↳ `:xml_report_version`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#xml_report_version) defaulting to a version older Cppcheck releases reject outright, breaking the XML report on common installations. The default is now the version every release accepts.
221
+ - Fixed requesting an [`html` report](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#reports) making `cppcheck-htmlreport` mandatory, contradicting that tool’s own optional status.
222
+ - Fixed [`cppcheck:all`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#analyze-whole-project) analyzing nothing and saying nothing when no report is configured, which read like a successful run. The plugin now explains what to configure.
223
+ - Fixed a configuration list containing a single non-string entry silently disabling [`#{...}` expansion](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/project-file/#inline-ruby-string-expansion) for every other entry in that same list.
224
+ - Fixed a misspelled path under [`:paths` ↳ `:cppcheck`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/cppcheck/#suppressions) silently collecting no suppression files, indistinguishable from a directory holding none.
225
+
226
+ ## ⚠️ Changed
227
+
228
+ ### Build warnings plugin `:filename` is a base name
229
+ The [Build Warnings Log plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/#filename)’s `:filename` now names the base of each report, and each report adds its own extension (`.log`, `.sarif`, `.json`). Its default is `warnings`, so the text log is still `warnings.log`. A project that sets `:filename` with any extension will have that extension overwritten by the default associated with each report type.
230
+
231
+ ### Module Generator `:naming` takes effect
232
+ [#518](https://github.com/ThrowTheSwitch/Ceedling/issues/518) The Module Generator plugin’s [`:naming`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#naming-convention) setting now applies. Previously it had no effect, and every name kept the case typed. [`:naming`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#naming-convention) no longer defaults to `:snake`, so a project that does not set it still sees names kept as typed. [`:bumpy` and `:camel`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#naming-convention) produce the case their documentation describes (`BumpyFiles`, `camelFiles`). A project that sets [`:naming`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/#naming-convention) will see generated file names change.
233
+
234
+ ### Performance improvements
235
+ Optimizations and fixes have yielded a 5–10% speed increase for most builds _before_ the second-run speedup of the new [delta build](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/builds/) abilities.
236
+
237
+ ### `#include` relative paths & duplicate filename disambiguation in test builds
238
+ Because of the support added for handling paths and distinguishing duplicated filenames, the functional interface for testing has changed.
239
+
240
+ 1. The interface for [test-build command line tasks](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-testpath) has expanded. If you need to distinguish _foo/test_thing.c_ from _bar/test_thing.c_, you must now add a trailing path to disambiguate the tests — `ceedling test:foo/thing` and `ceedling test:bar/thing`. The trailing path is optional and is only required to distinguish test files of the same name in different subdirectories. Of course, the test files must both be in the collection created by your [`:paths`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/paths/) and [`:extension`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/extension/) configurations.
241
+ 1. Paths in [`#include` directives](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#distinguishing-same-named-files) are optional but available to direct Ceedling to the proper header file for your test build needs. This is especially useful to distinguish header files of the same name in your project. Without a path in an `#include` directive, Ceedling works identically to a compiler, selecting the first file among [ordered search paths](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#test-build-search-paths).
242
+
243
+ ### Use `TEST_SOURCE_FILE()` to override Ceedling’s .c / .h correspondence convention in tests
244
+ Historically, Ceedling automatically compiles and links into a test executable any C source file whose name [matches](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/build-directives/#test_source_file-the-headersource-convention) an `#include`d header file. Sometimes this convention can select the wrong file among same-named files or compile and link an entirely unwanted source file whose name happens to match a header file. Subtractive entries now allow this to be overridden (see more [above](#subtractive-paths-in-test_source_file)).
245
+
246
+ ### Partials no longer silence CMock’s `:treat_inlines` project-wide
247
+ [#1247](https://github.com/ThrowTheSwitch/Ceedling/issues/1247) Enabling [`:use_partials`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/project/#use_partials) previously turned off CMock’s `:treat_inlines` ⇒ `:include` option for every mock in every test in your project. This prevented unnecessary overhead and generation of files never used. However, this affected tests that used no Partials at all. Each mock now gets exactly the inline handling it needs on its own terms. A test using [Partials](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/) gets Partials’ own handling for that mock, while every other mock keeps using whatever `:treat_inlines` setting you’ve configured.
248
+
249
+ ### A mock or Partial silently bypassed by its own real header
250
+ [#1240](https://github.com/ThrowTheSwitch/Ceedling/issues/1240) Added handling for edge cases where a mock or [Partial](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/) could be silently bypassed by the real header these are meant to replace. Idiosyncrasies of C compilation search paths together with combinations of `#include` guards and `#include` ordering can lead to false negative test failures or outright crashes. Ceedling now discovers these scenarios on the other side of test compilation, rewires the test build to isolate the problematic header, and rebuilds with the fix in place. This intervention is only employed for shallow #include scenarios where this action is safe. More complex scenarios are prominently and proactively logged to provide hints on diagnosing failures that require more complex solutions than Ceedling should ever attempt to implement.
251
+
252
+ ### Guidance for a Partial colliding with its own module’s real header
253
+ [#1247](https://github.com/ThrowTheSwitch/Ceedling/issues/1247) Ceedling now recognizes when test compilation fails because a [Partial’s generated content](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/overview/#generated-files) and its source module’s own real, un-Partialized header somehow both reached the compilation of the test fixture translation unit. Logging explains the likely cause and suggested solutions directly alongside the raw compiler error instead of leaving a confusing, bare `redeclaration`/`conflicting types` error.
254
+
255
+ ### Partials generation dependending on fallback preprocessing inadequaices
256
+ [Partials generation](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#preprocessing-for-partials) now stops with an error if text-only [fallback preprocessing](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#fallback-test-build-preprocessing) cannot resolve a code element — an `#include` naming a macro or a type behind a conditional expression. The message names the file and line instead of the test build failing later with a confusing compiler or linker error.
257
+
258
+ ### `report_build_warnings_log` plugin warning lines
259
+ [`report_build_warnings_log`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-build-warnings-log/)’s log files now contain only the actual warning line(s) from a build step’s output, not that step’s entire lengthy console output whenever it happened to contain the word "warning."
260
+
261
+ ### Internal verbosity level mapping for Ceedling to CMock
262
+ Ceedling and [CMock](https://docs.throwtheswitch.org/Ceedling/1.2.0/overview/tools-and-frameworks/#cmock) are interdependent but distinct tools. They each perform their own logging and have different verbosity level conventions. The internal mapping has been adjusted to configure CMock for [verbosity levels](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/cmock/#verbosity) that match the spirit of the selected top-level Ceedling logging verbosity level.
263
+
264
+ ### Smarter `:flags` and `:defines` matching for preprocessing overrides
265
+ Preprocessing [flags](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/flags/#flags-test-preprocess) and [defines](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/defines/#defines-preprocess) matchers now pass through to test compilation flags and defines for any matchers that are not defined. Previously, any preprocessing flags and defines matchers entirely overrode the test compilation flags and defines matchers. Now, you can selectively override them. Note that preprocessing flags and defines matchers are fairly specialized features used in rare cases.
266
+
267
+ ### Options that suppress preprocessor line markers are rejected
268
+ With [test preprocessing](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#test-preprocessing) enabled, Ceedling now stops at startup if `-P` or `--no-line-commands` appears in [flags](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/flags/#flags-test-preprocess) that reach preprocessing or in a preprocessing tool’s arguments. Test preprocessing reads the line markers these options remove to find `#include`s, mockable functions, and test cases. A preprocessor given either option still succeeds, so builds failed later with confusing errors or ran no tests at all. The error names each offending entry. Remember that [`:compile`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/flags/#flags-test-compile) flags also apply to preprocessing wherever [`:preprocess`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/flags/#flags-test-preprocess) flags do not.
269
+
270
+ ### Inline Ruby string expansion evaluates only `#{…}`
271
+ [#289](https://github.com/ThrowTheSwitch/Ceedling/issues/289) [Inline Ruby string expansion](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/project-file/#ruby-string-expansion-syntax) evaluates only the Ruby inside each `#{…}` and keeps all other text as written. Backslashes in Windows paths and quote marks around an expansion survive intact. Ruby escape sequences written outside `#{…}` (e.g. `\"` or `\n` in a single-quoted YAML string) are no longer interpreted.
272
+
273
+ ### Gcov console coverage summary names a module by path when needed
274
+ The [Gcov plugin’s console summary](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/overview/#coverage-summaries) labeled every file by filename alone, so a test covering two same-named modules produced two sets of figures with nothing to say which module either belonged to. Each label now carries as much trailing path as it takes to tell it apart from the other files in that same test’s summary. A filename that is already unique is labeled exactly as before.
275
+
276
+ ### More strict regex matching to exclude test artifacts from Gcov plugin coverage reports
277
+ [Gcovr](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/gcovr/) and [ReportGenerator](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/reportgenerator/) support within the [GCov plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/) now make use of more sophisticated and explicit regular expressions to filter out test files and test-build-generated files from coverage reporting. This helps prevent mistaken exclusions of source filenames with substrings (e.g. "_runner") that might otherwise match test filenames or generated files.
278
+
279
+ ### Test results report template filenames
280
+ The templates behind the [`$stdout` test results reporting plugins](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/#console-test-results) have been renamed for what they produce. [`report_tests_pretty_stdout`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-pretty-stdout/) and [`report_tests_gtestlike_stdout`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-gtestlike-stdout/) now use `assets/test_results.template`, and the [Bullseye plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/bullseye/) uses `assets/coverage.template`. The former `assets/template.erb` name is still honored, so a user-created [custom plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/development/plugins/plugin-subclass/#supplying-a-template) shipping that filename continues to work without changes.
281
+
282
+ ### Status line coloring for `ceedling new`, `ceedling example`, and `ceedling upgrade`
283
+ The `create`, `exist`, `identical`, and `force` status lines these [commands](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#application-commands) print are now colored according to Ceedling’s own decoration settings rather than a separate scheme. Coloring also requires a terminal, so redirecting output to a file produces plain text. Set `CEEDLING_DECORATORS` to `0` to disable the coloring entirely.
284
+
285
+ ### Generated `#include` guard format
286
+ Ceedling writes `#include` guards into the headers it generates for test builds (e.g. [Partials](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/partials/overview/#generated-files) and [reconstructed headers](https://docs.throwtheswitch.org/Ceedling/1.2.0/testing-guide/conventions/#header-file-preprocessing) resulting from preprocessing). These guards now take the form `GEN<hash>_<NAME>_H_CEEDLING` (e.g. `GEN2B4E27AE_DRIVERS_UART_CONFIG_H_CEEDLING`), where the hash is derived from the header’s path. This format ensures uniqueness while conforming to the C standard’s reserved identifier and significant length rules (C99 §7.1.3, §5.2.4.1), MISRA C:2012 Rules 5.4 and 21.1, and CERT DCL37-C. Nothing in your project configuration or source code needs to change unless you referenced a generated guard by name.
287
+
288
+ ### GTest-like report plugin output matches GoogleTest
289
+ The [GTest-like console report’s output](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-gtestlike-stdout/#plugin-output) now better matches GoogleTest’s own console format. Counts read in the singular for one (`1 test`, ` 1 FAILED TEST`), test files are named test suites, and the run’s total time appears on its closing line. The failure list and its trailer appear only when a test fails. By default, ignored tests now appear in the report and its counts as skipped tests (see the related _Added_ entry above). A tool that checks this report’s totals will see ignored tests counted unless [`:report_tests_gtestlike_stdout` ↳ `:ignored_as_skipped:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-gtestlike-stdout/#configuration) is set to `FALSE`.
290
+
291
+ ### Valgrind builds stop on sanitizer flags
292
+ A test executable built with sanitizers cannot run under Valgrind. A [`valgrind:`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/#usage) build uses [`:flags` ↳ `:test`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/flags/#flags-test-compile) for any operation it has no flags of its own for, so sanitizer flags meant for test builds reached it. It now stops with a message naming the `-fsanitize` flags and how to keep them out. The [Sanitize plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/sanitize/) instruments only its own builds.
293
+
294
+ ### Test case filters follow a custom test fixture tool’s arguments
295
+ [`--test-case`](https://docs.throwtheswitch.org/Ceedling/1.2.0/getting-started/command-line/#ceedling-test-test-casetest_case_name), `--exclude_test_case`, and [`:simple` backtrace](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/project/#simple) filters now come after a [`:test_fixture`](https://docs.throwtheswitch.org/Ceedling/1.2.0/configuration/reference/tools/#test_fixture) tool’s own arguments rather than right after its executable. A wrapper tool runs the test executable as one of its arguments, so the filters now reach the test executable. The default test fixture tool has no arguments, so its command line is unchanged. A custom fixture tool with arguments after `${1}` sees the filters move to the end of its command line.
296
+
297
+ ### IDE report plugin lines default to the GCC output format
298
+ The [IDE console report’s](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/) failed and ignored tests now print as GCC diagnostics by default (see the related _Added_ entry above). A [multi-line message](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#multi-line-messages) keeps its first line with the test’s location and indents the rest. The [Gcov](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/gcov/), [Bullseye](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/bullseye/), and [Valgrind](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/valgrind/) plugins’ test results change the same way when this plugin is enabled. A script or tool that reads the earlier format needs [`:report_tests_ide_stdout` ↳ `:format: :legacy`](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/report-tests-ide-stdout/#format) (see [Breaking Changes](BreakingChanges.md)).
299
+
300
+ ## 👋 Removed
301
+
302
+ - The `erb` gem dependency has been removed. Ceedling renders some of its plugin reports with a small template compiler of its own in place of `erb`. This reduces Ceedling’s external dependencies, simplifies installations where more recent versions of `erb` pull in further dependencies, and resolves security scanning findings against `erb` (CVE-2026-41316). Ceedling never used the feature that security advisory concerns, but carrying the dependency at all was enough to be flagged. Custom plugin templates are unaffected unless they use ERB syntax Ceedling itself never used — see [plugin development documentation](https://docs.throwtheswitch.org/Ceedling/1.2.0/development/plugins/plugin-subclass/) for the supported template syntax.
303
+ - The [Module Generator plugin](https://docs.throwtheswitch.org/Ceedling/1.2.0/plugins/module-generator/) no longer adds and removes generated files in Subversion, and its `:update_svn` setting is ignored with a deprecation warning. Add new files to source control with your own tools.
304
+
305
+ ---
306
+
13
307
  # [1.1.10] — 2026-10-07
14
308
 
15
309
  ## 💪 Fixed
@@ -30,11 +324,7 @@ This changelog is complemented by three other documents:
30
324
 
31
325
  ### Preprocessing
32
326
 
33
- - Fixed whitespace occasionally inserted by the underlying compiler's preprocessor around a `#` or `##` operator (e.g. `x ##y` becoming `x ## y`) being carried through verbatim into Partials-generated and reconstructed macro definitions. Extracted macro text is now normalized so preprocessing stringize and token-paste operators always sit directly against their operands, regardless of what a given toolchain's preprocessor happens to emit.
34
-
35
- ## ⚠️ Changed
36
-
37
- - Updated Unity to latest version.
327
+ - Fixed whitespace occasionally inserted by the underlying compiler’s preprocessor around a `#` or `##` operator (e.g. `x ##y` becoming `x ## y`) being carried through verbatim into Partials-generated and reconstructed macro definitions. Extracted macro text is now normalized so preprocessing stringize and token-paste operators always sit directly against their operands, regardless of what a given toolchain’s preprocessor happens to emit.
38
328
 
39
329
  ---
40
330
 
@@ -43,7 +333,7 @@ This changelog is complemented by three other documents:
43
333
  ## 💪 Fixed
44
334
 
45
335
  - Fixed a crashed test case in a parameterized group occasionally being misattributed to a different, shorter-named test case in the same group whose name happened to be a substring of the one actually named in the crash backtrace.
46
- - Fixed a test case's line number occasionally being misattributed to an unrelated helper function whose name merely contained the test's name as a substring, cascading incorrect line numbers to every test case after it in the same file.
336
+ - Fixed a test case’s line number occasionally being misattributed to an unrelated helper function whose name merely contained the test’s name as a substring, cascading incorrect line numbers to every test case after it in the same file.
47
337
 
48
338
  ### Partials
49
339
 
@@ -51,19 +341,20 @@ This changelog is complemented by three other documents:
51
341
 
52
342
  ### Preprocessing
53
343
 
54
- - [#1266](https://github.com/ThrowTheSwitch/Ceedling/issues/1266) Fixed a reconstructed header silently dropping any macro whose name or value merely contained the header's own include guard as a substring (e.g. guard `RTC_H` matching inside `RTC_HOUR_SECONDS`), causing undeclared-identifier compile errors.
55
- - [#1268](https://github.com/ThrowTheSwitch/Ceedling/issues/1268) Fixed a mockable header's `#include` losing the enums, structs, and function prototypes of a conditionally-included file when that `#include` was indented inside its `#ifdef` block, causing undeclared-identifier compile errors.
344
+ - [#1266](https://github.com/ThrowTheSwitch/Ceedling/issues/1266) Fixed a reconstructed header silently dropping any macro whose name or value merely contained the header’s own include guard as a substring (e.g. guard `RTC_H` matching inside `RTC_HOUR_SECONDS`), causing undeclared-identifier compile errors.
345
+ - [#1268](https://github.com/ThrowTheSwitch/Ceedling/issues/1268) Fixed a mockable header’s `#include` losing the enums, structs, and function prototypes of a conditionally-included file when that `#include` directive was indented inside its `#ifdef` block, causing undeclared-identifier compile errors.
346
+ - [#1083](https://github.com/ThrowTheSwitch/Ceedling/issues/1083) Fixed a test file’s `#include` of a mock being left out of a test build with test preprocessing enabled when that `#include` directive was indented inside its `#if` block. In this case the mock was never linked and the build stopped on undefined references. The same fix as #1268 above.
56
347
 
57
348
  ### Gcov plugin
58
349
 
59
350
  - Fixed `:gcov ↳ :gcovr ↳ :decisions` reporting an incorrect minimum-version requirement; the version check (and docs) now correctly require `gcovr` 5.1 or higher.
60
351
  - Fixed `:gcov ↳ :gcovr ↳ :fail_under_line`/`:fail_under_branch`/`:fail_under_decision`/`:fail_under_function` silently accepting `0`, contradicting the documented 1–100 range; `0` is now rejected.
61
352
  - Fixed `:gcov ↳ :gcovr ↳ :object_directory` and `:source_encoding` values containing a space breaking the constructed `gcovr` command line; both are now quoted consistently with every other string-valued option.
62
- - Fixed a regex-metacharacter-injection risk (e.g. a literal `.`) in `:gcov ↳ :gcovr`'s and `:gcov ↳ :report_generator`'s auto-generated exclusion patterns in `:test_file_prefix`, `:mock_prefix`, or the build root path could silently over- or under-match files.
353
+ - Fixed a regex-metacharacter-injection risk (e.g. a literal `.`) in `:gcov ↳ :gcovr`’s and `:gcov ↳ :report_generator`’s auto-generated exclusion patterns in `:test_file_prefix`, `:mock_prefix`, or the build root path could silently over- or under-match files.
63
354
  - Fixed `:gcov ↳ :mcdc` triggering a `gcc --version` check (and a potential build-breaking exception for an older compiler) on every build in which a project enables the Gcov plugin, not only `gcov:` builds.
64
355
  - Fixed only the first of multiple simultaneously violated `:gcov ↳ :gcovr ↳ :fail_under_*` thresholds being reported when a build-breaking exception is raised; every violated threshold is now listed.
65
356
  - Fixed a latent mutation risk in `:gcov ↳ :report_generator` option handling that could accumulate stale exclusion patterns across repeated report-generation calls within a single run.
66
- - `:gcov ↳ :gcovr ↳ :branches`/`:sort_uncovered`/`:sort_percentage` now use `gcovr`'s renamed `--txt-metric branch`/`--sort uncovered-number`/`--sort uncovered-percent` flags on `gcovr` 7.0+, silencing `gcovr`'s deprecation warnings for those options. The pre-7.0 flag names are still used automatically with older `gcovr`.
357
+ - `:gcov ↳ :gcovr ↳ :branches`/`:sort_uncovered`/`:sort_percentage` now use `gcovr`’s renamed `--txt-metric branch`/`--sort uncovered-number`/`--sort uncovered-percent` flags on `gcovr` 7.0+, silencing `gcovr`’s deprecation warnings for those options. The pre-7.0 flag names are still used automatically with older `gcovr`.
67
358
  - Fixed the Gcov console summary silently producing no report and no log line at all for a Partial-implementation source whose `gcov` output couldn't be matched. It now logs the same "Found no coverage results" message the equivalent non-Partial case already did.
68
359
 
69
360
  ---
@@ -89,7 +380,7 @@ This changelog is complemented by three other documents:
89
380
 
90
381
  - [#1223](https://github.com/ThrowTheSwitch/Ceedling/issues/1223) Fixed a conditional `#include` silently dropping out of generated code derived from preprocessed code, breaking compilation with an undeclared identifier error. The specific case involves a macro defined by another header included earlier in the same file.
91
382
  - [#1216](https://github.com/ThrowTheSwitch/Ceedling/issues/1216) Fixed self-test issue that caused docs-related failures when the local documentation was unavailable (generated in CI but not necessarily present during self tests).
92
- - [#1236](https://github.com/ThrowTheSwitch/Ceedling/issues/1236) Fixed an issue that converted system includes extracted from a test C file into user includes when generating a test runner (e.g. `#include <sys/stat.h>` became `#include "stat.h"`) and also stripped relative paths from all includes injected into a test runner.
383
+ - [#1236](https://github.com/ThrowTheSwitch/Ceedling/issues/1236) Fixed an issue that converted system includes extracted from a test C file into user includes when generating a test runner (e.g. `#include <sys/stat.h>` became `#include "stat.h"`) and also stripped relative paths of all includes injected into a test runner.
93
384
 
94
385
  ### Partials
95
386
 
@@ -103,7 +394,7 @@ This changelog is complemented by three other documents:
103
394
 
104
395
  ### Partials
105
396
 
106
- - Fixed shared generated Partial types header filename being derived from the test's name rather than partialized module's own name. Two modules Partialized in the same test could silently overwrite each other's content.
397
+ - Fixed shared generated Partial types header filename being derived from the test’s name rather than partialized module’s own name. Two modules Partialized in the same test could silently overwrite each other’s content.
107
398
  - [#1210](https://github.com/ThrowTheSwitch/Ceedling/issues/1210) Fixed macros missing from shared Partial types header file emitted when two Partials both depend on the same types and related in common.
108
399
 
109
400
  ---
@@ -112,17 +403,17 @@ This changelog is complemented by three other documents:
112
403
 
113
404
  ## 💪 Fixed
114
405
 
115
- - [#1198](https://github.com/ThrowTheSwitch/Ceedling/issues/1198) Fixed a crash that could go unnoticed. If a test crashed but `:use_backtrace`'s diagnostic retry ran cleanly instead of reproducing the crash, Ceedling trusted that clean retry over the real crash and reported the test as passing, with a successful exit code.
406
+ - [#1198](https://github.com/ThrowTheSwitch/Ceedling/issues/1198) Fixed a crash that could go unnoticed. If a test crashed but `:use_backtrace`’s diagnostic retry ran cleanly instead of reproducing the crash, Ceedling trusted that clean retry over the real crash and reported the test as passing, with a successful exit code.
116
407
  - [#1197](https://github.com/ThrowTheSwitch/Ceedling/issues/1197) Fixed edge case of includes extraction where header files in the same directory as a file being preprocessed were erroneously discovered as depth 0 `#include`s in the preprocessed file. The cause is a quirk of GCC search path defaults. The impact was greatest on certain test file organizations.
117
408
 
118
409
  ### Partials
119
410
 
120
411
  - [#1203](https://github.com/ThrowTheSwitch/Ceedling/issues/1203) Fixed `MOCK_PARTIAL_ALL_MODULE()` (and `MOCK_PARTIAL_PUBLIC_MODULE()`/`MOCK_PARTIAL_PRIVATE_MODULE()`) silently omitting a function from the mock interface in certain cases where no function body could be found in the module.
121
- - [#1189](https://github.com/ThrowTheSwitch/Ceedling/issues/1189)/[#1187](https://github.com/ThrowTheSwitch/Ceedling/issues/1187) Fixed `const`/`volatile`/`restrict` qualifiers stripped from a Partial's generated `extern` declaration and definition for a promoted variable.
122
- - Fixed C variable extraction discarding a pointer's own qualifier (e.g. the second `const` in `const uint8_t* const ptr;`) whenever the same qualifier keyword also led the declaration.
123
- - [#1190](https://github.com/ThrowTheSwitch/Ceedling/issues/1190)/[#1187](https://github.com/ThrowTheSwitch/Ceedling/issues/1187) Fixed a module's typedefs and aggregate (struct/enum/union) definitions being generated into both its Test Partial and Mock Partial headers, causing a redefinition error when a test file uses both for the same module. Such content is now generated once into a shared header with unique include guard that both Partial headers, in turn, include.
124
- - [#1188](https://github.com/ThrowTheSwitch/Ceedling/issues/1188)/[#1187](https://github.com/ThrowTheSwitch/Ceedling/issues/1187) Fixed a long C declaration silently vanishing from a Partial (and everything textually after it in the same file) once it exceeded an internal, fixed sized buffer length. Refactored to rely on a different dynamically resized buffer with a configurable size ceiling (new `:partials` ↳ `:max_extraction_length`). C feature extraction now raises a clear error if the limit is exceeded.
125
412
  - [#1194](https://github.com/ThrowTheSwitch/Ceedling/issues/1194) Fixed generated Partials stripping directory components from system include directives (e.g. `<sys/stat.h>` becoming `<stat.h>`).
413
+ - [#1189](https://github.com/ThrowTheSwitch/Ceedling/issues/1189)/[#1187](https://github.com/ThrowTheSwitch/Ceedling/issues/1187) Fixed `const`/`volatile`/`restrict` qualifiers stripped from a Partial’s generated `extern` declaration and definition for a promoted variable.
414
+ - Fixed C variable extraction discarding a pointer’s own qualifier (e.g. the second `const` in `const uint8_t* const ptr;`) whenever the same qualifier keyword also led the declaration.
415
+ - [#1190](https://github.com/ThrowTheSwitch/Ceedling/issues/1190)/[#1187](https://github.com/ThrowTheSwitch/Ceedling/issues/1187) Fixed a module’s typedefs and aggregate (struct/enum/union) definitions being generated into both its Test Partial and Mock Partial headers, causing a redefinition error when a test file uses both for the same module. Such content is now generated once into a shared header with unique include guard that both Partial headers, in turn, include.
416
+ - [#1188](https://github.com/ThrowTheSwitch/Ceedling/issues/1188)/[#1187](https://github.com/ThrowTheSwitch/Ceedling/issues/1187) Fixed a long C declaration silently vanishing from a Partial (and everything textually after it in the same file) once it exceeded an internal, fixed sized buffer length. Refactored to rely on a different dynamically resized buffer with a configurable size ceiling (new `:partials` ↳ `:max_extraction_length`). C feature extraction now raises a clear error if the limit is exceeded.
126
417
 
127
418
  ---
128
419
 
@@ -154,7 +445,7 @@ This changelog is complemented by three other documents:
154
445
 
155
446
  ## 🌟 Added
156
447
 
157
- - Gcov plugin ➡️ Warning logging for disallowed Gcovr configuration values set at the same time as a Gcovr configuration file (`:config_file`) is in use. Disallowed values are ignored. See clarified discussion of [Gcovr options](https://throwtheswitch.github.io/Ceedling/1.1.0/plugins/gcov/gcovr/#gcovr-options) for more.
448
+ - Gcov plugin ➡️ Warning logging for disallowed Gcovr configuration values set at the same time as a Gcovr configuration file (`:config_file`) is in use. Disallowed values are ignored. See clarified discussion of [Gcovr options](https://docs.throwtheswitch.org/Ceedling/1.1.0/plugins/gcov/gcovr/#gcovr-options) for more.
158
449
 
159
450
  ## 💪 Fixed
160
451
 
@@ -171,7 +462,7 @@ This changelog is complemented by three other documents:
171
462
 
172
463
  ## ⚠️ Changed
173
464
 
174
- - Clarified and reorganized [Gcovr configuration documentation](https://throwtheswitch.github.io/Ceedling/1.1.0/plugins/gcov/gcovr/) for the Gcov plugin.
465
+ - Clarified and reorganized [Gcovr configuration documentation](https://docs.throwtheswitch.org/Ceedling/1.1.0/plugins/gcov/gcovr/) for the Gcov plugin.
175
466
  - Added to plugin documentation explanation of necessary plugin task separation (e.g. why `gcov:` is a separate set of tasks that largely duplicates `test:` builds).
176
467
 
177
468
  ---
@@ -182,7 +473,7 @@ This changelog is complemented by three other documents:
182
473
 
183
474
  ### Partials
184
475
 
185
- [A Partial](https://throwtheswitch.github.io/Ceedling/1.1.0/testing-guide/partials/) is a new feature that allows a test author to work with portions of the same C module under test differently from within the same test file.
476
+ [A Partial](https://docs.throwtheswitch.org/Ceedling/1.1.0/testing-guide/partials/) is a new feature that allows a test author to work with portions of the same C module under test differently from within the same test file.
186
477
 
187
478
  With Partials, a test can now cause some functions in the source module under test to be mocked while other source functions are executed against assertions (see [#936](https://github.com/ThrowTheSwitch/Ceedling/issues/936)). Partials also allow testing of `static` and `inline` functions with no modification of your source code under test.
188
479
 
@@ -190,16 +481,16 @@ With Partials, a test can now cause some functions in the source module under te
190
481
 
191
482
  ### Two more example projects plus expanded `temp_sensor` project
192
483
 
193
- `wondrous_forest` and `cipher_quest` join the existing `temp_sensor` project. All example projects now have [comprehensive documentation](https://throwtheswitch.github.io/Ceedling/1.1.0/getting-started/example-projects/).
484
+ `wondrous_forest` and `cipher_quest` join the existing `temp_sensor` project. All example projects now have [comprehensive documentation](https://docs.throwtheswitch.org/Ceedling/1.1.0/getting-started/example-projects/).
194
485
 
195
- 1. The `wondrous_forest` test-only project demonstrates using [Partials](https://throwtheswitch.github.io/Ceedling/1.1.0/testing-guide/partials/) in sample code reasonably representative of real-world use.
196
- 1. The `cipher_quest` project is both a release and test build project that demonstrates conditional compilation builds (`ifdef`) and using [Mixins](https://throwtheswitch.github.io/Ceedling/1.1.0/configuration/mixins) to control builds.
486
+ 1. The `wondrous_forest` test-only project demonstrates using [Partials](https://docs.throwtheswitch.org/Ceedling/1.1.0/testing-guide/partials/) in sample code reasonably representative of real-world use.
487
+ 1. The `cipher_quest` project is both a release and test build project that demonstrates conditional compilation builds (`ifdef`) and using [Mixins](https://docs.throwtheswitch.org/Ceedling/1.1.0/configuration/mixins) to control builds.
197
488
 
198
489
  The existing `temp_sensor` project has been expanded to more fully illustrate testing for embbeded development. It now shows a pure C approach to creating hardware access standins that allow testing of peripheral manipulation. The approach demonstrated divorces unit tests from any actual hardware dependence while preserving production C code as is.
199
490
 
200
491
  ### Documentation site
201
492
 
202
- Ceedling is now complemented by a full, searchable [documentation site](https://throwtheswitch.github.io/Ceedling/).
493
+ Ceedling is now complemented by a full, searchable [documentation site](https://docs.throwtheswitch.org/Ceedling/).
203
494
 
204
495
  A local verion of this site that is navigable with your web browser from your filesystem is included within Ceedling and exportable through CLI commands.
205
496
 
@@ -214,20 +505,20 @@ A local verion of this site that is navigable with your web browser from your fi
214
505
 
215
506
  #### Mixins inline YAML
216
507
 
217
- The optional `--mixin` flag for all application commands supporting it now additionally [supports inline YAML](https://throwtheswitch.github.io/Ceedling/1.1.0/configuration/mixins/#-mixin-command-line-flags). Example: `--mixin "=defines: {release: ['MY_SYMBOL']}"`
508
+ The optional `--mixin` flag for all application commands supporting it now additionally [supports inline YAML](https://docs.throwtheswitch.org/Ceedling/1.1.0/configuration/mixins/#-mixin-command-line-flags). Example: `--mixin "=defines: {release: ['MY_SYMBOL']}"`
218
509
 
219
510
  ### Cppcheck static analysis plugin
220
511
 
221
- [Alejandro Rosso](https://github.com/deltalejo)’s excellent [Cppcheck plugin](https://throwtheswitch.github.io/Ceedling/1.1.0/plugins/cppcheck/) has been added to the stock plugin collection (with Alejandro’s permission). We’re excited to make it easier for everyone to use this great addition!
512
+ [Alejandro Rosso](https://github.com/deltalejo)’s excellent [Cppcheck plugin](https://docs.throwtheswitch.org/Ceedling/1.1.0/plugins/cppcheck/) has been added to the stock plugin collection (with Alejandro’s permission). We’re excited to make it easier for everyone to use this great addition!
222
513
 
223
514
  ### Valgrind memory check plugin
224
515
 
225
- [James Raphael Tiovalen](https://github.com/jamestiotio)’s helpful [Valgrind plugin](https://throwtheswitch.github.io/Ceedling/1.1.0/plugins/valgrind/) has been updated to work with the latest Ceedling and added to the stock plugin collection. Thank you, James for the great contribution!
516
+ [James Raphael Tiovalen](https://github.com/jamestiotio)’s helpful [Valgrind plugin](https://docs.throwtheswitch.org/Ceedling/1.1.0/plugins/valgrind/) has been updated to work with the latest Ceedling and added to the stock plugin collection. Thank you, James for the great contribution!
226
517
 
227
518
  ### GCov plugin code coverage enhancements
228
519
 
229
520
  #### Support for Modified Condition / Decision Coverage
230
- Ceedling’s [GCov plugin](https://throwtheswitch.github.io/Ceedling/1.1.0/plugins/gcov/) for coverage reporting now supports the [Modified Condition / Decision Coverage](https://ldra.com/capabilities/mc-dc/) abilities of GCC 14+ and optionally GCovr 8+.
521
+ Ceedling’s [GCov plugin](https://docs.throwtheswitch.org/Ceedling/1.1.0/plugins/gcov/) for coverage reporting now supports the [Modified Condition / Decision Coverage](https://ldra.com/capabilities/mc-dc/) abilities of GCC 14+ and optionally GCovr 8+.
231
522
 
232
523
  _NOTE:_ The `ReportGenerator` tool does not support extracting MC/DC even if those metrics are available in the coverage data dumps that it processes. The GCov plugin can provide MC/DC metrics through its simplistic console reports and through the rich reports generated by GCovr.
233
524
 
@@ -239,7 +530,7 @@ The Gcov plugin now includes an `:untested_sources` option that controls how sou
239
530
 
240
531
  When `:compile` is active, a `gcov:untested_sources` task is available for iterating coverage compilation for untested sources without needing to re-run an entire `gcov:` test suite build each time. Untested sources can require defines, flags, and platform headers & symbols not present in a test suite configuration.
241
532
 
242
- See the [GCov plugin documentation](https://throwtheswitch.github.io/Ceedling/1.1.0/plugins/gcov/setup#coverage-for-untested-sources) for more details on the new `:untested_sources` option.
533
+ See the [GCov plugin documentation](https://docs.throwtheswitch.org/Ceedling/1.1.0/plugins/gcov/setup#coverage-for-untested-sources) for more details on the new `:untested_sources` option.
243
534
 
244
535
  ### Preprocessing for tests
245
536
 
@@ -281,7 +572,7 @@ When test preprocessing is enabled, Ceedling discovers whether your toolchain su
281
572
  ### Mixins
282
573
  - [#984](https://github.com/ThrowTheSwitch/Ceedling/issues/1128) Resolve differing "shapes" of `:defines` when Mixins in use.
283
574
  - [#1128](https://github.com/ThrowTheSwitch/Ceedling/issues/1128) Command line mixin precedence.
284
- - Revisions to [Mixin documentation](https://throwtheswitch.github.io/Ceedling/latest/configuration/mixins) to correct merge order explanations and clarify Mixins generally.
575
+ - Revisions to [Mixin documentation](https://docs.throwtheswitch.org/Ceedling/latest/configuration/mixins) to correct merge order explanations and clarify Mixins generally.
285
576
 
286
577
  ### `#include`s handling and preprocessing
287
578
  - Extensive improvements throughout.
@@ -312,7 +603,7 @@ When test preprocessing is enabled, Ceedling discovers whether your toolchain su
312
603
  - Integrates latest [Unity](https://github.com/ThrowTheSwitch/Unity) ([2.7.0](https://github.com/ThrowTheSwitch/Unity/blob/master/docs/UnityChangeLog.md)).
313
604
  - Integrates latest [CMock](https://github.com/ThrowTheSwitch/CMock) ([2.7.0](https://github.com/ThrowTheSwitch/CMock/blob/master/docs/CMockChangeLog.md)).
314
605
 
315
- ### Expanded [Backtrace handling](https://throwtheswitch.github.io/Ceedling/1.1.0/configuration/reference/project/#use_backtrace)
606
+ ### Expanded [Backtrace handling](https://docs.throwtheswitch.org/Ceedling/1.1.0/configuration/reference/project/#use_backtrace)
316
607
  - Provides more and better crash details for `:simple` and `:gdb` options.
317
608
  - `:gdb` option captures a full log file from `gdb` output and provides that filepath in the test case crash report.
318
609
 
@@ -328,8 +619,8 @@ When test preprocessing is enabled, Ceedling discovers whether your toolchain su
328
619
  - `pre/post_release` hooks renamed to `pre_release_build` & `post_release_build`.
329
620
  - Build event hooks include stopwatch values in seconds (floating point) as arguments.
330
621
  - Test build steps include a new context argument that exposes event origination (e.g. `test`, `gcov`, etc.).
331
- - [`command_hooks` plugin](https://throwtheswitch.github.io/Ceedling/1.1.0/plugins/command-hooks/) updated with new hooks and arguments.
332
- - [`report_tests_log_factory` plugin](https://throwtheswitch.github.io/Ceedling/1.1.0/plugins/report-tests-log-factory/)
622
+ - [`command_hooks` plugin](https://docs.throwtheswitch.org/Ceedling/1.1.0/plugins/command-hooks/) updated with new hooks and arguments.
623
+ - [`report_tests_log_factory` plugin](https://docs.throwtheswitch.org/Ceedling/1.1.0/plugins/report-tests-log-factory/)
333
624
  - All generated reports incorporate `:project` ↳ `:name` from your configuration, if available.
334
625
  - Incorporated new test build time tracking in reports that support it.
335
626
  - Improved the design of the HTML report option.
@@ -337,13 +628,13 @@ When test preprocessing is enabled, Ceedling discovers whether your toolchain su
337
628
 
338
629
  ### Security
339
630
  - Migrated all YAML processing to use safe loading. Safe loading constrains YAML deserialization to data structures such as hashes and lists. Unsafe loading is capable of deserializing arbitrary Ruby objects that could be used maliciously by a bad actor polluting a YAML file loaded by Ceedling.
340
- - [Inline Ruby string expansion](https://throwtheswitch.github.io/Ceedling/1.1.0/configuration/project-file/#inline-ruby-string-expansion) available in project configuration handling is now disabled by default. It can only be enabled via a Ceedling command line flag `--ruby-replacement`.
631
+ - [Inline Ruby string expansion](https://docs.throwtheswitch.org/Ceedling/1.1.0/configuration/project-file/#inline-ruby-string-expansion) available in project configuration handling is now disabled by default. It can only be enabled via a Ceedling command line flag `--ruby-replacement`.
341
632
 
342
633
  ## 👋 Removed
343
634
 
344
635
  - `:use_deep_preprocessor` was a short-lived workaround option added after 1.0.0 for certain preprpocessing limitations. Those limitations are fully resolved, and test preprocessor options are now only `:use_test_preprocessor` and `:preprocess_force_fallback`. The latter should rarely be needed, leaving only the former as the only preprocessing feature toggle in Ceedling.
345
- - _CeedlingPacket.md_ user manual (superseded by [new documentation site](https://throwtheswitch.github.io/Ceedling/) and local bundle).
346
- - _PluginDevelopmentGuide.md_ (superseded by [new documentation site](https://throwtheswitch.github.io/Ceedling/) and local bundle).
636
+ - _CeedlingPacket.md_ user manual (superseded by [new documentation site](https://docs.throwtheswitch.org/Ceedling/) and local bundle).
637
+ - _PluginDevelopmentGuide.md_ (superseded by [new documentation site](https://docs.throwtheswitch.org/Ceedling/) and local bundle).
347
638
 
348
639
  ---
349
640
 
@@ -830,4 +1121,3 @@ If you want to incorporate environment variables into your tool definitions, you
830
1121
  This project setting existed from Ceedling’s earliest days and was a crude stand-in for command line debug verbosity handling.
831
1122
 
832
1123
  It has been removed as it was rarely if ever utilized and needlessly complicated internal mechanisms for verbosity handling and project validation.
833
-