ceedling 1.1.9 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1130) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -0
  3. data/.simplecov +73 -0
  4. data/GIT_COMMIT_SHA +1 -1
  5. data/Gemfile +84 -8
  6. data/Gemfile.lock +38 -8
  7. data/README.md +53 -30
  8. data/Rakefile +768 -16
  9. data/assets/{project.yml → features/project.yml} +4 -1
  10. data/assets/fixtures/bullseye_branch_coverage/src/branchy.c +24 -0
  11. data/assets/fixtures/bullseye_branch_coverage/src/branchy.h +14 -0
  12. data/assets/fixtures/bullseye_branch_coverage/test/test_branchy.c +18 -0
  13. data/assets/fixtures/cppcheck_findings/findings.c +23 -0
  14. data/assets/fixtures/cppcheck_findings/findings.h +13 -0
  15. data/assets/fixtures/header_include_path_validation/alt_drivers/foo.h +6 -0
  16. data/assets/fixtures/header_include_path_validation/bar.h +6 -0
  17. data/assets/fixtures/header_include_path_validation/drivers/foo.h +6 -0
  18. data/assets/fixtures/header_include_path_validation/dup.h +6 -0
  19. data/assets/fixtures/header_include_path_validation/other_inc/dup.h +6 -0
  20. data/assets/fixtures/header_include_path_validation/test_ambiguous_mock.c +15 -0
  21. data/assets/fixtures/header_include_path_validation/test_bare_mock.c +11 -0
  22. data/assets/fixtures/header_include_path_validation/test_bogus_mock_path.c +11 -0
  23. data/assets/fixtures/header_include_path_validation/test_bogus_vanilla_path.c +10 -0
  24. data/assets/fixtures/header_include_path_validation/test_include_outranks_test_include_path.c +16 -0
  25. data/assets/fixtures/header_include_path_validation/test_pathed_mock.c +11 -0
  26. data/assets/fixtures/header_include_path_validation/test_pathed_mock_ambiguous.c +14 -0
  27. data/assets/fixtures/header_include_path_validation/test_test_include_path_outranks_include.c +17 -0
  28. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.c +6 -0
  29. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.h +6 -0
  30. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.c +6 -0
  31. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.h +6 -0
  32. data/assets/fixtures/implicit_source_header_correspondence/gamma/dup_gamma.c +6 -0
  33. data/assets/fixtures/implicit_source_header_correspondence/test_dup_alpha.c +10 -0
  34. data/assets/fixtures/implicit_source_header_correspondence/test_dup_bare.c +10 -0
  35. data/assets/fixtures/implicit_source_header_correspondence/test_dup_beta.c +10 -0
  36. data/assets/fixtures/implicit_source_header_correspondence/test_dup_override.c +19 -0
  37. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive.c +19 -0
  38. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive_noop.c +16 -0
  39. data/assets/fixtures/parent_directory_references/alpha/extra.c +4 -0
  40. data/assets/fixtures/parent_directory_references/common/helper.c +6 -0
  41. data/assets/fixtures/parent_directory_references/common/helper.h +6 -0
  42. data/assets/fixtures/parent_directory_references/unit/test_dotdot_include.c +10 -0
  43. data/assets/fixtures/parent_directory_references/unit/test_dotdot_source.c +16 -0
  44. data/assets/fixtures/plain_inline_module.h +9 -0
  45. data/assets/fixtures/same_named_modules/include/drivers/spi/config.h +6 -0
  46. data/assets/fixtures/same_named_modules/include/drivers/uart/config.h +6 -0
  47. data/assets/fixtures/same_named_modules/src/drivers/spi/config.c +8 -0
  48. data/assets/fixtures/same_named_modules/src/drivers/uart/config.c +10 -0
  49. data/assets/fixtures/same_named_modules/test/test_both_configs.c +26 -0
  50. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked.c +20 -0
  51. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked_traditional.c +19 -0
  52. data/assets/fixtures/same_named_modules/test/test_both_modules.c +19 -0
  53. data/assets/fixtures/same_named_modules/test/test_uart_config_bare.c +19 -0
  54. data/assets/fixtures/same_named_modules/test/test_uart_config_partial_only.c +20 -0
  55. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.c +6 -0
  56. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.h +6 -0
  57. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.c +6 -0
  58. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.h +6 -0
  59. data/assets/fixtures/sources_with_duplicate_basenames/main.c +11 -0
  60. data/assets/fixtures/sources_with_duplicate_basenames/test_baz_bar.c +10 -0
  61. data/assets/fixtures/sources_with_duplicate_basenames/test_both_bars.c +12 -0
  62. data/assets/fixtures/sources_with_duplicate_basenames/test_foo_bar.c +10 -0
  63. data/assets/{test_example_file_boom.c → fixtures/test_nosanitize_boom.c} +9 -0
  64. data/assets/{test_example_file_crash_assert.c → fixtures/test_nosanitize_crash_assert.c} +8 -0
  65. data/assets/{test_example_file_crash_sigsegv.c → fixtures/test_nosanitize_crash_sigsegv.c} +8 -0
  66. data/assets/{test_example_file_crash_sigsegv_with_param.c → fixtures/test_nosanitize_crash_sigsegv_with_param.c} +8 -0
  67. data/assets/fixtures/test_nosanitize_heap_buffer_overflow.c +31 -0
  68. data/assets/fixtures/test_nosanitize_leak.c +34 -0
  69. data/assets/fixtures/test_nosanitize_two_findings.c +36 -0
  70. data/assets/{test_example_file_ub_shift_overflow.c → fixtures/test_nosanitize_ub_shift_overflow.c} +9 -0
  71. data/assets/fixtures/test_plain_inline_module.c +15 -0
  72. data/assets/fixtures/test_source_file_duplicate_basenames/alpha/calc.c +4 -0
  73. data/assets/fixtures/test_source_file_duplicate_basenames/beta/calc.c +4 -0
  74. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_alpha.c +15 -0
  75. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_ambiguous.c +15 -0
  76. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_beta.c +15 -0
  77. data/assets/fixtures/tests_with_conditional_includes/src/feature_extra2.h +13 -0
  78. data/assets/fixtures/tests_with_conditional_includes/src/macro_target_extra.h +13 -0
  79. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.c +19 -3
  80. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.h +1 -0
  81. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.c +17 -1
  82. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget.c +12 -4
  83. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget_feature.c +8 -5
  84. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.c +7 -0
  85. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.h +6 -0
  86. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.c +16 -0
  87. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.h +6 -0
  88. data/assets/fixtures/tests_with_conditional_mocks/src/FeatureConfig.h +6 -0
  89. data/assets/fixtures/tests_with_conditional_mocks/src/Gpt.h +6 -0
  90. data/assets/fixtures/tests_with_conditional_mocks/src/MyModuleConfig.h +17 -0
  91. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart1.h +6 -0
  92. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart2.h +6 -0
  93. data/assets/fixtures/tests_with_conditional_mocks/src/drivers/widget.h +6 -0
  94. data/assets/fixtures/tests_with_conditional_mocks/src/reader.c +7 -0
  95. data/assets/fixtures/tests_with_conditional_mocks/src/reader.h +6 -0
  96. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01.c +21 -0
  97. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01_legacy.c +16 -0
  98. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_02.c +31 -0
  99. data/assets/fixtures/tests_with_conditional_mocks/test/test_FeatureConfig.c +15 -0
  100. data/assets/fixtures/tests_with_conditional_mocks/test/test_reader.c +13 -0
  101. data/assets/fixtures/tests_with_duplicate_test_names/integration/test_foo.c +21 -0
  102. data/assets/fixtures/tests_with_duplicate_test_names/unit/test_foo.c +21 -0
  103. data/assets/fixtures/tests_with_fallback_conditionals/src/conditional_module.c +28 -0
  104. data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/test/test_conditionals.c +8 -1
  105. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_lower.s +2 -0
  106. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_upper.S +13 -0
  107. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.c +13 -0
  108. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.h +13 -0
  109. data/assets/fixtures/tests_with_multiple_assembly_extensions/test/test_counter_module.c +27 -0
  110. data/assets/fixtures/tests_with_subdir_includes/src/module/app/config.h +13 -0
  111. data/assets/fixtures/tests_with_subdir_includes/src/module/drivers/config.h +13 -0
  112. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.c +30 -0
  113. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.h +13 -0
  114. data/assets/fixtures/tests_with_subdir_includes/src/shared/config.h +13 -0
  115. data/assets/fixtures/tests_with_subdir_includes/test/test_sensor.c +32 -0
  116. data/bin/actionator.rb +234 -0
  117. data/bin/app_cfg.rb +7 -0
  118. data/bin/cli.rb +78 -47
  119. data/bin/cli_handler.rb +89 -57
  120. data/bin/cli_helper.rb +90 -49
  121. data/bin/cli_options_transform.rb +22 -0
  122. data/bin/{configinator.rb → composinator.rb} +39 -32
  123. data/bin/mixin_resolvinator.rb +124 -0
  124. data/bin/mixin_standardizer.rb +31 -61
  125. data/bin/mixinator.rb +27 -29
  126. data/bin/mixins.rb +0 -5
  127. data/bin/objects.yml +20 -7
  128. data/bin/path_validator.rb +6 -5
  129. data/bin/projectinator.rb +51 -142
  130. data/bin/rake_patches.rb +36 -2
  131. data/bin/recursive_merger.rb +7 -1
  132. data/bin/versionator.rb +2 -3
  133. data/ceedling.gemspec +83 -12
  134. data/docs/BreakingChanges.md +46 -2
  135. data/docs/CONTRIBUTING.md +45 -29
  136. data/docs/CeedlingPullRequestChecklist.md +10 -9
  137. data/docs/Changelog.md +337 -37
  138. data/docs/KnownIssues.md +39 -4
  139. data/docs/ReleaseNotes.md +288 -12
  140. data/docs/SECURITY.md +86 -4
  141. data/docs/ThrowTheSwitchCodingStandard.md +21 -3
  142. data/docs/overrides/main.html +32 -0
  143. data/examples/temp_sensor/mixin/add_bullseye.yml +19 -0
  144. data/examples/wondrous_forest/README.md +3 -0
  145. data/examples/wondrous_forest/src/sensors/light/Calibration.c +21 -0
  146. data/examples/wondrous_forest/src/sensors/light/Calibration.h +14 -0
  147. data/examples/wondrous_forest/src/sensors/soil/Calibration.c +23 -0
  148. data/examples/wondrous_forest/src/sensors/soil/Calibration.h +14 -0
  149. data/examples/wondrous_forest/test/TestCalibration.c +39 -0
  150. data/lib/ceedling/batchinator.rb +81 -22
  151. data/lib/ceedling/c_extractor/README.md +61 -0
  152. data/lib/ceedling/c_extractor/c_extractor.rb +33 -2
  153. data/lib/ceedling/c_extractor/c_extractor_code_text.rb +18 -10
  154. data/lib/ceedling/c_extractor/c_extractor_constants.rb +10 -10
  155. data/lib/ceedling/c_extractor/c_extractor_declarations.rb +14 -14
  156. data/lib/ceedling/c_extractor/c_extractor_functions.rb +10 -13
  157. data/lib/ceedling/c_extractor/c_extractor_preprocessing.rb +77 -0
  158. data/lib/ceedling/c_extractor/c_extractor_types.rb +8 -5
  159. data/lib/ceedling/ceedling.h +33 -0
  160. data/lib/ceedling/config/config_matchinator.rb +36 -13
  161. data/lib/ceedling/config/configurator.rb +366 -530
  162. data/lib/ceedling/config/configurator_builder.rb +253 -365
  163. data/lib/ceedling/config/configurator_plugins.rb +68 -102
  164. data/lib/ceedling/config/configurator_setup.rb +343 -610
  165. data/lib/ceedling/config/configurator_validator.rb +114 -142
  166. data/lib/ceedling/config/line_marker_suppressors.rb +67 -0
  167. data/lib/ceedling/constants.rb +60 -6
  168. data/lib/ceedling/defaults.rb +28 -14
  169. data/lib/ceedling/defineinator.rb +9 -4
  170. data/lib/ceedling/dependencies/README.md +69 -0
  171. data/lib/ceedling/dependencies/dependency_cache_store.rb +160 -0
  172. data/lib/ceedling/dependencies/dependency_debug_tree.rb +129 -0
  173. data/lib/ceedling/dependencies/dependency_differ.rb +127 -0
  174. data/lib/ceedling/dependencies/dependency_hasher.rb +94 -0
  175. data/lib/ceedling/dependencies/dependency_path_normalizer.rb +80 -0
  176. data/lib/ceedling/dependencies/dependency_tracker.rb +405 -0
  177. data/lib/ceedling/dependencies/dependinator.rb +65 -0
  178. data/lib/ceedling/dependencies/gcc_dependency_parser.rb +86 -0
  179. data/lib/ceedling/encodinator.rb +23 -11
  180. data/lib/ceedling/file_finder.rb +373 -89
  181. data/lib/ceedling/file_finder_helper.rb +44 -33
  182. data/lib/ceedling/file_path_collection_utils.rb +17 -4
  183. data/lib/ceedling/file_path_utils.rb +310 -52
  184. data/lib/ceedling/file_wrapper.rb +245 -8
  185. data/lib/ceedling/filename_extension.rb +91 -0
  186. data/lib/ceedling/flaginator.rb +6 -2
  187. data/lib/ceedling/generators/generator.rb +202 -75
  188. data/lib/ceedling/generators/generator_helper.rb +116 -69
  189. data/lib/ceedling/generators/generator_mocks.rb +13 -8
  190. data/lib/ceedling/generators/generator_partials.rb +93 -25
  191. data/lib/ceedling/generators/generator_test_results.rb +29 -17
  192. data/lib/ceedling/generators/generator_test_results_backtrace.rb +199 -107
  193. data/lib/ceedling/generators/generator_test_results_sanity_checker.rb +1 -1
  194. data/lib/ceedling/includes/include_factory.rb +21 -6
  195. data/lib/ceedling/includes/include_pathinator.rb +40 -4
  196. data/lib/ceedling/includes/includes.rb +215 -61
  197. data/lib/ceedling/loginator.rb +13 -4
  198. data/lib/ceedling/objects.yml +218 -33
  199. data/lib/ceedling/parsing_parcels.rb +39 -13
  200. data/lib/ceedling/partials/README.md +53 -0
  201. data/lib/ceedling/partials/partializer.rb +272 -117
  202. data/lib/ceedling/partials/partializer_config.rb +141 -8
  203. data/lib/ceedling/partials/partializer_helper.rb +88 -2
  204. data/lib/ceedling/partials/partializer_utils.rb +1 -1
  205. data/lib/ceedling/partials/partials.rb +4 -4
  206. data/lib/ceedling/path_matcher.rb +163 -0
  207. data/lib/ceedling/path_mirror.rb +73 -0
  208. data/lib/ceedling/plugins/plugin.rb +1 -1
  209. data/lib/ceedling/plugins/plugin_manager.rb +31 -15
  210. data/lib/ceedling/plugins/plugin_manager_helper.rb +5 -1
  211. data/lib/ceedling/plugins/plugin_reportinator.rb +36 -7
  212. data/lib/ceedling/plugins/plugin_reportinator_helper.rb +3 -3
  213. data/lib/ceedling/plugins/report_log_writer_plugin.rb +66 -0
  214. data/lib/ceedling/plugins/report_tests_stdout_plugin.rb +18 -5
  215. data/lib/ceedling/preprocess/README.md +135 -120
  216. data/lib/ceedling/preprocess/c_comment_scanner.rb +9 -7
  217. data/lib/ceedling/preprocess/c_preprocessor_conditionals.rb +27 -10
  218. data/lib/ceedling/preprocess/preprocessinator.rb +253 -217
  219. data/lib/ceedling/preprocess/preprocessinator_bare_includes_extractor.rb +7 -10
  220. data/lib/ceedling/preprocess/preprocessinator_code_finder.rb +8 -6
  221. data/lib/ceedling/preprocess/preprocessinator_comment_stripper.rb +5 -3
  222. data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +86 -82
  223. data/lib/ceedling/preprocess/preprocessinator_includes_handler.rb +182 -163
  224. data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +174 -8
  225. data/lib/ceedling/preprocess/preprocessinator_reconstructor.rb +41 -20
  226. data/lib/ceedling/quote_include_isolator.rb +129 -0
  227. data/lib/ceedling/rake_app/rake_task_registry.rb +9 -9
  228. data/lib/ceedling/rake_app/rake_wrapper.rb +0 -13
  229. data/lib/ceedling/rake_app/rakefile_component_resolver.rb +24 -12
  230. data/lib/ceedling/rakefile.rb +2 -1
  231. data/lib/ceedling/{tasks_base.rake → rakefiles/base/tasks_base.rake} +1 -1
  232. data/lib/ceedling/{tasks_filesystem.rake → rakefiles/base/tasks_filesystem.rake} +3 -0
  233. data/lib/ceedling/rakefiles/release/rules_release.rake +52 -0
  234. data/lib/ceedling/{erb_wrapper.rb → rakefiles/release/tasks_release.rake} +5 -8
  235. data/lib/ceedling/rakefiles/tests/rules_tests.rake +43 -0
  236. data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +80 -0
  237. data/lib/ceedling/{tasks_tests.rake → rakefiles/tests/tasks_tests.rake} +11 -20
  238. data/lib/ceedling/rakefiles/tests/tasks_tests_generate.rake +55 -0
  239. data/lib/ceedling/release_invoker/README.md +35 -0
  240. data/lib/ceedling/release_invoker/release_build_executor.rb +263 -0
  241. data/lib/ceedling/release_invoker/release_build_planner.rb +80 -0
  242. data/lib/ceedling/release_invoker/release_invoker.rb +78 -0
  243. data/lib/ceedling/release_invoker/release_invoker_types.rb +40 -0
  244. data/lib/ceedling/reportinator.rb +18 -2
  245. data/lib/ceedling/ruby_expandinator.rb +40 -1
  246. data/lib/ceedling/setupinator.rb +9 -3
  247. data/lib/ceedling/system_wrapper.rb +17 -0
  248. data/lib/ceedling/templateinator.rb +146 -0
  249. data/lib/ceedling/test_context_extractor.rb +59 -28
  250. data/lib/ceedling/test_invoker/HEADER_COLLISIONS.md +41 -0
  251. data/lib/ceedling/test_invoker/PIPELINE.md +142 -0
  252. data/lib/ceedling/test_invoker/README.md +6 -0
  253. data/lib/ceedling/test_invoker/mock_locator.rb +49 -0
  254. data/lib/ceedling/test_invoker/partials_manager.rb +426 -0
  255. data/lib/ceedling/test_invoker/standin_headerinator.rb +136 -0
  256. data/lib/ceedling/test_invoker/test_bare_includes_extractinator.rb +117 -0
  257. data/lib/ceedling/test_invoker/test_build_executor.rb +783 -415
  258. data/lib/ceedling/test_invoker/test_build_planner.rb +175 -70
  259. data/lib/ceedling/test_invoker/test_build_setup.rb +132 -241
  260. data/lib/ceedling/test_invoker/test_build_validations.rb +102 -0
  261. data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +148 -0
  262. data/lib/ceedling/test_invoker/test_includes_extractinator.rb +34 -0
  263. data/lib/ceedling/test_invoker/test_includes_preprocessinator.rb +118 -0
  264. data/lib/ceedling/test_invoker/test_includes_reconcilinator.rb +149 -0
  265. data/lib/ceedling/test_invoker/test_invoker.rb +16 -183
  266. data/lib/ceedling/test_invoker/test_invoker_types.rb +85 -16
  267. data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +121 -0
  268. data/lib/ceedling/test_invoker/test_pipeline_manager.rb +303 -0
  269. data/lib/ceedling/test_invoker/test_runner_generatinator.rb +105 -0
  270. data/lib/ceedling/test_invoker/test_search_paths.rb +73 -0
  271. data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +78 -0
  272. data/lib/ceedling/tool_executor.rb +42 -13
  273. data/lib/ceedling/tool_executor_helper.rb +1 -1
  274. data/lib/ceedling/tool_validator.rb +124 -123
  275. data/lib/ceedling/yaml_wrapper.rb +5 -3
  276. data/lib/version.rb +19 -2
  277. data/mkdocs.prerelease.yml +42 -0
  278. data/mkdocs.yml +10 -2
  279. data/plugins/bullseye/bullseye.rake +70 -107
  280. data/plugins/bullseye/config/defaults.yml +12 -54
  281. data/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  282. data/plugins/bullseye/lib/bullseye.rb +511 -120
  283. data/plugins/bullseye/lib/bullseye_constants.rb +100 -0
  284. data/plugins/command_hooks/lib/command_hooks.rb +117 -199
  285. data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +72 -27
  286. data/plugins/cppcheck/config/defaults.yml +6 -1
  287. data/plugins/cppcheck/config/defaults_cppcheck.rb +5 -1
  288. data/plugins/cppcheck/cppcheck.rake +7 -1
  289. data/plugins/cppcheck/lib/cppcheck.rb +175 -26
  290. data/plugins/cppcheck/lib/cppcheck_constants.rb +12 -0
  291. data/plugins/cppcheck/lib/cppcheck_reports.rb +5 -1
  292. data/plugins/dependencies/Rakefile +14 -2
  293. data/plugins/dependencies/config/defaults.yml +9 -6
  294. data/plugins/dependencies/dependencies.rake +46 -76
  295. data/plugins/dependencies/example/boss/project.yml +1 -1
  296. data/plugins/dependencies/example/supervisor/project.yml +1 -1
  297. data/plugins/dependencies/example/version.tar.gzip +0 -0
  298. data/plugins/dependencies/lib/dependencies.rb +232 -427
  299. data/plugins/dependencies/lib/dependency_commands.rb +72 -0
  300. data/plugins/dependencies/lib/dependency_environment.rb +57 -0
  301. data/plugins/dependencies/lib/dependency_spec.rb +145 -0
  302. data/plugins/fff/.rspec +1 -0
  303. data/plugins/fff/Rakefile +14 -2
  304. data/plugins/fff/examples/fff_example/project.yml +1 -1
  305. data/plugins/fff/lib/fff.rb +30 -9
  306. data/plugins/fff/lib/fff_mock_generator.rb +142 -128
  307. data/plugins/fff/spec/fff_mock_header_generator_spec.rb +15 -0
  308. data/plugins/fff/spec/fff_mock_source_generator_spec.rb +14 -0
  309. data/plugins/fff/spec/spec_helper.rb +45 -0
  310. data/plugins/fff/src/fff_unity_helper.h +5 -0
  311. data/plugins/fff/vendor/fff/fakegen.rb +5 -4
  312. data/plugins/fff/vendor/fff/fff.h +4 -4
  313. data/plugins/gcov/config/defaults.yml +5 -0
  314. data/plugins/gcov/gcov.rake +12 -8
  315. data/plugins/gcov/lib/console_reportinator.rb +140 -20
  316. data/plugins/gcov/lib/gcov.rb +155 -60
  317. data/plugins/gcov/lib/gcov_constants.rb +4 -7
  318. data/plugins/gcov/lib/gcov_reportinator.rb +90 -0
  319. data/plugins/gcov/lib/gcov_types.rb +62 -1
  320. data/plugins/gcov/lib/gcovr_reportinator.rb +255 -213
  321. data/plugins/gcov/lib/reportgenerator_reportinator.rb +122 -44
  322. data/plugins/module_generator/Rakefile +4 -4
  323. data/plugins/module_generator/config/module_generator.yml +0 -1
  324. data/plugins/module_generator/example/project.yml +1 -1
  325. data/plugins/module_generator/lib/module_generator.rb +117 -87
  326. data/plugins/module_generator/lib/module_generator_options.rb +150 -0
  327. data/plugins/module_generator/lib/module_generator_project.rb +45 -0
  328. data/plugins/module_generator/lib/module_generator_request.rb +83 -0
  329. data/plugins/module_generator/lib/module_generator_test_file.rb +68 -0
  330. data/plugins/module_generator/lib/module_generator_unity.rb +24 -0
  331. data/plugins/module_generator/module_generator.rake +24 -46
  332. data/plugins/report_build_warnings_log/config/defaults.yml +4 -1
  333. data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +47 -55
  334. data/plugins/report_build_warnings_log/lib/warning_collector.rb +140 -0
  335. data/plugins/report_build_warnings_log/lib/warning_reports.rb +135 -0
  336. data/plugins/report_tests_gtestlike_stdout/assets/test_results.template +3 -0
  337. data/{spec/units/configurator_builder_spec.rb → plugins/report_tests_gtestlike_stdout/config/defaults.yml} +6 -10
  338. data/plugins/report_tests_gtestlike_stdout/lib/gtestlike_report.rb +168 -0
  339. data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +25 -1
  340. data/plugins/report_tests_ide_stdout/assets/test_results.template +50 -0
  341. data/plugins/report_tests_ide_stdout/config/defaults.yml +13 -0
  342. data/plugins/report_tests_ide_stdout/lib/ide_report_lines.rb +103 -0
  343. data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +12 -4
  344. data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +33 -51
  345. data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +286 -295
  346. data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +22 -35
  347. data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +91 -133
  348. data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +72 -86
  349. data/plugins/report_tests_log_factory/lib/tests_reporter.rb +31 -12
  350. data/plugins/report_tests_pretty_stdout/assets/{template.erb → test_results.template} +8 -8
  351. data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +18 -48
  352. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +13 -2
  353. data/plugins/sanitize/config/defaults.yml +44 -0
  354. data/plugins/sanitize/config/defaults_sanitize.rb +20 -0
  355. data/plugins/sanitize/lib/sanitize.rb +174 -0
  356. data/plugins/sanitize/lib/sanitize_config.rb +110 -0
  357. data/plugins/sanitize/lib/sanitize_constants.rb +13 -0
  358. data/plugins/sanitize/lib/sanitize_findings.rb +85 -0
  359. data/plugins/sanitize/lib/sanitize_records.rb +115 -0
  360. data/plugins/sanitize/lib/sanitize_reports.rb +135 -0
  361. data/plugins/sanitize/sanitize.rake +108 -0
  362. data/plugins/valgrind/config/defaults.yml +7 -1
  363. data/plugins/valgrind/config/defaults_valgrind.rb +6 -1
  364. data/plugins/valgrind/lib/valgrind.rb +202 -39
  365. data/plugins/valgrind/lib/valgrind_constants.rb +4 -0
  366. data/plugins/valgrind/lib/valgrind_report.rb +52 -0
  367. data/plugins/valgrind/valgrind.rake +33 -11
  368. data/site-local/404.html +248 -14
  369. data/site-local/configuration/environment-vars.html +248 -14
  370. data/site-local/configuration/global-collections.html +248 -19
  371. data/site-local/configuration/index.html +249 -15
  372. data/site-local/configuration/loading.html +260 -22
  373. data/site-local/configuration/mixins.html +252 -17
  374. data/site-local/configuration/parallel-builds.html +248 -14
  375. data/site-local/configuration/project-file.html +275 -30
  376. data/site-local/configuration/reference/cexception.html +255 -20
  377. data/site-local/configuration/reference/cmock.html +281 -14
  378. data/site-local/configuration/reference/defines.html +262 -19
  379. data/site-local/configuration/reference/environment.html +251 -17
  380. data/site-local/configuration/reference/extension.html +361 -16
  381. data/site-local/configuration/reference/files.html +262 -14
  382. data/site-local/configuration/reference/flags.html +270 -19
  383. data/site-local/configuration/reference/index.html +248 -14
  384. data/site-local/configuration/reference/libraries.html +248 -14
  385. data/site-local/configuration/reference/mixins.html +248 -14
  386. data/site-local/configuration/reference/partials.html +249 -19
  387. data/site-local/configuration/reference/paths.html +275 -15
  388. data/site-local/configuration/reference/plugins.html +248 -14
  389. data/site-local/configuration/reference/project.html +291 -14
  390. data/site-local/configuration/reference/release-build.html +256 -14
  391. data/site-local/configuration/reference/test-build.html +290 -24
  392. data/site-local/configuration/reference/test-runner.html +288 -17
  393. data/site-local/configuration/reference/tools.html +254 -14
  394. data/site-local/configuration/reference/unity.html +280 -15
  395. data/site-local/configuration/which-ceedling.html +248 -14
  396. data/site-local/development/index.html +261 -14
  397. data/site-local/development/plugins/configuration.html +269 -17
  398. data/site-local/development/plugins/index.html +267 -15
  399. data/site-local/development/plugins/plugin-subclass.html +906 -154
  400. data/site-local/development/plugins/rake-tasks.html +276 -14
  401. data/site-local/development/releases.html +4708 -0
  402. data/site-local/development/workflow.html +1030 -51
  403. data/site-local/getting-started/builds.html +4607 -0
  404. data/site-local/getting-started/command-line.html +418 -34
  405. data/site-local/getting-started/example-projects/cipher-quest.html +248 -14
  406. data/site-local/getting-started/example-projects/index.html +249 -15
  407. data/site-local/getting-started/example-projects/temp-sensor.html +248 -14
  408. data/site-local/getting-started/example-projects/wondrous-forest.html +248 -14
  409. data/site-local/getting-started/index.html +255 -14
  410. data/site-local/getting-started/installation.html +258 -22
  411. data/site-local/getting-started/quick-start.html +251 -15
  412. data/site-local/help.html +255 -14
  413. data/site-local/index.html +292 -22
  414. data/site-local/overview/build-system.html +249 -15
  415. data/site-local/overview/index.html +248 -14
  416. data/site-local/overview/test-environments.html +257 -14
  417. data/site-local/overview/tools-and-frameworks.html +248 -14
  418. data/site-local/plugins/beep.html +251 -14
  419. data/site-local/plugins/bullseye/index.html +5079 -0
  420. data/site-local/plugins/bullseye/licensing.html +4840 -0
  421. data/site-local/plugins/command-hooks.html +265 -27
  422. data/site-local/plugins/compile-commands-json-db.html +256 -17
  423. data/site-local/plugins/cppcheck.html +1081 -262
  424. data/site-local/plugins/dependencies.html +934 -242
  425. data/site-local/plugins/fff.html +297 -16
  426. data/site-local/plugins/gcov/examples.html +251 -14
  427. data/site-local/plugins/gcov/gcovr.html +686 -31
  428. data/site-local/plugins/gcov/index.html +251 -14
  429. data/site-local/plugins/gcov/overview.html +259 -18
  430. data/site-local/plugins/gcov/reportgenerator.html +563 -28
  431. data/site-local/plugins/gcov/reporting.html +348 -100
  432. data/site-local/plugins/gcov/setup.html +253 -15
  433. data/site-local/plugins/gcov/tool-versions.html +301 -19
  434. data/site-local/plugins/gcov/troubleshooting.html +273 -36
  435. data/site-local/plugins/index.html +294 -36
  436. data/site-local/plugins/module-generator.html +779 -195
  437. data/site-local/plugins/report-build-warnings-log.html +578 -33
  438. data/site-local/plugins/report-tests-gtestlike-stdout.html +467 -84
  439. data/site-local/plugins/report-tests-ide-stdout.html +654 -51
  440. data/site-local/plugins/report-tests-log-factory.html +337 -70
  441. data/site-local/plugins/report-tests-pretty-stdout.html +251 -14
  442. data/site-local/plugins/report-tests-raw-output-log.html +251 -14
  443. data/site-local/plugins/report-tests-teamcity-stdout.html +251 -14
  444. data/site-local/plugins/sanitize.html +5332 -0
  445. data/site-local/plugins/valgrind.html +416 -26
  446. data/site-local/{plugins/bullseye.html → project/index.html} +297 -217
  447. data/site-local/project/release-history.html +251 -17
  448. data/site-local/project/sbom.html +4726 -0
  449. data/site-local/project/upgrade.html +250 -16
  450. data/site-local/reference/build-directives.html +257 -14
  451. data/site-local/reference/command-line.html +373 -16
  452. data/site-local/reference/environment-vars.html +248 -14
  453. data/site-local/reference/gcov-plugin.html +492 -18
  454. data/site-local/reference/global-collections.html +249 -15
  455. data/site-local/reference/index.html +248 -14
  456. data/site-local/reference/partials-macros.html +258 -14
  457. data/site-local/reference/project-configuration.html +248 -14
  458. data/site-local/sitemap.xml.gz +0 -0
  459. data/site-local/snapshot/assets/{project.yml → features/project.yml} +4 -1
  460. data/site-local/snapshot/examples/cipher_quest/index.html +248 -14
  461. data/site-local/snapshot/examples/temp_sensor/index.html +248 -14
  462. data/site-local/snapshot/examples/wondrous_forest/index.html +265 -25
  463. data/site-local/snapshot/plugins/bullseye/config/defaults.yml +24 -0
  464. data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  465. data/site-local/snapshot/plugins/gcov/config/defaults.yml +5 -0
  466. data/site-local/testing-guide/build-directives.html +332 -22
  467. data/site-local/testing-guide/conventions.html +678 -153
  468. data/site-local/testing-guide/frameworks.html +248 -14
  469. data/site-local/testing-guide/index.html +248 -21
  470. data/site-local/testing-guide/partials/configuration.html +248 -14
  471. data/site-local/testing-guide/partials/conventions.html +316 -17
  472. data/site-local/testing-guide/partials/directives.html +456 -48
  473. data/site-local/testing-guide/partials/example.html +248 -14
  474. data/site-local/testing-guide/partials/index.html +255 -14
  475. data/site-local/testing-guide/partials/overview.html +248 -14
  476. data/site-local/testing-guide/partials/variables.html +248 -14
  477. data/site-local/testing-guide/test-cases.html +248 -14
  478. data/site-local/testing-guide/test-sample.html +248 -14
  479. data/site-local/testing-guide/test-suite-anatomy.html +248 -14
  480. data/spec/integration/actionator_file_operations_spec.rb +287 -0
  481. data/spec/integration/analysis_tool_output_spec.rb +204 -0
  482. data/spec/{units/c_extractor/c_extractor_integration_spec.rb → integration/c_extractor_composition_spec.rb} +196 -17
  483. data/spec/integration/command_hooks_plugin_spec.rb +152 -0
  484. data/spec/integration/compile_commands_json_db_spec.rb +76 -0
  485. data/spec/integration/configurator_pipeline_spec.rb +180 -0
  486. data/spec/integration/configurator_plugins_spec.rb +122 -0
  487. data/spec/integration/configurator_validation_spec.rb +98 -0
  488. data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +396 -0
  489. data/spec/integration/dependencies/dependency_tracker_core_spec.rb +244 -0
  490. data/spec/integration/dependencies/dependency_tracker_diagnose_spec.rb +224 -0
  491. data/spec/integration/dependencies/dependency_tracker_filename_handling_spec.rb +118 -0
  492. data/spec/integration/dependencies/dependency_tracker_gcc_deps_spec.rb +199 -0
  493. data/spec/integration/dependencies/dependency_tracker_pruning_spec.rb +167 -0
  494. data/spec/integration/dependencies_plugin_spec.rb +473 -0
  495. data/spec/integration/erb_dependency_removed_spec.rb +167 -0
  496. data/spec/integration/includes_extraction_spec.rb +612 -0
  497. data/spec/integration/mixin_loading_spec.rb +414 -0
  498. data/spec/integration/module_generator_spec.rb +436 -0
  499. data/spec/integration/partials_fallback_preprocessing_spec.rb +316 -0
  500. data/spec/integration/partials_header_composition_spec.rb +889 -0
  501. data/spec/integration/partials_module_resolution_spec.rb +372 -0
  502. data/spec/integration/partials_symbol_linkage_spec.rb +371 -0
  503. data/spec/integration/preprocessing_transient_io_retry_spec.rb +135 -0
  504. data/spec/integration/quote_include_isolator_spec.rb +167 -0
  505. data/spec/integration/report_build_warnings_log_spec.rb +170 -0
  506. data/spec/integration/report_tests_log_factory_spec.rb +100 -0
  507. data/spec/integration/sanitizer_exclusions_spec.rb +126 -0
  508. data/spec/integration/system_harness_sanitizers_spec.rb +104 -0
  509. data/spec/integration/test_build_parallel_barrier_spec.rb +89 -0
  510. data/spec/integration/test_executable_manifest_spec.rb +118 -0
  511. data/spec/integration/test_includes_extractinator_spec.rb +293 -0
  512. data/spec/integration/tool_executor_spec.rb +224 -0
  513. data/spec/integration/tool_validator_spec.rb +133 -0
  514. data/spec/integration/vendor_copy_transient_io_retry_spec.rb +130 -0
  515. data/spec/manual/stress_test.rb +1 -1
  516. data/spec/support/config_yaml_helper.rb +17 -0
  517. data/spec/support/fixtures/sanitizer_reports/clang_asan_heap.txt +45 -0
  518. data/spec/support/fixtures/sanitizer_reports/clang_ubsan_shift.txt +5 -0
  519. data/spec/support/fixtures/sanitizer_reports/gcc_heap.txt +47 -0
  520. data/spec/support/fixtures/sanitizer_reports/gcc_leak.txt +10 -0
  521. data/spec/support/fixtures/sanitizer_reports/gcc_segv.txt +6 -0
  522. data/spec/support/fixtures/sanitizer_reports/gcc_ubsan_shift.txt +6 -0
  523. data/spec/support/fixtures/templates/bullseye__all_pass.txt +6 -0
  524. data/spec/support/fixtures/templates/bullseye__coverage_branches_only.txt +6 -0
  525. data/spec/support/fixtures/templates/bullseye__coverage_functions_only.txt +6 -0
  526. data/spec/support/fixtures/templates/bullseye__coverage_none.txt +6 -0
  527. data/spec/support/fixtures/templates/bullseye__empty.txt +6 -0
  528. data/spec/support/fixtures/templates/bullseye__gcov_context.txt +6 -0
  529. data/spec/support/fixtures/templates/bullseye__mixed_all.txt +6 -0
  530. data/spec/support/fixtures/templates/bullseye__one_failure_matching.txt +6 -0
  531. data/spec/support/fixtures/templates/bullseye__one_failure_multiline.txt +6 -0
  532. data/spec/support/fixtures/templates/bullseye__one_failure_no_message.txt +6 -0
  533. data/spec/support/fixtures/templates/bullseye__one_failure_nonmatching.txt +6 -0
  534. data/spec/support/fixtures/templates/bullseye__one_ignore_no_message.txt +6 -0
  535. data/spec/support/fixtures/templates/bullseye__one_ignore_with_message.txt +6 -0
  536. data/spec/support/fixtures/templates/bullseye__stdout_only.txt +6 -0
  537. data/spec/support/fixtures/templates/ide__all_pass.txt +10 -0
  538. data/spec/support/fixtures/templates/ide__coverage_branches_only.txt +10 -0
  539. data/spec/support/fixtures/templates/ide__coverage_functions_only.txt +10 -0
  540. data/spec/support/fixtures/templates/ide__coverage_none.txt +10 -0
  541. data/spec/support/fixtures/templates/ide__empty.txt +8 -0
  542. data/spec/support/fixtures/templates/ide__gcov_context.txt +28 -0
  543. data/spec/support/fixtures/templates/ide__mixed_all.txt +29 -0
  544. data/spec/support/fixtures/templates/ide__one_failure_matching.txt +15 -0
  545. data/spec/support/fixtures/templates/ide__one_failure_multiline.txt +17 -0
  546. data/spec/support/fixtures/templates/ide__one_failure_no_message.txt +15 -0
  547. data/spec/support/fixtures/templates/ide__one_failure_nonmatching.txt +15 -0
  548. data/spec/support/fixtures/templates/ide__one_ignore_no_message.txt +15 -0
  549. data/spec/support/fixtures/templates/ide__one_ignore_with_message.txt +15 -0
  550. data/spec/support/fixtures/templates/ide__stdout_only.txt +16 -0
  551. data/spec/support/fixtures/templates/pretty__all_pass.txt +8 -0
  552. data/spec/support/fixtures/templates/pretty__coverage_branches_only.txt +8 -0
  553. data/spec/support/fixtures/templates/pretty__coverage_functions_only.txt +8 -0
  554. data/spec/support/fixtures/templates/pretty__coverage_none.txt +8 -0
  555. data/spec/support/fixtures/templates/pretty__empty.txt +6 -0
  556. data/spec/support/fixtures/templates/pretty__gcov_context.txt +31 -0
  557. data/spec/support/fixtures/templates/pretty__mixed_all.txt +35 -0
  558. data/spec/support/fixtures/templates/pretty__one_failure_matching.txt +15 -0
  559. data/spec/support/fixtures/templates/pretty__one_failure_multiline.txt +17 -0
  560. data/spec/support/fixtures/templates/pretty__one_failure_no_message.txt +15 -0
  561. data/spec/support/fixtures/templates/pretty__one_failure_nonmatching.txt +15 -0
  562. data/spec/support/fixtures/templates/pretty__one_ignore_no_message.txt +15 -0
  563. data/spec/support/fixtures/templates/pretty__one_ignore_with_message.txt +15 -0
  564. data/spec/support/fixtures/templates/pretty__stdout_only.txt +15 -0
  565. data/spec/support/fixtures/valgrind_reports/sigsegv.log +51 -0
  566. data/spec/support/fixtures/valgrind_reports/sigsegv.xml +182 -0
  567. data/spec/support/include_guard_helper.rb +20 -0
  568. data/spec/support/integration/configurator_integration_helper.rb +159 -0
  569. data/spec/support/integration/dependency_tracker_integration_helper.rb +136 -0
  570. data/spec/support/integration/partials_generation_integration_helper.rb +726 -0
  571. data/spec/support/integration/spec_integration_helper.rb +285 -0
  572. data/spec/support/integration/test_includes_harness.rb +259 -0
  573. data/spec/support/integration/tool_executor_integration_helper.rb +55 -0
  574. data/spec/support/spec_helper.rb +41 -0
  575. data/spec/support/system/sanitizers/asan_ubsan.yml +82 -0
  576. data/spec/support/system/sanitizers/asan_ubsan_leaks.yml +57 -0
  577. data/spec/support/system/simplecov_boot.rb +66 -0
  578. data/spec/support/system/spec_system_helper.rb +376 -16
  579. data/spec/support/system/system_context.rb +181 -59
  580. data/spec/support/template_render_cases.rb +166 -0
  581. data/spec/system/bracket_path_handling_spec.rb +175 -0
  582. data/spec/system/build_output_mirroring_spec.rb +89 -0
  583. data/spec/system/build_recovery_spec.rb +382 -0
  584. data/spec/system/bullseye_deployment_spec.rb +102 -0
  585. data/spec/system/cli_surface_spec.rb +245 -0
  586. data/spec/system/command_hooks_spec.rb +117 -0
  587. data/spec/system/conditional_include_macro_visibility_spec.rb +32 -124
  588. data/spec/system/conditional_mock_includes_spec.rb +181 -0
  589. data/spec/system/cppcheck_deployment_spec.rb +26 -8
  590. data/spec/system/delta_builds_spec.rb +751 -0
  591. data/spec/system/deployment_as_gem_spec.rb +7 -0
  592. data/spec/system/deployment_as_vendor_spec.rb +29 -145
  593. data/spec/system/dumpconfig_spec.rb +137 -0
  594. data/spec/system/encoding_stress_spec.rb +7 -4
  595. data/spec/system/example_cipher_quest_spec.rb +25 -100
  596. data/spec/system/example_temp_sensor_spec.rb +30 -172
  597. data/spec/system/example_wondrous_forest_spec.rb +25 -62
  598. data/spec/system/extension_multiple_values_spec.rb +75 -0
  599. data/spec/system/files_paths_reporting_spec.rb +154 -0
  600. data/spec/system/gcov_deployment_spec.rb +72 -3
  601. data/spec/system/header_include_path_validation_spec.rb +222 -0
  602. data/spec/system/implicit_source_header_correspondence_disambiguation_spec.rb +100 -0
  603. data/spec/system/include_path_reconciliation_spec.rb +64 -0
  604. data/spec/system/mixin_ordering_spec.rb +30 -415
  605. data/spec/system/mocks_partials_configuration_validation_spec.rb +126 -0
  606. data/spec/system/parent_directory_reference_spec.rb +114 -0
  607. data/spec/system/partials_module_disambiguation_spec.rb +143 -0
  608. data/spec/system/pinned_thread_count_spec.rb +102 -0
  609. data/spec/system/plugin_delta_builds_spec.rb +179 -0
  610. data/spec/system/preprocessing_encoding_spec.rb +87 -4
  611. data/spec/system/preprocessing_fallback_conditionals_spec.rb +19 -25
  612. data/spec/system/preprocessing_parameterized_tests_spec.rb +2 -2
  613. data/spec/system/rake_release_task_path_disambiguation_spec.rb +97 -0
  614. data/spec/system/rake_test_task_path_disambiguation_spec.rb +118 -0
  615. data/spec/system/report_and_tooling_plugins_spec.rb +327 -0
  616. data/spec/system/ruby_replacement_spec.rb +1 -1
  617. data/spec/system/same_named_modules_spec.rb +115 -0
  618. data/spec/system/sanitize_deployment_spec.rb +64 -0
  619. data/spec/system/shuffle_tests_spec.rb +139 -0
  620. data/spec/system/sibling_header_collision_spec.rb +620 -0
  621. data/spec/system/subdir_include_preservation_spec.rb +63 -0
  622. data/spec/system/support/bullseye_common_test_cases.rb +369 -0
  623. data/spec/system/support/bullseye_helpers.rb +70 -0
  624. data/spec/system/support/common_test_cases.rb +167 -43
  625. data/spec/system/support/cppcheck_common_test_cases.rb +80 -0
  626. data/spec/system/support/cppcheck_helpers.rb +10 -8
  627. data/spec/system/support/gcov_common_test_cases.rb +173 -37
  628. data/spec/system/support/gcov_helpers.rb +3 -3
  629. data/spec/system/support/gcov_partials_test_cases.rb +48 -2
  630. data/spec/system/support/sanitize_common_test_cases.rb +222 -0
  631. data/spec/system/support/sanitize_helpers.rb +27 -0
  632. data/spec/system/support/valgrind_common_test_cases.rb +116 -16
  633. data/spec/system/support/valgrind_helpers.rb +3 -4
  634. data/spec/system/test_pipeline_stop_points_spec.rb +160 -0
  635. data/spec/system/test_runner_system_include_spec.rb +19 -41
  636. data/spec/system/test_source_file_directive_spec.rb +235 -0
  637. data/spec/system/upgrade_as_vendor_spec.rb +25 -46
  638. data/spec/system/valgrind_deployment_spec.rb +41 -0
  639. data/spec/units/batchinator_spec.rb +314 -0
  640. data/spec/units/bin/actionator_spec.rb +412 -0
  641. data/spec/units/bin/app_cfg_spec.rb +90 -0
  642. data/spec/units/bin/cli_handler_spec.rb +204 -0
  643. data/spec/units/bin/cli_helper_spec.rb +238 -10
  644. data/spec/units/bin/cli_options_transform_spec.rb +49 -0
  645. data/spec/units/bin/composinator_spec.rb +236 -0
  646. data/spec/units/bin/{projectinator_mixin_spec.rb → mixin_resolvinator_spec.rb} +122 -83
  647. data/spec/units/bin/mixin_standardizer_spec.rb +4 -3
  648. data/spec/units/bin/mixinator_spec.rb +58 -22
  649. data/spec/units/bin/path_validator_spec.rb +112 -0
  650. data/spec/units/bin/projectinator_spec.rb +223 -0
  651. data/spec/units/bin/rake_patches_spec.rb +52 -0
  652. data/spec/units/bin/recursive_merger_spec.rb +22 -0
  653. data/spec/units/bin/versionator_spec.rb +104 -0
  654. data/spec/units/c_extractor/c_extractor_code_text_spec.rb +4 -4
  655. data/spec/units/c_extractor/c_extractor_declarations_spec.rb +70 -0
  656. data/spec/units/c_extractor/c_extractor_functions_spec.rb +75 -1
  657. data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +158 -0
  658. data/spec/units/c_extractor/c_extractor_spec.rb +236 -6
  659. data/spec/units/ceedling/templateinator_golden_spec.rb +84 -0
  660. data/spec/units/ceedling/templateinator_spec.rb +188 -0
  661. data/spec/units/config/configurator_builder_spec.rb +444 -0
  662. data/spec/units/config/configurator_plugins_spec.rb +160 -0
  663. data/spec/units/config/configurator_setup_spec.rb +706 -6
  664. data/spec/units/config/configurator_spec.rb +952 -0
  665. data/spec/units/config/configurator_validator_spec.rb +259 -0
  666. data/spec/units/config/line_marker_suppressors_spec.rb +89 -0
  667. data/spec/units/config_matchinator_spec.rb +103 -0
  668. data/spec/units/defineinator_spec.rb +158 -0
  669. data/spec/units/dependencies/dependency_cache_store_spec.rb +364 -0
  670. data/spec/units/dependencies/dependency_debug_tree_spec.rb +189 -0
  671. data/spec/units/dependencies/dependency_differ_spec.rb +139 -0
  672. data/spec/units/dependencies/dependency_hasher_spec.rb +141 -0
  673. data/spec/units/dependencies/dependency_path_normalizer_spec.rb +111 -0
  674. data/spec/units/dependencies/dependency_tracker_spec.rb +905 -0
  675. data/spec/units/dependencies/dependinator_spec.rb +99 -0
  676. data/spec/units/dependencies/gcc_dependency_parser_spec.rb +152 -0
  677. data/spec/units/encodinator_spec.rb +92 -0
  678. data/spec/units/file_finder_helper_spec.rb +99 -15
  679. data/spec/units/file_finder_spec.rb +495 -0
  680. data/spec/units/file_path_collection_utils_spec.rb +9 -0
  681. data/spec/units/file_path_utils_spec.rb +736 -0
  682. data/spec/units/file_wrapper_spec.rb +447 -0
  683. data/spec/units/filename_extension_spec.rb +120 -0
  684. data/spec/units/flaginator_spec.rb +114 -0
  685. data/spec/units/generators/generator_helper_spec.rb +113 -0
  686. data/spec/units/generators/generator_mocks_spec.rb +131 -0
  687. data/spec/units/generators/generator_partials_spec.rb +366 -77
  688. data/spec/units/generators/generator_spec.rb +317 -0
  689. data/spec/units/generators/generator_test_results_backtrace_spec.rb +169 -9
  690. data/spec/units/generators/generator_test_results_sanity_checker_spec.rb +14 -6
  691. data/spec/units/generators/generator_test_results_spec.rb +65 -8
  692. data/spec/units/generators/generator_test_runner_spec.rb +1 -1
  693. data/spec/units/includes/include_factory_spec.rb +53 -0
  694. data/spec/units/includes/include_pathinator_spec.rb +269 -0
  695. data/spec/units/includes/include_spec.rb +8 -4
  696. data/spec/units/includes/includes_spec.rb +326 -18
  697. data/spec/units/mock_locator_spec.rb +74 -0
  698. data/spec/units/parsing_parcels_spec.rb +65 -0
  699. data/spec/units/partials/partializer_config_spec.rb +284 -18
  700. data/spec/units/partials/partializer_helper_spec.rb +122 -0
  701. data/spec/units/partials/partializer_spec.rb +474 -36
  702. data/spec/units/partials/partializer_utils_spec.rb +4 -4
  703. data/spec/units/partials_manager_spec.rb +539 -0
  704. data/spec/units/path_matcher_spec.rb +193 -0
  705. data/spec/units/path_mirror_spec.rb +103 -0
  706. data/spec/units/plugin_manager_spec.rb +77 -0
  707. data/spec/units/plugin_reportinator_spec.rb +78 -3
  708. data/spec/units/plugins/bullseye_spec.rb +1068 -0
  709. data/spec/units/plugins/command_hooks_spec.rb +157 -0
  710. data/spec/units/plugins/compile_commands_json_db_spec.rb +145 -0
  711. data/spec/units/plugins/console_reportinator_spec.rb +370 -0
  712. data/spec/units/plugins/cppcheck_spec.rb +330 -4
  713. data/spec/units/plugins/cppunit_tests_reporter_spec.rb +118 -0
  714. data/spec/units/plugins/dependencies_spec.rb +295 -0
  715. data/spec/units/plugins/dependency_commands_spec.rb +83 -0
  716. data/spec/units/plugins/dependency_environment_spec.rb +64 -0
  717. data/spec/units/plugins/dependency_spec_spec.rb +170 -0
  718. data/spec/units/plugins/gcov_reportinator_spec.rb +272 -0
  719. data/spec/units/plugins/gcov_spec.rb +521 -0
  720. data/spec/units/plugins/gcovr_reportinator_spec.rb +795 -0
  721. data/spec/units/plugins/gtestlike_report_spec.rb +363 -0
  722. data/spec/units/plugins/html_tests_reporter_spec.rb +158 -0
  723. data/spec/units/plugins/ide_report_lines_spec.rb +229 -0
  724. data/spec/units/plugins/json_tests_reporter_spec.rb +87 -0
  725. data/spec/units/plugins/junit_tests_reporter_spec.rb +237 -0
  726. data/spec/units/plugins/module_generator_options_spec.rb +185 -0
  727. data/spec/units/plugins/module_generator_project_spec.rb +55 -0
  728. data/spec/units/plugins/module_generator_request_spec.rb +107 -0
  729. data/spec/units/plugins/module_generator_spec.rb +214 -0
  730. data/spec/units/plugins/module_generator_test_file_spec.rb +102 -0
  731. data/spec/units/plugins/module_generator_unity_spec.rb +37 -0
  732. data/spec/units/plugins/report_build_warnings_log_spec.rb +199 -0
  733. data/spec/units/plugins/report_log_writer_plugin_spec.rb +94 -0
  734. data/spec/units/plugins/report_tests_gtestlike_stdout_spec.rb +274 -0
  735. data/spec/units/plugins/report_tests_ide_stdout_spec.rb +140 -0
  736. data/spec/units/plugins/report_tests_log_factory_spec.rb +210 -0
  737. data/spec/units/plugins/report_tests_pretty_stdout_spec.rb +83 -0
  738. data/spec/units/plugins/report_tests_raw_output_log_spec.rb +98 -0
  739. data/spec/units/plugins/report_tests_stdout_plugin_spec.rb +145 -0
  740. data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +121 -0
  741. data/spec/units/plugins/reportgenerator_reportinator_spec.rb +410 -0
  742. data/spec/units/plugins/sanitize_config_spec.rb +119 -0
  743. data/spec/units/plugins/sanitize_findings_spec.rb +69 -0
  744. data/spec/units/plugins/sanitize_records_spec.rb +114 -0
  745. data/spec/units/plugins/sanitize_reports_spec.rb +84 -0
  746. data/spec/units/plugins/sanitize_spec.rb +300 -0
  747. data/spec/units/plugins/tests_reporter_spec.rb +89 -0
  748. data/spec/units/plugins/valgrind_spec.rb +560 -0
  749. data/spec/units/plugins/warning_collector_spec.rb +185 -0
  750. data/spec/units/plugins/warning_reports_spec.rb +150 -0
  751. data/spec/units/preprocess/c_comment_scanner_spec.rb +17 -17
  752. data/spec/units/preprocess/c_preprocessor_conditionals_spec.rb +94 -0
  753. data/spec/units/preprocess/preprocessinator_bare_includes_extractor_spec.rb +73 -0
  754. data/spec/units/preprocess/preprocessinator_code_finder_spec.rb +35 -16
  755. data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +129 -48
  756. data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +292 -9
  757. data/spec/units/preprocess/preprocessinator_includes_handler_spec.rb +294 -16
  758. data/spec/units/preprocess/preprocessinator_line_marker_includes_extractor_spec.rb +356 -6
  759. data/spec/units/preprocess/preprocessinator_reconstructor_spec.rb +58 -4
  760. data/spec/units/preprocess/preprocessinator_spec.rb +693 -5
  761. data/spec/units/quote_include_isolator_spec.rb +176 -0
  762. data/spec/units/rake_app/rake_invocation_tracker_spec.rb +94 -0
  763. data/spec/units/rake_app/rake_task_registry_spec.rb +263 -0
  764. data/spec/units/rake_app/rake_utils_spec.rb +54 -0
  765. data/spec/units/rake_app/rake_wrapper_spec.rb +64 -0
  766. data/spec/units/rake_app/rakefile_component_resolver_spec.rb +182 -0
  767. data/spec/units/release_build_executor_spec.rb +404 -0
  768. data/spec/units/release_build_planner_spec.rb +144 -0
  769. data/spec/units/release_invoker_spec.rb +127 -0
  770. data/spec/units/reportinator_spec.rb +35 -0
  771. data/spec/units/ruby_expandinator_spec.rb +36 -0
  772. data/spec/units/standin_headerinator_spec.rb +168 -0
  773. data/spec/units/system_wrapper_spec.rb +16 -0
  774. data/spec/units/test_build_executor_spec.rb +1653 -8
  775. data/spec/units/test_build_planner_spec.rb +878 -0
  776. data/spec/units/test_build_setup_spec.rb +583 -0
  777. data/spec/units/test_context_extractor_spec.rb +51 -3
  778. data/spec/units/test_file_preprocessinator_spec.rb +206 -0
  779. data/spec/units/test_includes_extractinator_spec.rb +764 -0
  780. data/spec/units/test_invoker/objects_wiring_spec.rb +31 -0
  781. data/spec/units/test_invoker_spec.rb +147 -0
  782. data/spec/units/test_invoker_types_spec.rb +182 -0
  783. data/spec/units/test_pipeline_helpers_spec.rb +100 -0
  784. data/spec/units/test_pipeline_manager_spec.rb +415 -0
  785. data/spec/units/test_runner_generatinator_spec.rb +215 -0
  786. data/spec/units/test_runner_manager_spec.rb +70 -0
  787. data/spec/units/test_search_paths_spec.rb +84 -0
  788. data/spec/units/test_source_file_directive_resolver_spec.rb +239 -0
  789. data/spec/units/tool_executor_helper_spec.rb +1 -1
  790. data/spec/units/tool_executor_spec.rb +571 -2
  791. data/spec/units/tool_validator_spec.rb +303 -24
  792. data/spec/units/version_spec.rb +74 -0
  793. data/spec/units/yaml_wrapper_spec.rb +4 -1
  794. data/vendor/cmock/docs/CMock_Summary.md +11 -0
  795. data/vendor/cmock/lib/cmock_config.rb +1 -0
  796. data/vendor/cmock/lib/cmock_generator.rb +5 -1
  797. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +31 -0
  798. data/vendor/cmock/vendor/unity/auto/generate_module.rb +4 -4
  799. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +8 -2
  800. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +2 -2
  801. data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +7 -0
  802. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +4 -0
  803. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  804. data/vendor/cmock/vendor/unity/src/unity_internals.h +21 -7
  805. data/vendor/cmock/vendor/unity/test/Makefile +9 -2
  806. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -0
  807. data/vendor/cmock/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  808. data/vendor/cmock/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  809. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  810. data/vendor/cmock/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  811. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +78 -0
  812. data/vendor/cmock/vendor/unity/test/tests/test_unity_test_summary.rb +58 -0
  813. data/vendor/diy/lib/diy/factory.rb +5 -4
  814. data/vendor/diy/lib/diy.rb +5 -4
  815. data/vendor/diy/sample_code/car.rb +5 -4
  816. data/vendor/diy/sample_code/chassis.rb +5 -4
  817. data/vendor/diy/sample_code/diy_example.rb +5 -4
  818. data/vendor/diy/sample_code/engine.rb +5 -4
  819. data/vendor/diy/sample_code/objects.yml +5 -4
  820. data/vendor/diy/test/constructor.rb +5 -4
  821. data/vendor/diy/test/diy_test.rb +5 -4
  822. data/vendor/diy/test/factory_test.rb +5 -4
  823. data/vendor/diy/test/files/broken_construction.yml +5 -4
  824. data/vendor/diy/test/files/cat/cat.rb +5 -4
  825. data/vendor/diy/test/files/cat/extra_conflict.yml +5 -4
  826. data/vendor/diy/test/files/cat/heritage.rb +5 -4
  827. data/vendor/diy/test/files/cat/needs_input.yml +5 -4
  828. data/vendor/diy/test/files/cat/the_cat_lineage.rb +5 -4
  829. data/vendor/diy/test/files/dog/dog_model.rb +5 -4
  830. data/vendor/diy/test/files/dog/dog_presenter.rb +5 -4
  831. data/vendor/diy/test/files/dog/dog_view.rb +5 -4
  832. data/vendor/diy/test/files/dog/file_resolver.rb +5 -4
  833. data/vendor/diy/test/files/dog/other_thing.rb +5 -4
  834. data/vendor/diy/test/files/dog/simple.yml +5 -4
  835. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +5 -4
  836. data/vendor/diy/test/files/donkey/foo.rb +5 -4
  837. data/vendor/diy/test/files/factory/beef.rb +5 -4
  838. data/vendor/diy/test/files/factory/dog.rb +5 -4
  839. data/vendor/diy/test/files/factory/factory.yml +5 -4
  840. data/vendor/diy/test/files/factory/farm/llama.rb +5 -4
  841. data/vendor/diy/test/files/factory/farm/pork.rb +5 -4
  842. data/vendor/diy/test/files/factory/kitten.rb +5 -4
  843. data/vendor/diy/test/files/fud/objects.yml +5 -4
  844. data/vendor/diy/test/files/fud/toy.rb +5 -4
  845. data/vendor/diy/test/files/functions/attached_things_builder.rb +5 -4
  846. data/vendor/diy/test/files/functions/invalid_method.yml +5 -4
  847. data/vendor/diy/test/files/functions/method_extractor.rb +5 -4
  848. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -4
  849. data/vendor/diy/test/files/functions/objects.yml +5 -4
  850. data/vendor/diy/test/files/functions/thing.rb +5 -4
  851. data/vendor/diy/test/files/functions/thing_builder.rb +5 -4
  852. data/vendor/diy/test/files/functions/things_builder.rb +5 -4
  853. data/vendor/diy/test/files/gnu/objects.yml +5 -4
  854. data/vendor/diy/test/files/gnu/thinger.rb +5 -4
  855. data/vendor/diy/test/files/goat/base.rb +5 -4
  856. data/vendor/diy/test/files/goat/can.rb +5 -4
  857. data/vendor/diy/test/files/goat/goat.rb +5 -4
  858. data/vendor/diy/test/files/goat/objects.yml +5 -4
  859. data/vendor/diy/test/files/goat/paper.rb +5 -4
  860. data/vendor/diy/test/files/goat/plane.rb +5 -4
  861. data/vendor/diy/test/files/goat/shirt.rb +5 -4
  862. data/vendor/diy/test/files/goat/wings.rb +5 -4
  863. data/vendor/diy/test/files/horse/holder_thing.rb +5 -4
  864. data/vendor/diy/test/files/horse/objects.yml +5 -4
  865. data/vendor/diy/test/files/namespace/animal/bird.rb +5 -4
  866. data/vendor/diy/test/files/namespace/animal/cat.rb +5 -4
  867. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +5 -4
  868. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +5 -4
  869. data/vendor/diy/test/files/namespace/bad_module_specified.yml +5 -4
  870. data/vendor/diy/test/files/namespace/class_name_combine.yml +5 -4
  871. data/vendor/diy/test/files/namespace/no_module_specified.yml +5 -4
  872. data/vendor/diy/test/files/namespace/objects.yml +5 -4
  873. data/vendor/diy/test/files/namespace/road.rb +5 -4
  874. data/vendor/diy/test/files/namespace/sky.rb +5 -4
  875. data/vendor/diy/test/files/namespace/subcontext.yml +5 -4
  876. data/vendor/diy/test/files/non_singleton/air.rb +5 -4
  877. data/vendor/diy/test/files/non_singleton/fat_cat.rb +5 -4
  878. data/vendor/diy/test/files/non_singleton/objects.yml +5 -4
  879. data/vendor/diy/test/files/non_singleton/pig.rb +5 -4
  880. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +5 -4
  881. data/vendor/diy/test/files/non_singleton/tick.rb +5 -4
  882. data/vendor/diy/test/files/non_singleton/yard.rb +5 -4
  883. data/vendor/diy/test/files/yak/core_model.rb +5 -4
  884. data/vendor/diy/test/files/yak/core_presenter.rb +5 -4
  885. data/vendor/diy/test/files/yak/core_view.rb +5 -4
  886. data/vendor/diy/test/files/yak/data_source.rb +5 -4
  887. data/vendor/diy/test/files/yak/fringe_model.rb +5 -4
  888. data/vendor/diy/test/files/yak/fringe_presenter.rb +5 -4
  889. data/vendor/diy/test/files/yak/fringe_view.rb +5 -4
  890. data/vendor/diy/test/files/yak/giant_squid.rb +5 -4
  891. data/vendor/diy/test/files/yak/krill.rb +5 -4
  892. data/vendor/diy/test/files/yak/my_objects.yml +5 -4
  893. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +5 -4
  894. data/vendor/diy/test/test_helper.rb +5 -4
  895. data/vendor/unity/auto/generate_module.rb +4 -4
  896. data/vendor/unity/auto/generate_test_runner.rb +5 -1
  897. data/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  898. data/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  899. data/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  900. data/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  901. data/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  902. data/vendor/unity/test/tests/test_generate_test_runner.rb +29 -0
  903. metadata +770 -285
  904. data/assets/tests_with_fallback_conditionals/src/conditional_module.c +0 -18
  905. data/bin/actions_wrapper.rb +0 -51
  906. data/docs/mkdocs/assets/images/ceedling-logo-circle.png +0 -0
  907. data/docs/mkdocs/assets/images/ceedling.svg +0 -90
  908. data/docs/mkdocs/assets/images/favicon.png +0 -0
  909. data/docs/mkdocs/assets/stylesheets/admonitions.css +0 -152
  910. data/docs/mkdocs/assets/stylesheets/fixes-local.css +0 -15
  911. data/docs/mkdocs/assets/stylesheets/styling.css +0 -102
  912. data/docs/mkdocs/configuration/environment-vars.md +0 -14
  913. data/docs/mkdocs/configuration/global-collections.md +0 -156
  914. data/docs/mkdocs/configuration/index.md +0 -75
  915. data/docs/mkdocs/configuration/loading.md +0 -89
  916. data/docs/mkdocs/configuration/mixins.md +0 -607
  917. data/docs/mkdocs/configuration/parallel-builds.md +0 -97
  918. data/docs/mkdocs/configuration/project-file.md +0 -216
  919. data/docs/mkdocs/configuration/reference/cexception.md +0 -35
  920. data/docs/mkdocs/configuration/reference/cmock.md +0 -106
  921. data/docs/mkdocs/configuration/reference/defines.md +0 -352
  922. data/docs/mkdocs/configuration/reference/environment.md +0 -55
  923. data/docs/mkdocs/configuration/reference/extension.md +0 -63
  924. data/docs/mkdocs/configuration/reference/files.md +0 -154
  925. data/docs/mkdocs/configuration/reference/flags.md +0 -296
  926. data/docs/mkdocs/configuration/reference/index.md +0 -176
  927. data/docs/mkdocs/configuration/reference/libraries.md +0 -82
  928. data/docs/mkdocs/configuration/reference/mixins.md +0 -24
  929. data/docs/mkdocs/configuration/reference/partials.md +0 -38
  930. data/docs/mkdocs/configuration/reference/paths.md +0 -276
  931. data/docs/mkdocs/configuration/reference/plugins.md +0 -60
  932. data/docs/mkdocs/configuration/reference/project.md +0 -333
  933. data/docs/mkdocs/configuration/reference/release-build.md +0 -62
  934. data/docs/mkdocs/configuration/reference/test-build.md +0 -55
  935. data/docs/mkdocs/configuration/reference/test-runner.md +0 -61
  936. data/docs/mkdocs/configuration/reference/tools.md +0 -457
  937. data/docs/mkdocs/configuration/reference/unity.md +0 -49
  938. data/docs/mkdocs/configuration/which-ceedling.md +0 -77
  939. data/docs/mkdocs/development/index.md +0 -50
  940. data/docs/mkdocs/development/plugins/configuration.md +0 -164
  941. data/docs/mkdocs/development/plugins/index.md +0 -84
  942. data/docs/mkdocs/development/plugins/plugin-subclass.md +0 -513
  943. data/docs/mkdocs/development/plugins/rake-tasks.md +0 -54
  944. data/docs/mkdocs/development/workflow.md +0 -284
  945. data/docs/mkdocs/getting-started/command-line.md +0 -477
  946. data/docs/mkdocs/getting-started/example-projects/cipher-quest.md +0 -65
  947. data/docs/mkdocs/getting-started/example-projects/index.md +0 -49
  948. data/docs/mkdocs/getting-started/example-projects/temp-sensor.md +0 -60
  949. data/docs/mkdocs/getting-started/example-projects/wondrous-forest.md +0 -45
  950. data/docs/mkdocs/getting-started/index.md +0 -41
  951. data/docs/mkdocs/getting-started/installation.md +0 -179
  952. data/docs/mkdocs/getting-started/quick-start.md +0 -86
  953. data/docs/mkdocs/help.md +0 -49
  954. data/docs/mkdocs/index.md +0 -222
  955. data/docs/mkdocs/overview/build-system.md +0 -115
  956. data/docs/mkdocs/overview/index.md +0 -29
  957. data/docs/mkdocs/overview/test-environments.md +0 -33
  958. data/docs/mkdocs/overview/tools-and-frameworks.md +0 -115
  959. data/docs/mkdocs/plugins/beep.md +0 -134
  960. data/docs/mkdocs/plugins/bullseye.md +0 -83
  961. data/docs/mkdocs/plugins/command-hooks.md +0 -268
  962. data/docs/mkdocs/plugins/compile-commands-json-db.md +0 -42
  963. data/docs/mkdocs/plugins/cppcheck.md +0 -377
  964. data/docs/mkdocs/plugins/dependencies.md +0 -310
  965. data/docs/mkdocs/plugins/fff.md +0 -247
  966. data/docs/mkdocs/plugins/gcov/examples.md +0 -92
  967. data/docs/mkdocs/plugins/gcov/gcovr.md +0 -412
  968. data/docs/mkdocs/plugins/gcov/index.md +0 -74
  969. data/docs/mkdocs/plugins/gcov/overview.md +0 -145
  970. data/docs/mkdocs/plugins/gcov/reportgenerator.md +0 -140
  971. data/docs/mkdocs/plugins/gcov/reporting.md +0 -147
  972. data/docs/mkdocs/plugins/gcov/setup.md +0 -232
  973. data/docs/mkdocs/plugins/gcov/tool-versions.md +0 -60
  974. data/docs/mkdocs/plugins/gcov/troubleshooting.md +0 -78
  975. data/docs/mkdocs/plugins/index.md +0 -261
  976. data/docs/mkdocs/plugins/module-generator.md +0 -267
  977. data/docs/mkdocs/plugins/report-build-warnings-log.md +0 -42
  978. data/docs/mkdocs/plugins/report-tests-gtestlike-stdout.md +0 -98
  979. data/docs/mkdocs/plugins/report-tests-ide-stdout.md +0 -63
  980. data/docs/mkdocs/plugins/report-tests-log-factory.md +0 -454
  981. data/docs/mkdocs/plugins/report-tests-pretty-stdout.md +0 -56
  982. data/docs/mkdocs/plugins/report-tests-raw-output-log.md +0 -52
  983. data/docs/mkdocs/plugins/report-tests-teamcity-stdout.md +0 -96
  984. data/docs/mkdocs/plugins/sample_html_report.png +0 -0
  985. data/docs/mkdocs/plugins/valgrind.md +0 -198
  986. data/docs/mkdocs/project/release-history.md +0 -61
  987. data/docs/mkdocs/project/upgrade.md +0 -85
  988. data/docs/mkdocs/reference/build-directives.md +0 -37
  989. data/docs/mkdocs/reference/command-line.md +0 -323
  990. data/docs/mkdocs/reference/environment-vars.md +0 -60
  991. data/docs/mkdocs/reference/gcov-plugin.md +0 -600
  992. data/docs/mkdocs/reference/global-collections.md +0 -160
  993. data/docs/mkdocs/reference/index.md +0 -65
  994. data/docs/mkdocs/reference/partials-macros.md +0 -79
  995. data/docs/mkdocs/reference/project-configuration.md +0 -46
  996. data/docs/mkdocs/snapshot/assets/project.yml +0 -404
  997. data/docs/mkdocs/snapshot/examples/cipher_quest/README.md +0 -210
  998. data/docs/mkdocs/snapshot/examples/temp_sensor/README.md +0 -283
  999. data/docs/mkdocs/snapshot/examples/wondrous_forest/README.md +0 -92
  1000. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +0 -32
  1001. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults_gcov.rb +0 -136
  1002. data/docs/mkdocs/snapshot.yml +0 -20
  1003. data/docs/mkdocs/testing-guide/build-directives.md +0 -153
  1004. data/docs/mkdocs/testing-guide/conventions.md +0 -616
  1005. data/docs/mkdocs/testing-guide/frameworks.md +0 -192
  1006. data/docs/mkdocs/testing-guide/index.md +0 -80
  1007. data/docs/mkdocs/testing-guide/partials/configuration.md +0 -67
  1008. data/docs/mkdocs/testing-guide/partials/conventions.md +0 -68
  1009. data/docs/mkdocs/testing-guide/partials/directives.md +0 -212
  1010. data/docs/mkdocs/testing-guide/partials/example.md +0 -149
  1011. data/docs/mkdocs/testing-guide/partials/index.md +0 -88
  1012. data/docs/mkdocs/testing-guide/partials/overview.md +0 -81
  1013. data/docs/mkdocs/testing-guide/partials/variables.md +0 -244
  1014. data/docs/mkdocs/testing-guide/test-cases.md +0 -194
  1015. data/docs/mkdocs/testing-guide/test-sample.md +0 -94
  1016. data/docs/mkdocs/testing-guide/test-suite-anatomy.md +0 -58
  1017. data/lib/ceedling/cacheinator.rb +0 -53
  1018. data/lib/ceedling/cacheinator_helper.rb +0 -60
  1019. data/lib/ceedling/dependinator.rb +0 -31
  1020. data/lib/ceedling/makefile.rb +0 -52
  1021. data/lib/ceedling/release_invoker.rb +0 -112
  1022. data/lib/ceedling/rules_release.rake +0 -109
  1023. data/lib/ceedling/rules_tests.rake +0 -40
  1024. data/lib/ceedling/tasks_release.rake +0 -36
  1025. data/plugins/fff/vendor/fff/Makefile +0 -10
  1026. data/plugins/fff/vendor/fff/buildandtest +0 -15
  1027. data/plugins/fff/vendor/fff/examples/Makefile +0 -7
  1028. data/plugins/fff/vendor/fff/examples/driver_testing/Makefile +0 -64
  1029. data/plugins/fff/vendor/fff/examples/driver_testing/driver.c +0 -32
  1030. data/plugins/fff/vendor/fff/examples/driver_testing/driver.h +0 -21
  1031. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.cpp +0 -58
  1032. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.fff.cpp +0 -70
  1033. data/plugins/fff/vendor/fff/examples/driver_testing/hardware_abstraction.h +0 -25
  1034. data/plugins/fff/vendor/fff/examples/driver_testing/registers.h +0 -23
  1035. data/plugins/fff/vendor/fff/examples/embedded_ui/DISPLAY.h +0 -27
  1036. data/plugins/fff/vendor/fff/examples/embedded_ui/Kata.txt +0 -25
  1037. data/plugins/fff/vendor/fff/examples/embedded_ui/Makefile +0 -67
  1038. data/plugins/fff/vendor/fff/examples/embedded_ui/SYSTEM.h +0 -31
  1039. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.c +0 -56
  1040. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.h +0 -22
  1041. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_ansic.c +0 -191
  1042. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_cpp.cpp +0 -144
  1043. data/plugins/fff/vendor/fff/examples/embedded_ui/test_suite_template.c +0 -42
  1044. data/plugins/fff/vendor/fff/gtest/Makefile +0 -22
  1045. data/plugins/fff/vendor/fff/gtest/gtest-all.cc +0 -9118
  1046. data/plugins/fff/vendor/fff/gtest/gtest-main.cc +0 -6
  1047. data/plugins/fff/vendor/fff/gtest/gtest.h +0 -19547
  1048. data/plugins/fff/vendor/fff/test/Makefile +0 -81
  1049. data/plugins/fff/vendor/fff/test/c_test_framework.h +0 -25
  1050. data/plugins/fff/vendor/fff/test/fff_test_c.c +0 -116
  1051. data/plugins/fff/vendor/fff/test/fff_test_cpp.cpp +0 -53
  1052. data/plugins/fff/vendor/fff/test/fff_test_global_c.c +0 -84
  1053. data/plugins/fff/vendor/fff/test/fff_test_global_cpp.cpp +0 -31
  1054. data/plugins/fff/vendor/fff/test/global_fakes.c +0 -21
  1055. data/plugins/fff/vendor/fff/test/global_fakes.h +0 -47
  1056. data/plugins/fff/vendor/fff/test/test_cases.include +0 -276
  1057. data/plugins/report_tests_gtestlike_stdout/assets/template.erb +0 -83
  1058. data/spec/units/configurator_spec.rb +0 -232
  1059. /data/assets/{ceedling → features/ceedling} +0 -0
  1060. /data/assets/{ceedling.cmd → features/ceedling.cmd} +0 -0
  1061. /data/assets/{default_gitignore → features/default_gitignore} +0 -0
  1062. /data/assets/{broken_uncovered_file.c → fixtures/broken_uncovered_file.c} +0 -0
  1063. /data/assets/{example_file.c → fixtures/example_file.c} +0 -0
  1064. /data/assets/{example_file.h → fixtures/example_file.h} +0 -0
  1065. /data/assets/{example_file_call.c → fixtures/example_file_call.c} +0 -0
  1066. /data/assets/{example_file_call.h → fixtures/example_file_call.h} +0 -0
  1067. /data/assets/{example_file_with_statics.c → fixtures/example_file_with_statics.c} +0 -0
  1068. /data/assets/{example_file_with_stdio.c → fixtures/example_file_with_stdio.c} +0 -0
  1069. /data/assets/{example_file_with_stdio.h → fixtures/example_file_with_stdio.h} +0 -0
  1070. /data/assets/{fake_crash_test_fixture.rb → fixtures/fake_crash_test_fixture.rb} +0 -0
  1071. /data/assets/{partial_all_module.h → fixtures/partial_all_module.h} +0 -0
  1072. /data/assets/{run_with_ubsan.rb → fixtures/run_with_ubsan.rb} +0 -0
  1073. /data/assets/{same_dir_pairing_module.c → fixtures/same_dir_pairing_module.c} +0 -0
  1074. /data/assets/{same_dir_pairing_module.h → fixtures/same_dir_pairing_module.h} +0 -0
  1075. /data/assets/{same_dir_pairing_module_func.h → fixtures/same_dir_pairing_module_func.h} +0 -0
  1076. /data/assets/{same_dir_pairing_other.c → fixtures/same_dir_pairing_other.c} +0 -0
  1077. /data/assets/{same_dir_pairing_other.h → fixtures/same_dir_pairing_other.h} +0 -0
  1078. /data/assets/{test_example_file.c → fixtures/test_example_file.c} +0 -0
  1079. /data/assets/{test_example_file_2.c → fixtures/test_example_file_2.c} +0 -0
  1080. /data/assets/{test_example_file_source_include.c → fixtures/test_example_file_source_include.c} +0 -0
  1081. /data/assets/{test_example_file_success.c → fixtures/test_example_file_success.c} +0 -0
  1082. /data/assets/{test_example_file_unity_printf.c → fixtures/test_example_file_unity_printf.c} +0 -0
  1083. /data/assets/{test_example_file_verbose.c → fixtures/test_example_file_verbose.c} +0 -0
  1084. /data/assets/{test_example_file_with_mock.c → fixtures/test_example_file_with_mock.c} +0 -0
  1085. /data/assets/{test_example_file_with_stdio.c → fixtures/test_example_file_with_stdio.c} +0 -0
  1086. /data/assets/{test_example_with_parameterized_tests.c → fixtures/test_example_with_parameterized_tests.c} +0 -0
  1087. /data/assets/{test_partial_all_module.c → fixtures/test_partial_all_module.c} +0 -0
  1088. /data/assets/{test_same_dir_pairing.c → fixtures/test_same_dir_pairing.c} +0 -0
  1089. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_config.h +0 -0
  1090. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_extra.h +0 -0
  1091. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/local_flag_extra.h +0 -0
  1092. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_extra.h +0 -0
  1093. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_wrapper.h +0 -0
  1094. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/project_flag_extra.h +0 -0
  1095. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.h +0 -0
  1096. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.c +0 -0
  1097. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.h +0 -0
  1098. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.c +0 -0
  1099. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.h +0 -0
  1100. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware.c +0 -0
  1101. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware_special.c +0 -0
  1102. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.c +0 -0
  1103. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.h +0 -0
  1104. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder.c +0 -0
  1105. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder_partial.c +0 -0
  1106. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/conditional_module.h +0 -0
  1107. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/optional_dep.h +0 -0
  1108. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.c +0 -0
  1109. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.h +0 -0
  1110. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.c +0 -0
  1111. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.h +0 -0
  1112. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.c +0 -0
  1113. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.h +0 -0
  1114. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_blanks.c +0 -0
  1115. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_counter.c +0 -0
  1116. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_decorators.c +0 -0
  1117. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.c +0 -0
  1118. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.h +0 -0
  1119. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.c +0 -0
  1120. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.h +0 -0
  1121. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.c +0 -0
  1122. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.h +0 -0
  1123. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorA.h +0 -0
  1124. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorB.h +0 -0
  1125. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorC.h +0 -0
  1126. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareA.c +0 -0
  1127. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareB.c +0 -0
  1128. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareC.c +0 -0
  1129. /data/assets/{uncovered_example_file.c → fixtures/uncovered_example_file.c} +0 -0
  1130. /data/plugins/bullseye/assets/{template.erb → coverage.template} +0 -0
@@ -89,10 +89,34 @@
89
89
  </div>
90
90
  <div data-md-component="announce">
91
91
 
92
+ <aside class="md-banner">
93
+ <div class="md-banner__inner md-grid md-typeset">
94
+
95
+
96
+
97
+
98
+ </div>
99
+
100
+ </aside>
101
+
92
102
  </div>
93
103
 
94
104
  <div data-md-color-scheme="default" data-md-component="outdated" hidden>
95
105
 
106
+ <aside class="md-banner md-banner--warning">
107
+ <div class="md-banner__inner md-grid md-typeset">
108
+
109
+
110
+ You are not viewing the latest version.
111
+ <a href="../..">
112
+ <strong>Click here to go to latest.</strong>
113
+ </a>
114
+
115
+
116
+ </div>
117
+ <script>var el=document.querySelector("[data-md-component=outdated]"),base=new URL(".."),outdated=__md_get("__outdated",sessionStorage,base);!0===outdated&&el&&(el.hidden=!1)</script>
118
+ </aside>
119
+
96
120
  </div>
97
121
 
98
122
 
@@ -332,7 +356,7 @@
332
356
 
333
357
 
334
358
  <li class="md-tabs__item">
335
- <a href="../project/release-history.html" class="md-tabs__link">
359
+ <a href="../project/index.html" class="md-tabs__link">
336
360
 
337
361
 
338
362
 
@@ -641,6 +665,8 @@
641
665
 
642
666
 
643
667
 
668
+
669
+
644
670
 
645
671
 
646
672
 
@@ -788,6 +814,34 @@
788
814
 
789
815
 
790
816
 
817
+ <li class="md-nav__item">
818
+ <a href="../getting-started/builds.html" class="md-nav__link">
819
+
820
+
821
+
822
+ <span class="md-ellipsis">
823
+
824
+
825
+ Builds
826
+
827
+
828
+
829
+ </span>
830
+
831
+
832
+
833
+ </a>
834
+ </li>
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
791
845
 
792
846
 
793
847
 
@@ -814,7 +868,7 @@
814
868
 
815
869
 
816
870
 
817
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
871
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
818
872
 
819
873
 
820
874
  <div class="md-nav__link md-nav__container">
@@ -836,14 +890,14 @@
836
890
  </a>
837
891
 
838
892
 
839
- <label class="md-nav__link " for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
893
+ <label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
840
894
  <span class="md-nav__icon md-icon"></span>
841
895
  </label>
842
896
 
843
897
  </div>
844
898
 
845
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
846
- <label class="md-nav__title" for="__nav_3_5">
899
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
900
+ <label class="md-nav__title" for="__nav_3_6">
847
901
  <span class="md-nav__icon md-icon"></span>
848
902
 
849
903
 
@@ -1199,6 +1253,45 @@
1199
1253
  </span>
1200
1254
  </a>
1201
1255
 
1256
+ </li>
1257
+
1258
+ <li class="md-nav__item">
1259
+ <a href="#distinguishing-same-named-files" class="md-nav__link">
1260
+ <span class="md-ellipsis">
1261
+
1262
+ Distinguishing same-named files
1263
+
1264
+ </span>
1265
+ </a>
1266
+
1267
+ <nav class="md-nav" aria-label="Distinguishing same-named files">
1268
+ <ul class="md-nav__list">
1269
+
1270
+ <li class="md-nav__item">
1271
+ <a href="#header-source-files" class="md-nav__link">
1272
+ <span class="md-ellipsis">
1273
+
1274
+ Header / source files
1275
+
1276
+ </span>
1277
+ </a>
1278
+
1279
+ </li>
1280
+
1281
+ <li class="md-nav__item">
1282
+ <a href="#test-files-cli-test-tasks" class="md-nav__link">
1283
+ <span class="md-ellipsis">
1284
+
1285
+ Test files (CLI test tasks)
1286
+
1287
+ </span>
1288
+ </a>
1289
+
1290
+ </li>
1291
+
1292
+ </ul>
1293
+ </nav>
1294
+
1202
1295
  </li>
1203
1296
 
1204
1297
  <li class="md-nav__item">
@@ -1305,6 +1398,50 @@
1305
1398
  </span>
1306
1399
  </a>
1307
1400
 
1401
+ </li>
1402
+
1403
+ <li class="md-nav__item">
1404
+ <a href="#preprocessing-for-include-directives" class="md-nav__link">
1405
+ <span class="md-ellipsis">
1406
+
1407
+ Preprocessing for include directives
1408
+
1409
+ </span>
1410
+ </a>
1411
+
1412
+ </li>
1413
+
1414
+ <li class="md-nav__item">
1415
+ <a href="#preprocessing-for-tests-and-mocks" class="md-nav__link">
1416
+ <span class="md-ellipsis">
1417
+
1418
+ Preprocessing for tests and mocks
1419
+
1420
+ </span>
1421
+ </a>
1422
+
1423
+ </li>
1424
+
1425
+ <li class="md-nav__item">
1426
+ <a href="#preprocessing-for-partials" class="md-nav__link">
1427
+ <span class="md-ellipsis">
1428
+
1429
+ Preprocessing for Partials
1430
+
1431
+ </span>
1432
+ </a>
1433
+
1434
+ </li>
1435
+
1436
+ <li class="md-nav__item">
1437
+ <a href="#fallback-test-build-preprocessing" class="md-nav__link">
1438
+ <span class="md-ellipsis">
1439
+
1440
+ Fallback test build preprocessing
1441
+
1442
+ </span>
1443
+ </a>
1444
+
1308
1445
  </li>
1309
1446
 
1310
1447
  <li class="md-nav__item">
@@ -1404,23 +1541,6 @@
1404
1541
  </span>
1405
1542
  </a>
1406
1543
 
1407
- <nav class="md-nav" aria-label="Dependency tracking">
1408
- <ul class="md-nav__list">
1409
-
1410
- <li class="md-nav__item">
1411
- <a href="#not-so-smart-rebuilds" class="md-nav__link">
1412
- <span class="md-ellipsis">
1413
-
1414
- (Not so) smart rebuilds
1415
-
1416
- </span>
1417
- </a>
1418
-
1419
- </li>
1420
-
1421
- </ul>
1422
- </nav>
1423
-
1424
1544
  </li>
1425
1545
 
1426
1546
  <li class="md-nav__item">
@@ -2759,6 +2879,8 @@
2759
2879
 
2760
2880
 
2761
2881
 
2882
+
2883
+
2762
2884
 
2763
2885
 
2764
2886
 
@@ -3390,8 +3512,61 @@
3390
3512
 
3391
3513
 
3392
3514
  <li class="md-nav__item">
3393
- <a href="../plugins/bullseye.html" class="md-nav__link">
3515
+ <a href="../plugins/sanitize.html" class="md-nav__link">
3516
+
3517
+
3518
+
3519
+ <span class="md-ellipsis">
3520
+
3521
+
3522
+ Sanitize (ASan, UBSan & Leaks)
3523
+
3524
+
3525
+
3526
+ </span>
3527
+
3528
+
3529
+
3530
+ </a>
3531
+ </li>
3532
+
3533
+
3534
+
3535
+
3536
+
3537
+
3538
+
3539
+
3540
+
3541
+
3542
+
3543
+
3544
+
3394
3545
 
3546
+
3547
+
3548
+
3549
+
3550
+
3551
+
3552
+
3553
+
3554
+
3555
+
3556
+
3557
+
3558
+
3559
+
3560
+ <li class="md-nav__item md-nav__item--nested">
3561
+
3562
+
3563
+
3564
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_13" >
3565
+
3566
+
3567
+ <div class="md-nav__link md-nav__container">
3568
+ <a href="../plugins/bullseye/index.html" class="md-nav__link ">
3569
+
3395
3570
 
3396
3571
 
3397
3572
  <span class="md-ellipsis">
@@ -3401,6 +3576,50 @@
3401
3576
 
3402
3577
 
3403
3578
 
3579
+ </span>
3580
+
3581
+
3582
+
3583
+ </a>
3584
+
3585
+
3586
+ <label class="md-nav__link " for="__nav_6_13" id="__nav_6_13_label" tabindex="0">
3587
+ <span class="md-nav__icon md-icon"></span>
3588
+ </label>
3589
+
3590
+ </div>
3591
+
3592
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_13_label" aria-expanded="false">
3593
+ <label class="md-nav__title" for="__nav_6_13">
3594
+ <span class="md-nav__icon md-icon"></span>
3595
+
3596
+
3597
+ Bullseye (Coverage)
3598
+
3599
+
3600
+ </label>
3601
+ <ul class="md-nav__list" data-md-scrollfix>
3602
+
3603
+
3604
+
3605
+
3606
+
3607
+
3608
+
3609
+
3610
+
3611
+ <li class="md-nav__item">
3612
+ <a href="../plugins/bullseye/licensing.html" class="md-nav__link">
3613
+
3614
+
3615
+
3616
+ <span class="md-ellipsis">
3617
+
3618
+
3619
+ Licensing
3620
+
3621
+
3622
+
3404
3623
  </span>
3405
3624
 
3406
3625
 
@@ -3411,6 +3630,14 @@
3411
3630
 
3412
3631
 
3413
3632
 
3633
+ </ul>
3634
+ </nav>
3635
+
3636
+ </li>
3637
+
3638
+
3639
+
3640
+
3414
3641
 
3415
3642
 
3416
3643
 
@@ -3880,6 +4107,12 @@
3880
4107
 
3881
4108
 
3882
4109
 
4110
+
4111
+
4112
+
4113
+
4114
+
4115
+
3883
4116
 
3884
4117
 
3885
4118
 
@@ -3899,8 +4132,9 @@
3899
4132
  <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
3900
4133
 
3901
4134
 
3902
- <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
3903
-
4135
+ <div class="md-nav__link md-nav__container">
4136
+ <a href="../project/index.html" class="md-nav__link ">
4137
+
3904
4138
 
3905
4139
 
3906
4140
  <span class="md-ellipsis">
@@ -3914,8 +4148,14 @@
3914
4148
 
3915
4149
 
3916
4150
 
3917
- <span class="md-nav__icon md-icon"></span>
3918
- </label>
4151
+ </a>
4152
+
4153
+
4154
+ <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0">
4155
+ <span class="md-nav__icon md-icon"></span>
4156
+ </label>
4157
+
4158
+ </div>
3919
4159
 
3920
4160
  <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
3921
4161
  <label class="md-nav__title" for="__nav_8">
@@ -3929,6 +4169,8 @@
3929
4169
  <ul class="md-nav__list" data-md-scrollfix>
3930
4170
 
3931
4171
 
4172
+
4173
+
3932
4174
 
3933
4175
 
3934
4176
 
@@ -3962,6 +4204,34 @@
3962
4204
 
3963
4205
 
3964
4206
 
4207
+ <li class="md-nav__item">
4208
+ <a href="../project/sbom.html" class="md-nav__link">
4209
+
4210
+
4211
+
4212
+ <span class="md-ellipsis">
4213
+
4214
+
4215
+ Software Bill of Materials
4216
+
4217
+
4218
+
4219
+ </span>
4220
+
4221
+
4222
+
4223
+ </a>
4224
+ </li>
4225
+
4226
+
4227
+
4228
+
4229
+
4230
+
4231
+
4232
+
4233
+
4234
+
3965
4235
  <li class="md-nav__item">
3966
4236
  <a href="../project/upgrade.html" class="md-nav__link">
3967
4237
 
@@ -4033,6 +4303,8 @@
4033
4303
 
4034
4304
 
4035
4305
 
4306
+
4307
+
4036
4308
 
4037
4309
 
4038
4310
 
@@ -4123,6 +4395,34 @@
4123
4395
 
4124
4396
 
4125
4397
 
4398
+ <li class="md-nav__item">
4399
+ <a href="../development/releases.html" class="md-nav__link">
4400
+
4401
+
4402
+
4403
+ <span class="md-ellipsis">
4404
+
4405
+
4406
+ Branching & Releases
4407
+
4408
+
4409
+
4410
+ </span>
4411
+
4412
+
4413
+
4414
+ </a>
4415
+ </li>
4416
+
4417
+
4418
+
4419
+
4420
+
4421
+
4422
+
4423
+
4424
+
4425
+
4126
4426
 
4127
4427
 
4128
4428
 
@@ -4149,7 +4449,7 @@
4149
4449
 
4150
4450
 
4151
4451
 
4152
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_3" >
4452
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_4" >
4153
4453
 
4154
4454
 
4155
4455
  <div class="md-nav__link md-nav__container">
@@ -4171,14 +4471,14 @@
4171
4471
  </a>
4172
4472
 
4173
4473
 
4174
- <label class="md-nav__link " for="__nav_10_3" id="__nav_10_3_label" tabindex="0">
4474
+ <label class="md-nav__link " for="__nav_10_4" id="__nav_10_4_label" tabindex="0">
4175
4475
  <span class="md-nav__icon md-icon"></span>
4176
4476
  </label>
4177
4477
 
4178
4478
  </div>
4179
4479
 
4180
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_3_label" aria-expanded="false">
4181
- <label class="md-nav__title" for="__nav_10_3">
4480
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_4_label" aria-expanded="false">
4481
+ <label class="md-nav__title" for="__nav_10_4">
4182
4482
  <span class="md-nav__icon md-icon"></span>
4183
4483
 
4184
4484
 
@@ -4324,6 +4624,45 @@
4324
4624
  </span>
4325
4625
  </a>
4326
4626
 
4627
+ </li>
4628
+
4629
+ <li class="md-nav__item">
4630
+ <a href="#distinguishing-same-named-files" class="md-nav__link">
4631
+ <span class="md-ellipsis">
4632
+
4633
+ Distinguishing same-named files
4634
+
4635
+ </span>
4636
+ </a>
4637
+
4638
+ <nav class="md-nav" aria-label="Distinguishing same-named files">
4639
+ <ul class="md-nav__list">
4640
+
4641
+ <li class="md-nav__item">
4642
+ <a href="#header-source-files" class="md-nav__link">
4643
+ <span class="md-ellipsis">
4644
+
4645
+ Header / source files
4646
+
4647
+ </span>
4648
+ </a>
4649
+
4650
+ </li>
4651
+
4652
+ <li class="md-nav__item">
4653
+ <a href="#test-files-cli-test-tasks" class="md-nav__link">
4654
+ <span class="md-ellipsis">
4655
+
4656
+ Test files (CLI test tasks)
4657
+
4658
+ </span>
4659
+ </a>
4660
+
4661
+ </li>
4662
+
4663
+ </ul>
4664
+ </nav>
4665
+
4327
4666
  </li>
4328
4667
 
4329
4668
  <li class="md-nav__item">
@@ -4430,6 +4769,50 @@
4430
4769
  </span>
4431
4770
  </a>
4432
4771
 
4772
+ </li>
4773
+
4774
+ <li class="md-nav__item">
4775
+ <a href="#preprocessing-for-include-directives" class="md-nav__link">
4776
+ <span class="md-ellipsis">
4777
+
4778
+ Preprocessing for include directives
4779
+
4780
+ </span>
4781
+ </a>
4782
+
4783
+ </li>
4784
+
4785
+ <li class="md-nav__item">
4786
+ <a href="#preprocessing-for-tests-and-mocks" class="md-nav__link">
4787
+ <span class="md-ellipsis">
4788
+
4789
+ Preprocessing for tests and mocks
4790
+
4791
+ </span>
4792
+ </a>
4793
+
4794
+ </li>
4795
+
4796
+ <li class="md-nav__item">
4797
+ <a href="#preprocessing-for-partials" class="md-nav__link">
4798
+ <span class="md-ellipsis">
4799
+
4800
+ Preprocessing for Partials
4801
+
4802
+ </span>
4803
+ </a>
4804
+
4805
+ </li>
4806
+
4807
+ <li class="md-nav__item">
4808
+ <a href="#fallback-test-build-preprocessing" class="md-nav__link">
4809
+ <span class="md-ellipsis">
4810
+
4811
+ Fallback test build preprocessing
4812
+
4813
+ </span>
4814
+ </a>
4815
+
4433
4816
  </li>
4434
4817
 
4435
4818
  <li class="md-nav__item">
@@ -4529,23 +4912,6 @@
4529
4912
  </span>
4530
4913
  </a>
4531
4914
 
4532
- <nav class="md-nav" aria-label="Dependency tracking">
4533
- <ul class="md-nav__list">
4534
-
4535
- <li class="md-nav__item">
4536
- <a href="#not-so-smart-rebuilds" class="md-nav__link">
4537
- <span class="md-ellipsis">
4538
-
4539
- (Not so) smart rebuilds
4540
-
4541
- </span>
4542
- </a>
4543
-
4544
- </li>
4545
-
4546
- </ul>
4547
- </nav>
4548
-
4549
4915
  </li>
4550
4916
 
4551
4917
  <li class="md-nav__item">
@@ -4678,10 +5044,10 @@
4678
5044
 
4679
5045
 
4680
5046
  <h1 id="conventions-behaviors">Conventions &amp; Behaviors</h1>
4681
- <p><strong>How to get things done and understand what's happening during builds</strong></p>
5047
+ <p><strong>How to get things done and understand what’s happening during builds</strong></p>
4682
5048
  <h2 id="directory-structure-filenames">Directory structure &amp; filenames</h2>
4683
- <p>Much of Ceedling's functionality is driven by collecting files
4684
- matching certain patterns inside the paths it's configured
5049
+ <p>Much of Ceedling’s functionality is driven by collecting files
5050
+ matching certain patterns inside the paths it’s configured
4685
5051
  to search. See the documentation for the <code>:extension</code> section
4686
5052
  of your configuration file (found in the <a href="../configuration/index.html">configuration reference</a>) to
4687
5053
  configure the file extensions Ceedling uses to match and collect
@@ -4689,14 +5055,70 @@ files. Test file naming is covered later in this section.</p>
4689
5055
  <p>Test files and source files must be segregated by directories.
4690
5056
  Any directory structure will do. Tests can be held in subdirectories
4691
5057
  within source directories, or tests and source directories
4692
- can be wholly separated at the top of your project's directory
5058
+ can be wholly separated at the top of your project’s directory
4693
5059
  tree.</p>
5060
+ <h2 id="distinguishing-same-named-files">Distinguishing same-named files</h2>
5061
+ <h3 id="header-source-files">Header / source files</h3>
5062
+ <p>Ceedling distinguishes files by their full relative path, not just their
5063
+ filename. A project may have, for example, both <code>src/drivers/uart.c</code> and
5064
+ <code>src/sensors/uart.c</code> without one hiding or colliding with the other.</p>
5065
+ <p>Distinguishing files is mostly an issue in test builds. If two files share
5066
+ a name without enough path to distinguish them, Ceedling resolves the reference
5067
+ to the first match among the file collection. File collections are ordered per
5068
+ your project configuration (<code>:paths</code>). The ordering of collected files is
5069
+ identical to the search path ordering provided to the compiler from the same
5070
+ <code>:paths</code> configuration plus any use of
5071
+ <a href="build-directives.html#test_include_path"><code>TEST_INCLUDE_PATH()</code></a> directives in
5072
+ a test file. When Ceedling finds more than one reference, it uses the first
5073
+ in the ordered file list but logs an informational notice naming multi-file
5074
+ matches, so the choice is not silent.</p>
5075
+ <p>If Ceedling uses the wrong match for lack of path information, your test build
5076
+ fails downstream with an ordinary compilation error indirectly revealing the
5077
+ issue. Add enough path at the point of reference to select the file you actually
5078
+ meant.</p>
5079
+ <ul>
5080
+ <li>Use paths in <code>#include</code> directives in your test files to distinguish header
5081
+ files of the same name (mocks are distiguished by the same filepath as the
5082
+ headers from which they are generated). Examples: <code>#include "foo/bar/file.h"</code>
5083
+ and/or <code>#include "foo/bar/mock_file.h"</code>.</li>
5084
+ <li>Use the <a href="build-directives.html"><code>TEST_SOURCE_FILE()</code> build directive macro</a>
5085
+ to provide a path to distinguish source files of the same name to be
5086
+ compiled and linked with a test executable.</li>
5087
+ </ul>
5088
+ <div class="admonition tip">
5089
+ <p class="admonition-title">Mocking two same-named headers in one test file</p>
5090
+ <p>Include each mock through its folder, as in <code>#include "drivers/uart/mock_config.h"</code>
5091
+ and <code>#include "drivers/spi/mock_config.h"</code>. With
5092
+ <a href="../configuration/reference/cmock.html#mock_name_include_folder"><code>:cmock</code> ↳ <code>:mock_name_include_folder</code></a>,
5093
+ enabled by default, each mock is named by that folder, and the two do not collide.</p>
5094
+ </div>
5095
+ <p><code>TEST_SOURCE_FILE()</code> also takes precedence over the header/source correspondence
5096
+ convention above. If a test both <code>#include</code>s a header and separately names a
5097
+ same-named source via <code>TEST_SOURCE_FILE()</code>, the directive’s own path wins outright
5098
+ — its source is the one compiled, and the header/source convention does not also
5099
+ compile whatever it would otherwise have found on its own for that same name. This
5100
+ holds even when the header’s own <code>#include</code> was already unambiguous; a
5101
+ <code>TEST_SOURCE_FILE()</code> entry sharing that basename is always authoritative. (The
5102
+ header itself is still validated/resolved as usual — only which <em>source</em> file gets
5103
+ compiled for a shared basename is affected.) Like the search-path resolution
5104
+ above, this override is logged with an informational notice naming the winning
5105
+ <code>TEST_SOURCE_FILE()</code> entry and the <code>#include</code> it overrode, so the substitution
5106
+ is not silent either.</p>
5107
+ <h3 id="test-files-cli-test-tasks">Test files (CLI test tasks)</h3>
5108
+ <p>Execute <a href="../getting-started/command-line.html"><code>ceedling test:</code> tasks</a> at the command line with an
5109
+ optional partial path to distinguish test executables (e.g. <code>test:foo/bar.c</code>),
5110
+ recalling that multiple conventions exist for finding/executing a test
5111
+ executable via <code>test:</code> task.</p>
5112
+ <p>Unlike the cases above, a same-named test file given at the command line is
5113
+ <strong>not</strong> auto-resolved. You must supply enough path yourself in the task
5114
+ name. Ceedling will complain about colliding task names and provide a list
5115
+ of matching candidates to help you provide path to disambiguate test files.</p>
4694
5116
  <h2 id="test-build-search-paths">Test build search paths</h2>
4695
5117
  <p>Test builds in C are fairly complex. Each test file becomes a test
4696
5118
  executable. Each test executable needs generated runner code and
4697
5119
  optionally generated mocks. Slicing and dicing what files are
4698
5120
  compiled and linked and how search paths are assembled is tricky
4699
- business. That's why Ceedling exists in the first place. Because
5121
+ business. That’s why Ceedling exists in the first place. Because
4700
5122
  of these issues, search paths, in particular, require quite a bit
4701
5123
  of special handling.</p>
4702
5124
  <p>Unless your project is relying exclusively on <code>extern</code> statements and
@@ -4734,8 +5156,8 @@ it is assembled from a variety of sources. In order:</p>
4734
5156
  <li><code>:paths</code> ↳ <code>:support</code> list from your project configuration</li>
4735
5157
  <li><code>:paths</code> ↳ <code>:include</code> list from your project configuration</li>
4736
5158
  <li><code>:paths</code> ↳ <code>:libraries</code> list from your project configuration</li>
4737
- <li>Internal path for Unity's unit test framework C code</li>
4738
- <li>Internal paths for CMock's C code (if respective feature enabled)</li>
5159
+ <li>Internal path for Unity’s unit test framework C code</li>
5160
+ <li>Internal paths for CMock’s C code (if respective feature enabled)</li>
4739
5161
  <li><code>:paths</code> ↳ <code>:test_toolchain_include</code> list from your project
4740
5162
  configuration</li>
4741
5163
  </ol>
@@ -4776,7 +5198,7 @@ source file is compiled into an object file. All object files are linked.
4776
5198
  A Ceedling release build may optionally compile and link in CException
4777
5199
  and can handle linking in libraries as well.</p>
4778
5200
  <p>Search paths for release builds are configured with <code>:paths</code> ↳ <code>:include</code>
4779
- in your project configuration. That's about all there is to it.</p>
5201
+ in your project configuration. That’s about all there is to it.</p>
4780
5202
  <h2 id="source-files-release-artifacts">Source files &amp; release artifacts</h2>
4781
5203
  <p>Your binary release artifact results from the compilation and
4782
5204
  linking of all source files Ceedling finds in the specified source
@@ -4800,6 +5222,38 @@ For example, <code>test_some_super_functionality.c</code>, <code>TestYourSourceF
4800
5222
  or <code>testing_MyAwesomeCode.C</code> could each be valid test file
4801
5223
  names. Note, however, that Ceedling can recognize only one test
4802
5224
  file naming convention per project.</p>
5225
+ <h4 id="installer-like-test-filenames-on-windows">Installer-like test filenames on Windows</h4>
5226
+ <p>On Windows, Ceedling writes a manifest beside each test executable. It lets a
5227
+ test executable run whatever its name.</p>
5228
+ <p>A test executable is named after its test file. Windows treats an executable
5229
+ whose name contains <em>install</em>, <em>setup</em>, <em>update</em>, or <em>patch</em> as an installer.
5230
+ The Installer Detection feature of User Account Control (UAC) then demands
5231
+ administrator privileges to run it. A test file such as <code>test_setup_parser.c</code>
5232
+ would otherwise build a test executable Windows will not run.</p>
5233
+ <p>The manifest, <code>&lt;test executable&gt;.manifest</code>, asks Windows to run the executable
5234
+ with your own privileges. That turns Installer Detection off for it. When a
5235
+ test filename contains one of these words, Ceedling logs a warning noting that
5236
+ it generated the manifest.</p>
5237
+ <p>Windows ignores a manifest file when the executable already embeds a manifest
5238
+ of its own. Whether yours does depends on your toolchain.</p>
5239
+ <ul>
5240
+ <li><strong>MinGW-w64 GCC from <a href="https://www.msys2.org">MSYS2</a></strong> links a default manifest into every executable
5241
+ when its <code>windows-default-manifest</code> package is installed. That manifest
5242
+ already asks Windows to run the executable with your own privileges, so
5243
+ these names cause no trouble, and the manifest file is unused. This GCC is
5244
+ also the one RubyInstaller’s DevKit provides.</li>
5245
+ <li><strong>Other MinGW-w64 distributions</strong> may or may not include that default
5246
+ manifest. GCC links it only when it finds <code>default-manifest.o</code> among its
5247
+ libraries. Without it, the manifest file Ceedling writes is what lets these
5248
+ test executables run.</li>
5249
+ <li><strong>The original MinGW</strong> (mingw.org) is believed to embed no manifest, so it
5250
+ relies on the manifest file.</li>
5251
+ </ul>
5252
+ <p>To see whether an executable embeds a manifest, search it for the text
5253
+ <code>requestedExecutionLevel</code>. A match means Windows uses the embedded manifest.</p>
5254
+ <p>Before 1.2.0, Ceedling wrote no manifest. With a toolchain that embeds none,
5255
+ test files with these words in their names could not be run on Windows without
5256
+ administrator privileges.</p>
4803
5257
  <h3 id="source-mock-files-to-compile-and-link">Source &amp; mock files to compile and link</h3>
4804
5258
  <p>Ceedling knows what files to compile and link into each individual
4805
5259
  test executable by way of the <code>#include</code> list contained in each
@@ -4815,12 +5269,23 @@ test file and optional test directive macros.</p>
4815
5269
  compile &amp; link that generated code into into the test executable
4816
5270
  as well.</li>
4817
5271
  </ol>
5272
+ <p>A mock is generated into the directory mirroring the header it came from, so two
5273
+ same-named headers in different directories produce two mocks in different
5274
+ directories. A single test file can mock both when it includes each mock through
5275
+ its folder (e.g. <code>#include "folder/mock_foo.h"</code>), since each mock is then named
5276
+ by that folder.</p>
4818
5277
  <p>Sometimes the source file you need to add to your test executable has
4819
5278
  no corresponding header file — e.g. <code>file_abc.h</code> contains symbols
4820
5279
  present in <code>file_xyz.c</code>. In these cases, you can use the test
4821
5280
  directive macro <code>TEST_SOURCE_FILE(...)</code> to tell Ceedling to compile
4822
5281
  and link the desired source file into the test executable (see
4823
5282
  <a href="build-directives.html">macro documentation</a>).</p>
5283
+ <p>Conversely, sometimes you may need to remove from a test executable
5284
+ build a source file that corresponds to an <code>#include</code> directive in your
5285
+ test file. A <code>TEST_SOURCE_FILE()</code> entry prefixed with a <code>-:</code> decorator
5286
+ removes a named file from a test‘s compile/link list. See
5287
+ <a href="build-directives.html#test_source_file-subtractive-notation"><code>TEST_SOURCE_FILE()</code> Subtractive Notation</a>
5288
+ for the full discussion.</p>
4824
5289
  <p>That was a lot of information and many clauses in a very few
4825
5290
  sentences; the commented example test file code that follows in a
4826
5291
  bit will make it clearer.</p>
@@ -4847,13 +5312,39 @@ the naming convention of your test case functions.</p>
4847
5312
  <p>Ceedling and CMock are advanced tools that both perform fairly sophisticated
4848
5313
  parsing.</p>
4849
5314
  <p>However, neither of these tools fully understands the entire C language,
4850
- especially C's preprocessing statements.</p>
5315
+ especially C’s preprocessing statements.</p>
5316
+ <p>Ceedling’s preprocessing features rely on <code>gcc</code>’s preprocessing mode to strip
5317
+ down / expand test files and headers to their raw code content that can then
5318
+ be parsed as text by Ceedling and CMock. These tools must be in your search
5319
+ path if Ceedling’s preprocessing is enabled.</p>
5320
+ <p>See the <a href="../configuration/reference/project.html"><code>:project</code> ↳ <code>:use_test_preprocessor</code></a> project
5321
+ configuration setting.</p>
5322
+ <div class="admonition warning">
5323
+ <p class="admonition-title">Warning</p>
5324
+ <p>Ceedling’s test preprocessing abilities are directly tied to the features and
5325
+ output of <code>gcc</code>. The default tool definitions for these should not be
5326
+ redefined for other toolchains. Future Ceedling improvements will allow for a
5327
+ plugin-style ability to use your own tools in this highly specialized capacity.</p>
5328
+ </div>
5329
+ <h3 id="preprocessing-for-include-directives">Preprocessing for include directives</h3>
5330
+ <p>In order for Ceedling to do its job, it needs an accurate picture of <code>#include</code>
5331
+ directives used by mockable headers and test files. For simple projects, this can
5332
+ be done with simple text scanning.</p>
5333
+ <p>For projects with conditional compilation (e.g. <code>#ifdef</code>) around include
5334
+ directives or include directives with macros as targets, preprocessing is required.
5335
+ Ceedling uses various passes of preprocessor modes to successfully extract
5336
+ <code>#include</code> directives.</p>
5337
+ <p>A test file’s <code>#include</code> directives are extracted with the preprocessor only when
5338
+ test files are preprocessed, with <code>:use_test_preprocessor</code> set to <code>:tests</code> or <code>:all</code>.
5339
+ With <code>:mocks</code>, only mockable headers are preprocessed, and a test file’s
5340
+ <code>#include</code> directives come from text scanning.</p>
5341
+ <h3 id="preprocessing-for-tests-and-mocks">Preprocessing for tests and mocks</h3>
4851
5342
  <p>If your test files rely on macros and <code>#ifdef</code> conditionals used in certain
4852
- ways (see examples below), there's a chance that Ceedling will break on trying
5343
+ ways (see examples below), there’s a chance that Ceedling will break on trying
4853
5344
  to process your test files, or, alternatively, your test suite will build but
4854
5345
  not execute as expected.</p>
4855
5346
  <p>Similarly, generating mocks of header files with macros and <code>#ifdef</code>
4856
- conditionals around or in function signatures can get weird. Of course, it's
5347
+ conditionals around or in function signatures can get weird. Of course, it’s
4857
5348
  often in sophisticated projects with complex header files that mocking is most
4858
5349
  desired in the first place.</p>
4859
5350
  <p>Ceedling includes an optional ability to preprocess the following files before
@@ -4863,38 +5354,60 @@ then extracting test cases and functions to be mocked with text parsing.</p>
4863
5354
  <li>Mockable header files, or</li>
4864
5355
  <li>Both of the above </li>
4865
5356
  </ol>
4866
- <p>See the <a href="../configuration/reference/project.html"><code>:project</code> ↳ <code>:use_test_preprocessor</code></a> project
4867
- configuration setting.</p>
4868
- <p>This Ceedling feature uses <code>gcc</code>'s preprocessing mode and the <code>cpp</code> preprocessor
4869
- tool to strip down / expand test files and headers to their raw code content
4870
- that can then be parsed as text by Ceedling and CMock. These tools must be in
4871
- your search path if Ceedling's preprocessing is enabled.</p>
4872
- <p><strong>Ceedling's test preprocessing abilities are directly tied to the features and
4873
- output of <code>gcc</code> and <code>cpp</code>. The default Ceedling tool definitions for these should
4874
- not be redefined for other toolchains. It is highly unlikely to work for you.
4875
- Future Ceedling improvements will allow for a plugin-style ability to use your
4876
- own tools in this highly specialized capacity.</strong></p>
5357
+ <h3 id="preprocessing-for-partials">Preprocessing for Partials</h3>
5358
+ <p>When <a href="partials/index.html">Partials</a> are enabled, Ceedling expands the use of preprocessing
5359
+ beyond only include directives, mockable headers, and test files to partialized
5360
+ source files as well. In order to extract and surgically alter your source code
5361
+ to become a generated Partial, your source code must be run through various passes
5362
+ of preprocessig to resolve conditional compilation, expand macros, etc.</p>
5363
+ <div class="admonition note">
5364
+ <p class="admonition-title">Note</p>
5365
+ <p>The use of Partials automatically enables test preprocessing regardless of
5366
+ your configuration setting and logs the setting update.</p>
5367
+ </div>
5368
+ <h3 id="fallback-test-build-preprocessing">Fallback test build preprocessing</h3>
5369
+ <p>Ceedling depends on the GNU Compiler Collection (<code>gcc</code>) for many of its advanced
5370
+ features (such as in the preceding sections).</p>
5371
+ <p>Older versions of <code>gcc</code> or <code>clang</code> standins may not support certain preprocessing
5372
+ features Ceedling requires. Ceedling probes for those features; if they are not
5373
+ found then Ceedling falls back to a simpler, best-effort
5374
+ <a href="../configuration/reference/test-build.html#preprocess_force_fallback">fallback preprocessing</a>.</p>
5375
+ <p>Fallback preprocessing is a best effort with no guarantees. It is not as capable
5376
+ as full preprocessing, but it can usually handle the most common preprocessing
5377
+ needs (i.e. conditional compilation). Ceedling does what it can to find and log
5378
+ issues related to inadequate preprocessing before you get to mysterious
5379
+ compilation errors.</p>
5380
+ <div class="admonition tip">
5381
+ <p class="admonition-title">Fallback preprocessing for faster test builds</p>
5382
+ <p>Ceedling’s internal <a href="../configuration/reference/test-build.html#preprocess_force_fallback">fallback preprocessing mode can be forced</a>,
5383
+ and, for <strong><em>some</em></strong> projects this can be a shortcut to running advanced
5384
+ Ceedling features such as Partials with faster builds.</p>
5385
+ <p><strong><em>If using Partials, there’s a good chance your code is too complex for fallback preprocessing.</em></strong></p>
5386
+ </div>
4877
5387
  <h3 id="limitations-gotchas">Limitations &amp; gotchas</h3>
4878
5388
  <h4 id="preprocessing-limitations-cheatsheet">Preprocessing limitations cheatsheet</h4>
4879
- <p>Ceedling's preprocessing abilities are generally quite useful — especially in
5389
+ <p>Ceedling’s preprocessing abilities are generally quite useful — especially in
4880
5390
  projects with multiple build configurations for different feature sets or
4881
5391
  multiple targets, legacy code that cannot be refactored, and complex header
4882
5392
  files provided by vendors.</p>
4883
- <p>However, best applying Ceedling's preprocessing abilities requires understanding
5393
+ <p>However, best applying Ceedling’s preprocessing abilities requires understanding
4884
5394
  how the feature works, when to use it, and its limitations.</p>
4885
- <p>At a high level, Ceedling's preprocessing is applicable for cases where macros
5395
+ <p>At a high level, Ceedling’s preprocessing is applicable for cases where macros
4886
5396
  or conditional compilation preprocessing statements (e.g. <code>#ifdef</code>):</p>
4887
5397
  <ul>
4888
5398
  <li>Generate or hide/reveal your test files' <code>#include</code> statements.</li>
4889
5399
  <li>Generate or hide/reveal your test files' test case function signatures
4890
- (e.g. <code>void test_foo()</code>.</li>
5400
+ (e.g. <code>void test_foo()</code>).</li>
4891
5401
  <li>Generate or hide/reveal mockable header files' <code>#include</code> statements.</li>
4892
5402
  <li>Generate or hide/reveal header files' mockable function signatures.</li>
4893
5403
  </ul>
4894
- <p><strong><em>NOTE:</em> You do not necessarily need to enable Ceedling's preprocessing only
4895
- because you have preprocessing statements in your test files or mockable header
4896
- files. The feature is only truly needed if your project meets the conditions
4897
- above.</strong></p>
5404
+ <div class="admonition note">
5405
+ <p class="admonition-title">Note</p>
5406
+ <p>You do not necessarily need to enable Ceedling’s preprocessing only
5407
+ because you have preprocessing statements in your test files or mockable
5408
+ header files. The feature is only truly needed if your project meets the
5409
+ conditions above.</p>
5410
+ </div>
4898
5411
  <p>The sections that follow flesh out the details of the bulleted list above.</p>
4899
5412
  <h4 id="preprocessing-gotchas">Preprocessing gotchas</h4>
4900
5413
  <h5 id="test_include_path-incompatibe-with-ifdef"><code>TEST_INCLUDE_PATH()</code> incompatibe with <code>#ifdef</code></h5>
@@ -4909,7 +5422,7 @@ statements.</p>
4909
5422
  for advanced abilities discovered by Ceedling parsing a test file as plain text.
4910
5423
  Whether or not Ceedling preprocessing is enabled, Ceedling will always discover
4911
5424
  this marker macro in the plain text of a test file.</p>
4912
- <p>Why is <code>TEST_INCLUDE_PATH()</code> incompatible with <code>#ifdef</code>? Well, it's because of
5425
+ <p>Why is <code>TEST_INCLUDE_PATH()</code> incompatible with <code>#ifdef</code>? Well, it’s because of
4913
5426
  a cyclical dependency that cannot be resolved. In order to perform test
4914
5427
  preprocessing, we need a full complement of <code>#include</code> search paths. These
4915
5428
  could be provided, in part, by <code>TEST_INCLUDE_PATH()</code>. But, if we allow
@@ -4921,7 +5434,7 @@ plain text looking for this macro at the beginning of a test build.</p>
4921
5434
  <ul>
4922
5435
  <li><code>TEST_SOURCE_FILE()</code> <em>can</em> be placed within conditional compilation
4923
5436
  C preprocessing statements.</li>
4924
- <li><code>TEST_INCLUDE_PATH()</code> &amp; <code>TEST_SOURCE_FILE()</code> can be “hidden” from Ceedling's
5437
+ <li><code>TEST_INCLUDE_PATH()</code> &amp; <code>TEST_SOURCE_FILE()</code> can be “hidden” from Ceedling’s
4925
5438
  text scanning with traditional C comments.</li>
4926
5439
  </ul>
4927
5440
  <h3 id="test-file-preprocessing">Test file preprocessing</h3>
@@ -4930,9 +5443,9 @@ statements in test files before extracting <code>#include</code> conventions and
4930
5443
  signatures. That is, preprocessing output is used to generate test runners
4931
5444
  and assemble the components of a test executable build.</p>
4932
5445
  <div class="admonition tip">
4933
- <p class="admonition-title">Preprocessing Not Needed Inside Test Functions</p>
5446
+ <p class="admonition-title">Preprocessing not needed inside test functions</p>
4934
5447
  <p>Conditional directives <em>inside</em> test case functions generally do not require
4935
- Ceedling's test preprocessing ability. Assuming your code is correct, the C
5448
+ Ceedling’s test preprocessing ability. Assuming your code is correct, the C
4936
5449
  preprocessor within your toolchain will do the right thing for you in your
4937
5450
  test build. Read on for more details and the other cases of interest.</p>
4938
5451
  </div>
@@ -4941,17 +5454,17 @@ preprocessor directives generate the <code>#include</code> statements for your t
4941
5454
  and/or generate or enclose full test case functions. Ceedling will not be able
4942
5455
  to properly discover your <code>#include</code> statements or test case functions unless
4943
5456
  they are plainly available in an expanded, raw code version of your test file.
4944
- Ceedling's preprocessing abilities provide that expansion.</p>
5457
+ Ceedling’s preprocessing abilities provide that expansion.</p>
4945
5458
  <h4 id="examples-of-when-ceedling-preprocessing-is-needed-for-test-files">Examples of when Ceedling preprocessing <strong><em>is</em></strong> needed for test files</h4>
4946
5459
  <p>Generally, Ceedling preprocessing is needed when:</p>
4947
5460
  <ol>
4948
- <li><code>#include</code> statements are generated by macros</li>
5461
+ <li><code>#include</code> directives targets are macros</li>
4949
5462
  <li><code>#include</code> statements are conditionally present due to <code>#ifdef</code> statements</li>
4950
5463
  <li>Test case function signatures are generated by macros</li>
4951
5464
  <li>Test case function signatures are conditionaly present due to <code>#ifdef</code> statements</li>
4952
5465
  </ol>
4953
- <p><div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1">// #include conventions are not recognized for anything except #include &quot;...&quot; statements</span>
4954
- <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="n">INCLUDE_STATEMENT_MAGIC</span><span class="p">(</span><span class="s">&quot;header_file&quot;</span><span class="p">)</span>
5466
+ <p><div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1">// #include directive targeting a macor</span>
5467
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="cp">#include INCLUDE_STATEMENT_MAGIC(&quot;header_file&quot;)</span>
4955
5468
  </code></pre></div>
4956
5469
  <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="c1">// Test file scanning will always see this #include statement</span>
4957
5470
  <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
@@ -4970,29 +5483,57 @@ Ceedling's preprocessing abilities provide that expansion.</p>
4970
5483
  <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
4971
5484
  <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="p">}</span>
4972
5485
  </code></pre></div></p>
5486
+ <h4 id="where-the-macros-deciding-an-include-come-from">Where the macros deciding an <code>#include</code> come from</h4>
5487
+ <p>With test preprocessing, a conditional <code>#include</code> (item 2 above) is decided by the same
5488
+ macros your compiler will see, wherever they are defined. A macro may come from your
5489
+ project’s <code>:defines</code>, from the test file itself, or from a header the test file includes.
5490
+ That header can even be one the test file mocks, since a mock includes its real header.</p>
5491
+ <p><div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1">// config.h</span>
5492
+ <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="cp">#define FEATURE_X_ENABLED</span>
5493
+ </code></pre></div>
5494
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1">// test_feature.c</span>
5495
+ <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;mock_config.h&quot;</span><span class="c1"> // The mock includes config.h, defining FEATURE_X_ENABLED</span>
5496
+ <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>
5497
+ <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="cp">#ifdef FEATURE_X_ENABLED</span>
5498
+ <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;mock_feature_x.h&quot;</span><span class="c1"> // Ceedling finds and generates this mock</span>
5499
+ <a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="cp">#endif</span>
5500
+ </code></pre></div></p>
5501
+ <div class="admonition warning">
5502
+ <p class="admonition-title">Warning</p>
5503
+ <p>One combination is out of reach. An <code>#include</code> whose target is a macro (item 1
5504
+ above) cannot name a mock when only a header defines that macro. Define the macro
5505
+ under <code>:defines</code> ↳ <code>:test</code> instead, so the test file sees it directly.</p>
5506
+ </div>
5507
+ <p><div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="c1">// config.h</span>
5508
+ <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="cp">#define FEATURE_MOCK &quot;mock_feature_x.h&quot;</span>
5509
+ </code></pre></div>
5510
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="c1">// test_feature.c</span>
5511
+ <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;config.h&quot;</span>
5512
+ <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="cp">#include FEATURE_MOCK </span><span class="c1">// Ceedling cannot find this mock</span>
5513
+ </code></pre></div></p>
4973
5514
  <h4 id="examples-of-when-test-preprocessing-is-not-needed-for-test-files">Examples of when test preprocessing is <strong><em>not</em></strong> needed for test files</h4>
4974
- <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1">// Code inside a test case is simply code that your toolchain will expand and build as you desire</span>
4975
- <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="c1">// You can manage your compile time symbols with the :defines section of your project configuration file</span>
4976
- <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="kt">void</span><span class="w"> </span><span class="nf">test_some_test_case</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
4977
- <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
4978
- <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
4979
- <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="cp">#endif</span>
4980
- <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a>
4981
- <a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="cp">#ifdef BUILD_VARIANT_B</span>
4982
- <a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
4983
- <a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="cp">#endif</span>
4984
- <a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="p">}</span>
5515
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="c1">// Code inside a test case is simply code that your toolchain will expand and build as you desire</span>
5516
+ <a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="c1">// You can manage your compile time symbols with the :defines section of your project configuration file</span>
5517
+ <a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="kt">void</span><span class="w"> </span><span class="nf">test_some_test_case</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
5518
+ <a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
5519
+ <a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
5520
+ <a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a><span class="cp">#endif</span>
5521
+ <a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a>
5522
+ <a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a><span class="cp">#ifdef BUILD_VARIANT_B</span>
5523
+ <a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
5524
+ <a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a><span class="cp">#endif</span>
5525
+ <a id="__codelineno-8-11" name="__codelineno-8-11" href="#__codelineno-8-11"></a><span class="p">}</span>
4985
5526
  </code></pre></div>
4986
5527
  <h3 id="header-file-preprocessing">Header file preprocessing</h3>
4987
5528
  <p>When preprocessing is enabled for mocking, Ceedling will expand preprocessor
4988
5529
  statements in header files before generating mocks from them. CMock requires
4989
5530
  a clear look at function definitions and types in order to do its work.</p>
4990
5531
  <p>Header files with preprocessor directives and conditional macros can easily
4991
- obscure details from CMock's limited C parser. Advanced C projects tend
5532
+ obscure details from CMock’s limited C parser. Advanced C projects tend
4992
5533
  to rely on preprocessing directives and macros to accomplish everything from
4993
5534
  build variants to OS calls to register access to managing proprietary language
4994
5535
  extensions.</p>
4995
- <p>Mocking is often most useful in complicated codebases. As such Ceedling's
5536
+ <p>Mocking is often most useful in complicated codebases. As such Ceedling’s
4996
5537
  preprocessing abilities tend to be quite necessary to properly expand header
4997
5538
  files so CMock can parse them.</p>
4998
5539
  <h4 id="examples-of-when-ceedling-preprocessing-is-needed-for-mockable-headers">Examples of when Ceedling preprocessing <strong><em>is</em></strong> needed for mockable headers</h4>
@@ -5006,15 +5547,15 @@ files so CMock can parse them.</p>
5006
5547
  <p><strong><em>Important Notes:</em></strong></p>
5007
5548
  <ul>
5008
5549
  <li>
5009
- <p>Sometimes CMock's parsing features can be configured to handle scenarios
5550
+ <p>Sometimes CMock’s parsing features can be configured to handle scenarios
5010
5551
  that fall within (3) above. CMock can match and remove most text strings,
5011
5552
  match and replace certain text strings, map custom types to mockable
5012
5553
  alternatives, and be extended with a Unity helper to handle complex and
5013
- compound types. See <a href="http://github.com/ThrowTheSwitch/CMock">CMock</a>'s documentation for more.</p>
5554
+ compound types. See <a href="http://github.com/ThrowTheSwitch/CMock">CMock</a>’s documentation for more.</p>
5014
5555
  </li>
5015
5556
  <li>
5016
5557
  <p>Test preprocessing causes any macros or symbols in a mockable header to
5017
- "disappear" in the generated mock. It's quite common to have needed symbols
5558
+ "disappear" in the generated mock. It’s quite common to have needed symbols
5018
5559
  or macros in a header file that do not directly impact the function
5019
5560
  signatures to be mocked. This can break compilation of your test suite.</p>
5020
5561
  </li>
@@ -5022,21 +5563,21 @@ files so CMock can parse them.</p>
5022
5563
  <p>Possible solutions to this problem include:</p>
5023
5564
  <div class="highlight"><pre><span></span><code>1. Move symbols and macros in your header file that do not impact function
5024
5565
  signatures to another source header file that will not be filtered
5025
- by Ceedling&#39;s header file preprocessing.
5566
+ by Ceedling’s header file preprocessing.
5026
5567
  1. If (1) is not possible, you may duplicate the needed symbols and macros
5027
5568
  in a header file that is only available in your test build search paths
5028
5569
  and include it in your test file.
5029
5570
  </code></pre></div>
5030
- <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1">// Header file scanning will see this function signature but mistakenly mock the name of the macro</span>
5031
- <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">FUNCTION_SIGNATURE_MAGIC</span><span class="p">(...);</span>
5571
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="c1">// Header file scanning will see this function signature but mistakenly mock the name of the macro</span>
5572
+ <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">FUNCTION_SIGNATURE_MAGIC</span><span class="p">(...);</span>
5032
5573
  </code></pre></div>
5033
- <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="c1">// Header file scanning will always see this function signature</span>
5034
- <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
5035
- <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">someFunction</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
5036
- <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="cp">#endif</span>
5574
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="c1">// Header file scanning will always see this function signature</span>
5575
+ <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
5576
+ <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">someFunction</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
5577
+ <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="cp">#endif</span>
5037
5578
  </code></pre></div>
5038
- <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="c1">// Header file scanning will either fail for this function signature or extract erroneous type names</span>
5039
- <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="n">INLINE_MAGIC</span><span class="w"> </span><span class="n">RETURN_TYPE_MAGIC</span><span class="w"> </span><span class="n">someFunction</span><span class="p">(</span><span class="n">PARAMETER_MAGIC</span><span class="p">);</span>
5579
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="c1">// Header file scanning will either fail for this function signature or extract erroneous type names</span>
5580
+ <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="n">INLINE_MAGIC</span><span class="w"> </span><span class="n">RETURN_TYPE_MAGIC</span><span class="w"> </span><span class="n">someFunction</span><span class="p">(</span><span class="n">PARAMETER_MAGIC</span><span class="p">);</span>
5040
5581
  </code></pre></div>
5041
5582
  <h2 id="duration-reporting">Duration reporting</h2>
5042
5583
  <h3 id="logged-run-times">Logged run times</h3>
@@ -5044,11 +5585,11 @@ files so CMock can parse them.</p>
5044
5585
  <p>It first logs the set up time necessary to process your project file, parse code
5045
5586
  files, build an internal representation of your project, etc. This duration does
5046
5587
  not capture the time necessary to load the Ruby runtime itself.</p>
5047
- <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>Ceedling set up completed in 223 milliseconds
5588
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>Ceedling set up completed in 223 milliseconds
5048
5589
  </code></pre></div>
5049
5590
  <p>Secondly, each Ceedling run also logs the time necessary to run all the tasks
5050
5591
  you specify at the command line.</p>
5051
- <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>Ceedling operations completed in 1.03 seconds
5592
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>Ceedling operations completed in 1.03 seconds
5052
5593
  </code></pre></div>
5053
5594
  <h3 id="test-suite-executable-durations">Test suite &amp; executable durations</h3>
5054
5595
  <p>A test suite comprises one or more Unity test executables (see
@@ -5061,8 +5602,8 @@ effort is usually required to map Ceedling duration values to a relevant test
5061
5602
  suite abstraction within a given test report format.</p>
5062
5603
  <p>Because Ceedling can execute builds with multiple threads, care must be taken
5063
5604
  to interpret test suite duration values — particularly in relation to
5064
- Ceedling's logged run times.</p>
5065
- <p>In a multi-threaded build it's quite common for the logged Ceedling project run
5605
+ Ceedling’s logged run times.</p>
5606
+ <p>In a multi-threaded build it’s quite common for the logged Ceedling project run
5066
5607
  time to be less than the total suite time in a test report. In multi-threaded
5067
5608
  builds on multi-core machines, test executables are run on different processors
5068
5609
  simultaneously. As such, the total on-processor time in a test report can
@@ -5076,13 +5617,13 @@ a in a comparable single-threaded build.</p>
5076
5617
  supports the time mechanism Unity relies on, Ceedling will automatically
5077
5618
  collect test case time values — generally made use of by test report plugins.</p>
5078
5619
  <p>To enable test case duration measurements, they must be enabled as a Unity
5079
- compilation option. Add <code>UNITY_INCLUDE_EXEC_TIME</code> to Unity's compilation
5620
+ compilation option. Add <code>UNITY_INCLUDE_EXEC_TIME</code> to Unity’s compilation
5080
5621
  symbols (<code>:unity</code> ↳ <code>:defines</code>) in your Ceedling project file (see example
5081
5622
  below). Unity test case durations as reported by Ceedling default to 0 if the
5082
5623
  compilation option is not set.</p>
5083
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="nt">:unity</span><span class="p">:</span>
5084
- <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="nt">:defines</span><span class="p">:</span>
5085
- <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">UNITY_INCLUDE_EXEC_TIME</span>
5624
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="nt">:unity</span><span class="p">:</span>
5625
+ <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span><span class="nt">:defines</span><span class="p">:</span>
5626
+ <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">UNITY_INCLUDE_EXEC_TIME</span>
5086
5627
  </code></pre></div>
5087
5628
  <p><em>NOTE:</em> Most test cases are quite short, and most computers are quite fast. As
5088
5629
  such, Unity test case execution time is often reported as 0 milliseconds as
@@ -5090,46 +5631,30 @@ compilation option is not set.</p>
5090
5631
  range. Unity would require special rigging that is inconsistently available
5091
5632
  across platforms to measure test case durations at a finer resolution.</p>
5092
5633
  <h2 id="dependency-tracking">Dependency tracking</h2>
5093
- <p>Previous versions of Ceedling used features of Rake to offer
5094
- various kinds of smart rebuilds — that is, only regenerating files,
5095
- recompiling code files, or relinking executables when changes within
5096
- the project had occurred since the last build. Optional Ceedling
5097
- features discovered “deep dependencies” such that, for example, a
5098
- change in a header file several nested layers deep in <code>#include</code>
5099
- statements would cause all the correct test executables to be
5100
- updated and run.</p>
5101
- <p>These features have been temporarily disabled and/or removed for
5102
- test suites and remain in limited form for release build while
5103
- Ceedling undergoes a major overhaul.</p>
5104
- <p>Please see the <a href="https://github.com/ThrowTheSwitch/Ceedling/blob/master/docs/ReleaseNotes.md">Release Notes</a>.</p>
5105
- <h3 id="not-so-smart-rebuilds">(Not so) smart rebuilds</h3>
5106
- <ul>
5107
- <li>
5108
- <p>New features that are a part of the Ceedling overhaul can
5109
- significantly speed up test suite execution and release builds
5110
- despite the present behavior of brute force running all build
5111
- steps. See the discussion of enabling multi-threaded builds in
5112
- later sections.</p>
5113
- </li>
5114
- <li>
5115
- <p>When smart rebuilds return, they will further speed up builds as
5116
- will other planned optimizations.</p>
5117
- </li>
5118
- </ul>
5634
+ <p>Ceedling only regenerates, compiles, links, or runs an element of the build
5635
+ pipeline if a change in the dependency tree requires it. This includes “deep
5636
+ dependencies” wherein a change in a header file several nested layers deep in
5637
+ <code>#include</code> statements correctly triggers a rebuild of every test executable
5638
+ that depends on it, directly or indirectly.</p>
5639
+ <p>This is called a delta build. Delta builds are automatic, need no
5640
+ configuration, and complement Ceedling’s parallel build steps for further
5641
+ build time speedups. See <a href="../getting-started/builds.html">Delta Builds</a> for the
5642
+ full picture, including how test result caching works and the
5643
+ <code>--force-test-rerun</code> flag.</p>
5119
5644
  <h2 id="build-output">Build output</h2>
5120
5645
  <p>Ceedling requires a top-level build directory for all the stuff
5121
5646
  that it, the accompanying test tools, and your toolchain generate.
5122
- That build directory's location is configured in the top-level
5647
+ That build directory’s location is configured in the top-level
5123
5648
  <code>:project</code> section of your configuration file (discussed in the
5124
5649
  <a href="../configuration/index.html">configuration reference</a>). There
5125
5650
  can be a ton of generated files. By and large, you can live a full
5126
5651
  and meaningful life knowing absolutely nothing at all about
5127
5652
  the files and directories generated below the root build directory.</p>
5128
- <p>As noted already, it's good practice to add your top-level build
5653
+ <p>As noted already, it’s good practice to add your top-level build
5129
5654
  directory to source control but nothing generated beneath it.
5130
5655
  you'll spare yourself headache if you let Ceedling delete and
5131
5656
  regenerate files and directories in a non-versioned corner
5132
- of your project's filesystem beneath the top-level build directory.</p>
5657
+ of your project’s filesystem beneath the top-level build directory.</p>
5133
5658
  <p>The <code>artifacts/</code> directory is the one and only directory you may
5134
5659
  want to know about beneath the top-level build directory. The
5135
5660
  subdirectories beneath <code>artifacts</code> will hold your binary release
@@ -5167,18 +5692,18 @@ no problem-o. You may be of the mind that running a test suite to
5167
5692
  completion should yield a successful exit code (even if tests failed).
5168
5693
  Add the following to your project file to force Ceedling to finish a
5169
5694
  build with an exit code of 0 even upon test case failures.</p>
5170
- <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="c1"># Ceedling terminates with happy `exit(0)` even if test cases fail</span>
5171
- <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="nt">:test_build</span><span class="p">:</span>
5172
- <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="w"> </span><span class="nt">:graceful_fail</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
5695
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="c1"># Ceedling terminates with happy `exit(0)` even if test cases fail</span>
5696
+ <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="nt">:test_build</span><span class="p">:</span>
5697
+ <a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span><span class="nt">:graceful_fail</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
5173
5698
  </code></pre></div>
5174
5699
  <p>If you use the option for graceful failures in CI, you'll want to
5175
- rig up some kind of logging monitor that scans Ceedling's test
5700
+ rig up some kind of logging monitor that scans Ceedling’s test
5176
5701
  summary report sent to <code>$stdout</code> and/or a log file. Otherwise, you
5177
5702
  could have a successful build but failing tests.</p>
5178
5703
  <h3 id="test-executable-exit-codes">Test executable exit codes</h3>
5179
5704
  <p>Ceedling works by collecting multiple Unity test executables together
5180
5705
  into a test suite (more here: <a href="test-suite-anatomy.html">Anatomy of a Test Suite</a>).</p>
5181
- <p>A Unity test executable's exit code is the number of failed tests. An
5706
+ <p>A Unity test executable’s exit code is the number of failed tests. An
5182
5707
  exit code of <code>0</code> means all tests passed while anything larger than zero
5183
5708
  is the number of test failures.</p>
5184
5709
  <p>Because of platform limitations on how big an exit code number can be