ceedling 1.1.10 → 1.2.1

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