ceedling 1.1.10 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1131) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -0
  3. data/.simplecov +73 -0
  4. data/GIT_COMMIT_SHA +1 -1
  5. data/Gemfile +84 -8
  6. data/Gemfile.lock +38 -8
  7. data/README.md +51 -29
  8. data/Rakefile +768 -16
  9. data/assets/{project.yml → features/project.yml} +4 -1
  10. data/assets/fixtures/bullseye_branch_coverage/src/branchy.c +24 -0
  11. data/assets/fixtures/bullseye_branch_coverage/src/branchy.h +14 -0
  12. data/assets/fixtures/bullseye_branch_coverage/test/test_branchy.c +18 -0
  13. data/assets/fixtures/cppcheck_findings/findings.c +23 -0
  14. data/assets/fixtures/cppcheck_findings/findings.h +13 -0
  15. data/assets/fixtures/header_include_path_validation/alt_drivers/foo.h +6 -0
  16. data/assets/fixtures/header_include_path_validation/bar.h +6 -0
  17. data/assets/fixtures/header_include_path_validation/drivers/foo.h +6 -0
  18. data/assets/fixtures/header_include_path_validation/dup.h +6 -0
  19. data/assets/fixtures/header_include_path_validation/other_inc/dup.h +6 -0
  20. data/assets/fixtures/header_include_path_validation/test_ambiguous_mock.c +15 -0
  21. data/assets/fixtures/header_include_path_validation/test_bare_mock.c +11 -0
  22. data/assets/fixtures/header_include_path_validation/test_bogus_mock_path.c +11 -0
  23. data/assets/fixtures/header_include_path_validation/test_bogus_vanilla_path.c +10 -0
  24. data/assets/fixtures/header_include_path_validation/test_include_outranks_test_include_path.c +16 -0
  25. data/assets/fixtures/header_include_path_validation/test_pathed_mock.c +11 -0
  26. data/assets/fixtures/header_include_path_validation/test_pathed_mock_ambiguous.c +14 -0
  27. data/assets/fixtures/header_include_path_validation/test_test_include_path_outranks_include.c +17 -0
  28. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.c +6 -0
  29. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.h +6 -0
  30. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.c +6 -0
  31. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.h +6 -0
  32. data/assets/fixtures/implicit_source_header_correspondence/gamma/dup_gamma.c +6 -0
  33. data/assets/fixtures/implicit_source_header_correspondence/test_dup_alpha.c +10 -0
  34. data/assets/fixtures/implicit_source_header_correspondence/test_dup_bare.c +10 -0
  35. data/assets/fixtures/implicit_source_header_correspondence/test_dup_beta.c +10 -0
  36. data/assets/fixtures/implicit_source_header_correspondence/test_dup_override.c +19 -0
  37. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive.c +19 -0
  38. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive_noop.c +16 -0
  39. data/assets/fixtures/parent_directory_references/alpha/extra.c +4 -0
  40. data/assets/fixtures/parent_directory_references/common/helper.c +6 -0
  41. data/assets/fixtures/parent_directory_references/common/helper.h +6 -0
  42. data/assets/fixtures/parent_directory_references/unit/test_dotdot_include.c +10 -0
  43. data/assets/fixtures/parent_directory_references/unit/test_dotdot_source.c +16 -0
  44. data/assets/fixtures/plain_inline_module.h +9 -0
  45. data/assets/fixtures/same_named_modules/include/drivers/spi/config.h +6 -0
  46. data/assets/fixtures/same_named_modules/include/drivers/uart/config.h +6 -0
  47. data/assets/fixtures/same_named_modules/src/drivers/spi/config.c +8 -0
  48. data/assets/fixtures/same_named_modules/src/drivers/uart/config.c +10 -0
  49. data/assets/fixtures/same_named_modules/test/test_both_configs.c +26 -0
  50. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked.c +20 -0
  51. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked_traditional.c +19 -0
  52. data/assets/fixtures/same_named_modules/test/test_both_modules.c +19 -0
  53. data/assets/fixtures/same_named_modules/test/test_uart_config_bare.c +19 -0
  54. data/assets/fixtures/same_named_modules/test/test_uart_config_partial_only.c +20 -0
  55. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.c +6 -0
  56. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.h +6 -0
  57. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.c +6 -0
  58. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.h +6 -0
  59. data/assets/fixtures/sources_with_duplicate_basenames/main.c +11 -0
  60. data/assets/fixtures/sources_with_duplicate_basenames/test_baz_bar.c +10 -0
  61. data/assets/fixtures/sources_with_duplicate_basenames/test_both_bars.c +12 -0
  62. data/assets/fixtures/sources_with_duplicate_basenames/test_foo_bar.c +10 -0
  63. data/assets/{test_example_file_boom.c → fixtures/test_nosanitize_boom.c} +9 -0
  64. data/assets/{test_example_file_crash_assert.c → fixtures/test_nosanitize_crash_assert.c} +8 -0
  65. data/assets/{test_example_file_crash_sigsegv.c → fixtures/test_nosanitize_crash_sigsegv.c} +8 -0
  66. data/assets/{test_example_file_crash_sigsegv_with_param.c → fixtures/test_nosanitize_crash_sigsegv_with_param.c} +8 -0
  67. data/assets/fixtures/test_nosanitize_heap_buffer_overflow.c +31 -0
  68. data/assets/fixtures/test_nosanitize_leak.c +34 -0
  69. data/assets/fixtures/test_nosanitize_two_findings.c +36 -0
  70. data/assets/{test_example_file_ub_shift_overflow.c → fixtures/test_nosanitize_ub_shift_overflow.c} +9 -0
  71. data/assets/fixtures/test_plain_inline_module.c +15 -0
  72. data/assets/fixtures/test_source_file_duplicate_basenames/alpha/calc.c +4 -0
  73. data/assets/fixtures/test_source_file_duplicate_basenames/beta/calc.c +4 -0
  74. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_alpha.c +15 -0
  75. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_ambiguous.c +15 -0
  76. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_beta.c +15 -0
  77. data/assets/fixtures/tests_with_conditional_includes/src/feature_extra2.h +13 -0
  78. data/assets/fixtures/tests_with_conditional_includes/src/macro_target_extra.h +13 -0
  79. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.c +19 -3
  80. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.h +1 -0
  81. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.c +17 -1
  82. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget.c +12 -4
  83. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget_feature.c +8 -5
  84. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.c +7 -0
  85. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.h +6 -0
  86. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.c +16 -0
  87. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.h +6 -0
  88. data/assets/fixtures/tests_with_conditional_mocks/src/FeatureConfig.h +6 -0
  89. data/assets/fixtures/tests_with_conditional_mocks/src/Gpt.h +6 -0
  90. data/assets/fixtures/tests_with_conditional_mocks/src/MyModuleConfig.h +17 -0
  91. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart1.h +6 -0
  92. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart2.h +6 -0
  93. data/assets/fixtures/tests_with_conditional_mocks/src/drivers/widget.h +6 -0
  94. data/assets/fixtures/tests_with_conditional_mocks/src/reader.c +7 -0
  95. data/assets/fixtures/tests_with_conditional_mocks/src/reader.h +6 -0
  96. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01.c +21 -0
  97. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01_legacy.c +16 -0
  98. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_02.c +31 -0
  99. data/assets/fixtures/tests_with_conditional_mocks/test/test_FeatureConfig.c +15 -0
  100. data/assets/fixtures/tests_with_conditional_mocks/test/test_reader.c +13 -0
  101. data/assets/fixtures/tests_with_duplicate_test_names/integration/test_foo.c +21 -0
  102. data/assets/fixtures/tests_with_duplicate_test_names/unit/test_foo.c +21 -0
  103. data/assets/fixtures/tests_with_fallback_conditionals/src/conditional_module.c +28 -0
  104. data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/test/test_conditionals.c +8 -1
  105. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_lower.s +2 -0
  106. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_upper.S +13 -0
  107. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.c +13 -0
  108. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.h +13 -0
  109. data/assets/fixtures/tests_with_multiple_assembly_extensions/test/test_counter_module.c +27 -0
  110. data/assets/fixtures/tests_with_subdir_includes/src/module/app/config.h +13 -0
  111. data/assets/fixtures/tests_with_subdir_includes/src/module/drivers/config.h +13 -0
  112. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.c +30 -0
  113. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.h +13 -0
  114. data/assets/fixtures/tests_with_subdir_includes/src/shared/config.h +13 -0
  115. data/assets/fixtures/tests_with_subdir_includes/test/test_sensor.c +32 -0
  116. data/bin/actionator.rb +234 -0
  117. data/bin/app_cfg.rb +7 -0
  118. data/bin/cli.rb +78 -47
  119. data/bin/cli_handler.rb +89 -57
  120. data/bin/cli_helper.rb +90 -49
  121. data/bin/cli_options_transform.rb +22 -0
  122. data/bin/{configinator.rb → composinator.rb} +39 -32
  123. data/bin/mixin_resolvinator.rb +124 -0
  124. data/bin/mixin_standardizer.rb +31 -61
  125. data/bin/mixinator.rb +27 -29
  126. data/bin/mixins.rb +0 -5
  127. data/bin/objects.yml +20 -7
  128. data/bin/path_validator.rb +6 -5
  129. data/bin/projectinator.rb +51 -142
  130. data/bin/rake_patches.rb +36 -2
  131. data/bin/recursive_merger.rb +7 -1
  132. data/bin/versionator.rb +2 -3
  133. data/ceedling.gemspec +83 -12
  134. data/docs/BreakingChanges.md +46 -2
  135. data/docs/CONTRIBUTING.md +45 -29
  136. data/docs/CeedlingPullRequestChecklist.md +10 -9
  137. data/docs/Changelog.md +327 -37
  138. data/docs/KnownIssues.md +30 -4
  139. data/docs/ReleaseNotes.md +288 -12
  140. data/docs/SECURITY.md +46 -2
  141. data/docs/ThrowTheSwitchCodingStandard.md +21 -3
  142. data/docs/overrides/main.html +32 -0
  143. data/examples/temp_sensor/mixin/add_bullseye.yml +19 -0
  144. data/examples/wondrous_forest/README.md +3 -0
  145. data/examples/wondrous_forest/src/sensors/light/Calibration.c +21 -0
  146. data/examples/wondrous_forest/src/sensors/light/Calibration.h +14 -0
  147. data/examples/wondrous_forest/src/sensors/soil/Calibration.c +23 -0
  148. data/examples/wondrous_forest/src/sensors/soil/Calibration.h +14 -0
  149. data/examples/wondrous_forest/test/TestCalibration.c +39 -0
  150. data/lib/ceedling/batchinator.rb +81 -22
  151. data/lib/ceedling/c_extractor/README.md +61 -0
  152. data/lib/ceedling/c_extractor/c_extractor.rb +33 -2
  153. data/lib/ceedling/c_extractor/c_extractor_code_text.rb +18 -10
  154. data/lib/ceedling/c_extractor/c_extractor_constants.rb +10 -10
  155. data/lib/ceedling/c_extractor/c_extractor_declarations.rb +14 -14
  156. data/lib/ceedling/c_extractor/c_extractor_functions.rb +10 -13
  157. data/lib/ceedling/c_extractor/c_extractor_preprocessing.rb +77 -0
  158. data/lib/ceedling/c_extractor/c_extractor_types.rb +8 -5
  159. data/lib/ceedling/ceedling.h +33 -0
  160. data/lib/ceedling/config/config_matchinator.rb +36 -13
  161. data/lib/ceedling/config/configurator.rb +366 -530
  162. data/lib/ceedling/config/configurator_builder.rb +253 -365
  163. data/lib/ceedling/config/configurator_plugins.rb +68 -102
  164. data/lib/ceedling/config/configurator_setup.rb +343 -610
  165. data/lib/ceedling/config/configurator_validator.rb +114 -142
  166. data/lib/ceedling/config/line_marker_suppressors.rb +67 -0
  167. data/lib/ceedling/constants.rb +60 -6
  168. data/lib/ceedling/defaults.rb +28 -14
  169. data/lib/ceedling/defineinator.rb +9 -4
  170. data/lib/ceedling/dependencies/README.md +69 -0
  171. data/lib/ceedling/dependencies/dependency_cache_store.rb +160 -0
  172. data/lib/ceedling/dependencies/dependency_debug_tree.rb +129 -0
  173. data/lib/ceedling/dependencies/dependency_differ.rb +127 -0
  174. data/lib/ceedling/dependencies/dependency_hasher.rb +94 -0
  175. data/lib/ceedling/dependencies/dependency_path_normalizer.rb +80 -0
  176. data/lib/ceedling/dependencies/dependency_tracker.rb +405 -0
  177. data/lib/ceedling/dependencies/dependinator.rb +65 -0
  178. data/lib/ceedling/dependencies/gcc_dependency_parser.rb +86 -0
  179. data/lib/ceedling/encodinator.rb +23 -11
  180. data/lib/ceedling/file_finder.rb +373 -89
  181. data/lib/ceedling/file_finder_helper.rb +44 -33
  182. data/lib/ceedling/file_path_collection_utils.rb +17 -4
  183. data/lib/ceedling/file_path_utils.rb +310 -52
  184. data/lib/ceedling/file_wrapper.rb +245 -8
  185. data/lib/ceedling/filename_extension.rb +91 -0
  186. data/lib/ceedling/flaginator.rb +6 -2
  187. data/lib/ceedling/generators/generator.rb +192 -70
  188. data/lib/ceedling/generators/generator_helper.rb +116 -69
  189. data/lib/ceedling/generators/generator_mocks.rb +13 -8
  190. data/lib/ceedling/generators/generator_partials.rb +47 -15
  191. data/lib/ceedling/generators/generator_test_results.rb +29 -17
  192. data/lib/ceedling/generators/generator_test_results_backtrace.rb +199 -107
  193. data/lib/ceedling/generators/generator_test_results_sanity_checker.rb +1 -1
  194. data/lib/ceedling/includes/include_factory.rb +21 -6
  195. data/lib/ceedling/includes/include_pathinator.rb +40 -4
  196. data/lib/ceedling/includes/includes.rb +215 -61
  197. data/lib/ceedling/loginator.rb +13 -4
  198. data/lib/ceedling/objects.yml +216 -33
  199. data/lib/ceedling/parsing_parcels.rb +39 -13
  200. data/lib/ceedling/partials/README.md +53 -0
  201. data/lib/ceedling/partials/partializer.rb +118 -26
  202. data/lib/ceedling/partials/partializer_config.rb +141 -8
  203. data/lib/ceedling/partials/partializer_helper.rb +88 -2
  204. data/lib/ceedling/partials/partializer_utils.rb +1 -1
  205. data/lib/ceedling/partials/partials.rb +4 -4
  206. data/lib/ceedling/path_matcher.rb +163 -0
  207. data/lib/ceedling/path_mirror.rb +73 -0
  208. data/lib/ceedling/plugins/plugin.rb +1 -1
  209. data/lib/ceedling/plugins/plugin_manager.rb +31 -15
  210. data/lib/ceedling/plugins/plugin_manager_helper.rb +5 -1
  211. data/lib/ceedling/plugins/plugin_reportinator.rb +36 -7
  212. data/lib/ceedling/plugins/plugin_reportinator_helper.rb +3 -3
  213. data/lib/ceedling/plugins/report_log_writer_plugin.rb +66 -0
  214. data/lib/ceedling/plugins/report_tests_stdout_plugin.rb +18 -5
  215. data/lib/ceedling/preprocess/README.md +135 -120
  216. data/lib/ceedling/preprocess/c_comment_scanner.rb +9 -7
  217. data/lib/ceedling/preprocess/c_preprocessor_conditionals.rb +27 -10
  218. data/lib/ceedling/preprocess/preprocessinator.rb +253 -217
  219. data/lib/ceedling/preprocess/preprocessinator_bare_includes_extractor.rb +7 -10
  220. data/lib/ceedling/preprocess/preprocessinator_code_finder.rb +8 -6
  221. data/lib/ceedling/preprocess/preprocessinator_comment_stripper.rb +5 -3
  222. data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +86 -82
  223. data/lib/ceedling/preprocess/preprocessinator_includes_handler.rb +182 -163
  224. data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +174 -8
  225. data/lib/ceedling/preprocess/preprocessinator_reconstructor.rb +41 -20
  226. data/lib/ceedling/quote_include_isolator.rb +129 -0
  227. data/lib/ceedling/rake_app/rake_task_registry.rb +9 -9
  228. data/lib/ceedling/rake_app/rake_wrapper.rb +0 -13
  229. data/lib/ceedling/rake_app/rakefile_component_resolver.rb +24 -12
  230. data/lib/ceedling/rakefile.rb +2 -1
  231. data/lib/ceedling/{tasks_base.rake → rakefiles/base/tasks_base.rake} +1 -1
  232. data/lib/ceedling/{tasks_filesystem.rake → rakefiles/base/tasks_filesystem.rake} +3 -0
  233. data/lib/ceedling/rakefiles/release/rules_release.rake +52 -0
  234. data/lib/ceedling/{erb_wrapper.rb → rakefiles/release/tasks_release.rake} +5 -8
  235. data/lib/ceedling/rakefiles/tests/rules_tests.rake +43 -0
  236. data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +80 -0
  237. data/lib/ceedling/{tasks_tests.rake → rakefiles/tests/tasks_tests.rake} +11 -20
  238. data/lib/ceedling/rakefiles/tests/tasks_tests_generate.rake +55 -0
  239. data/lib/ceedling/release_invoker/README.md +35 -0
  240. data/lib/ceedling/release_invoker/release_build_executor.rb +263 -0
  241. data/lib/ceedling/release_invoker/release_build_planner.rb +80 -0
  242. data/lib/ceedling/release_invoker/release_invoker.rb +78 -0
  243. data/lib/ceedling/release_invoker/release_invoker_types.rb +40 -0
  244. data/lib/ceedling/reportinator.rb +18 -2
  245. data/lib/ceedling/ruby_expandinator.rb +40 -1
  246. data/lib/ceedling/setupinator.rb +9 -3
  247. data/lib/ceedling/system_wrapper.rb +17 -0
  248. data/lib/ceedling/templateinator.rb +146 -0
  249. data/lib/ceedling/test_context_extractor.rb +59 -28
  250. data/lib/ceedling/test_invoker/HEADER_COLLISIONS.md +41 -0
  251. data/lib/ceedling/test_invoker/PIPELINE.md +142 -0
  252. data/lib/ceedling/test_invoker/README.md +6 -0
  253. data/lib/ceedling/test_invoker/mock_locator.rb +49 -0
  254. data/lib/ceedling/test_invoker/partials_manager.rb +426 -0
  255. data/lib/ceedling/test_invoker/standin_headerinator.rb +136 -0
  256. data/lib/ceedling/test_invoker/test_bare_includes_extractinator.rb +117 -0
  257. data/lib/ceedling/test_invoker/test_build_executor.rb +783 -429
  258. data/lib/ceedling/test_invoker/test_build_planner.rb +175 -70
  259. data/lib/ceedling/test_invoker/test_build_setup.rb +132 -241
  260. data/lib/ceedling/test_invoker/test_build_validations.rb +102 -0
  261. data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +148 -0
  262. data/lib/ceedling/test_invoker/test_includes_extractinator.rb +34 -0
  263. data/lib/ceedling/test_invoker/test_includes_preprocessinator.rb +118 -0
  264. data/lib/ceedling/test_invoker/test_includes_reconcilinator.rb +149 -0
  265. data/lib/ceedling/test_invoker/test_invoker.rb +16 -183
  266. data/lib/ceedling/test_invoker/test_invoker_types.rb +85 -16
  267. data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +121 -0
  268. data/lib/ceedling/test_invoker/test_pipeline_manager.rb +303 -0
  269. data/lib/ceedling/test_invoker/test_runner_generatinator.rb +105 -0
  270. data/lib/ceedling/test_invoker/test_search_paths.rb +73 -0
  271. data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +78 -0
  272. data/lib/ceedling/tool_executor.rb +42 -13
  273. data/lib/ceedling/tool_executor_helper.rb +1 -1
  274. data/lib/ceedling/tool_validator.rb +124 -123
  275. data/lib/ceedling/yaml_wrapper.rb +5 -3
  276. data/lib/version.rb +19 -2
  277. data/mkdocs.prerelease.yml +42 -0
  278. data/mkdocs.yml +10 -2
  279. data/plugins/bullseye/bullseye.rake +70 -107
  280. data/plugins/bullseye/config/defaults.yml +12 -54
  281. data/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  282. data/plugins/bullseye/lib/bullseye.rb +511 -120
  283. data/plugins/bullseye/lib/bullseye_constants.rb +100 -0
  284. data/plugins/command_hooks/lib/command_hooks.rb +117 -199
  285. data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +72 -27
  286. data/plugins/cppcheck/config/defaults.yml +6 -1
  287. data/plugins/cppcheck/config/defaults_cppcheck.rb +5 -1
  288. data/plugins/cppcheck/cppcheck.rake +7 -1
  289. data/plugins/cppcheck/lib/cppcheck.rb +175 -26
  290. data/plugins/cppcheck/lib/cppcheck_constants.rb +12 -0
  291. data/plugins/cppcheck/lib/cppcheck_reports.rb +5 -1
  292. data/plugins/dependencies/Rakefile +14 -2
  293. data/plugins/dependencies/config/defaults.yml +9 -6
  294. data/plugins/dependencies/dependencies.rake +46 -76
  295. data/plugins/dependencies/example/boss/project.yml +1 -1
  296. data/plugins/dependencies/example/supervisor/project.yml +1 -1
  297. data/plugins/dependencies/example/version.tar.gzip +0 -0
  298. data/plugins/dependencies/lib/dependencies.rb +232 -427
  299. data/plugins/dependencies/lib/dependency_commands.rb +72 -0
  300. data/plugins/dependencies/lib/dependency_environment.rb +57 -0
  301. data/plugins/dependencies/lib/dependency_spec.rb +145 -0
  302. data/plugins/fff/.rspec +1 -0
  303. data/plugins/fff/Rakefile +14 -2
  304. data/plugins/fff/examples/fff_example/project.yml +1 -1
  305. data/plugins/fff/lib/fff.rb +30 -9
  306. data/plugins/fff/lib/fff_mock_generator.rb +142 -128
  307. data/plugins/fff/spec/fff_mock_header_generator_spec.rb +15 -0
  308. data/plugins/fff/spec/fff_mock_source_generator_spec.rb +14 -0
  309. data/plugins/fff/spec/spec_helper.rb +45 -0
  310. data/plugins/fff/src/fff_unity_helper.h +5 -0
  311. data/plugins/fff/vendor/fff/fakegen.rb +5 -4
  312. data/plugins/fff/vendor/fff/fff.h +4 -4
  313. data/plugins/gcov/config/defaults.yml +5 -0
  314. data/plugins/gcov/gcov.rake +12 -8
  315. data/plugins/gcov/lib/console_reportinator.rb +140 -20
  316. data/plugins/gcov/lib/gcov.rb +155 -60
  317. data/plugins/gcov/lib/gcov_constants.rb +4 -7
  318. data/plugins/gcov/lib/gcov_reportinator.rb +90 -0
  319. data/plugins/gcov/lib/gcov_types.rb +62 -1
  320. data/plugins/gcov/lib/gcovr_reportinator.rb +255 -213
  321. data/plugins/gcov/lib/reportgenerator_reportinator.rb +122 -44
  322. data/plugins/module_generator/Rakefile +4 -4
  323. data/plugins/module_generator/config/module_generator.yml +0 -1
  324. data/plugins/module_generator/example/project.yml +1 -1
  325. data/plugins/module_generator/lib/module_generator.rb +117 -87
  326. data/plugins/module_generator/lib/module_generator_options.rb +150 -0
  327. data/plugins/module_generator/lib/module_generator_project.rb +45 -0
  328. data/plugins/module_generator/lib/module_generator_request.rb +83 -0
  329. data/plugins/module_generator/lib/module_generator_test_file.rb +68 -0
  330. data/plugins/module_generator/lib/module_generator_unity.rb +24 -0
  331. data/plugins/module_generator/module_generator.rake +24 -46
  332. data/plugins/report_build_warnings_log/config/defaults.yml +4 -1
  333. data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +47 -55
  334. data/plugins/report_build_warnings_log/lib/warning_collector.rb +140 -0
  335. data/plugins/report_build_warnings_log/lib/warning_reports.rb +135 -0
  336. data/plugins/report_tests_gtestlike_stdout/assets/test_results.template +3 -0
  337. data/{spec/units/configurator_builder_spec.rb → plugins/report_tests_gtestlike_stdout/config/defaults.yml} +6 -10
  338. data/plugins/report_tests_gtestlike_stdout/lib/gtestlike_report.rb +168 -0
  339. data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +25 -1
  340. data/plugins/report_tests_ide_stdout/assets/test_results.template +50 -0
  341. data/plugins/report_tests_ide_stdout/config/defaults.yml +13 -0
  342. data/plugins/report_tests_ide_stdout/lib/ide_report_lines.rb +103 -0
  343. data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +12 -4
  344. data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +33 -51
  345. data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +286 -295
  346. data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +22 -35
  347. data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +91 -133
  348. data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +72 -86
  349. data/plugins/report_tests_log_factory/lib/tests_reporter.rb +31 -12
  350. data/plugins/report_tests_pretty_stdout/assets/{template.erb → test_results.template} +8 -8
  351. data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +18 -48
  352. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +13 -2
  353. data/plugins/sanitize/config/defaults.yml +44 -0
  354. data/plugins/sanitize/config/defaults_sanitize.rb +20 -0
  355. data/plugins/sanitize/lib/sanitize.rb +174 -0
  356. data/plugins/sanitize/lib/sanitize_config.rb +110 -0
  357. data/plugins/sanitize/lib/sanitize_constants.rb +13 -0
  358. data/plugins/sanitize/lib/sanitize_findings.rb +85 -0
  359. data/plugins/sanitize/lib/sanitize_records.rb +115 -0
  360. data/plugins/sanitize/lib/sanitize_reports.rb +135 -0
  361. data/plugins/sanitize/sanitize.rake +108 -0
  362. data/plugins/valgrind/config/defaults.yml +7 -1
  363. data/plugins/valgrind/config/defaults_valgrind.rb +6 -1
  364. data/plugins/valgrind/lib/valgrind.rb +202 -39
  365. data/plugins/valgrind/lib/valgrind_constants.rb +4 -0
  366. data/plugins/valgrind/lib/valgrind_report.rb +52 -0
  367. data/plugins/valgrind/valgrind.rake +33 -11
  368. data/site-local/404.html +248 -14
  369. data/site-local/configuration/environment-vars.html +248 -14
  370. data/site-local/configuration/global-collections.html +248 -19
  371. data/site-local/configuration/index.html +249 -15
  372. data/site-local/configuration/loading.html +260 -22
  373. data/site-local/configuration/mixins.html +252 -17
  374. data/site-local/configuration/parallel-builds.html +248 -14
  375. data/site-local/configuration/project-file.html +275 -30
  376. data/site-local/configuration/reference/cexception.html +255 -20
  377. data/site-local/configuration/reference/cmock.html +281 -14
  378. data/site-local/configuration/reference/defines.html +262 -19
  379. data/site-local/configuration/reference/environment.html +251 -17
  380. data/site-local/configuration/reference/extension.html +361 -16
  381. data/site-local/configuration/reference/files.html +262 -14
  382. data/site-local/configuration/reference/flags.html +270 -19
  383. data/site-local/configuration/reference/index.html +248 -14
  384. data/site-local/configuration/reference/libraries.html +248 -14
  385. data/site-local/configuration/reference/mixins.html +248 -14
  386. data/site-local/configuration/reference/partials.html +249 -19
  387. data/site-local/configuration/reference/paths.html +275 -15
  388. data/site-local/configuration/reference/plugins.html +248 -14
  389. data/site-local/configuration/reference/project.html +291 -14
  390. data/site-local/configuration/reference/release-build.html +256 -14
  391. data/site-local/configuration/reference/test-build.html +290 -24
  392. data/site-local/configuration/reference/test-runner.html +288 -17
  393. data/site-local/configuration/reference/tools.html +254 -14
  394. data/site-local/configuration/reference/unity.html +280 -15
  395. data/site-local/configuration/which-ceedling.html +248 -14
  396. data/site-local/development/index.html +254 -14
  397. data/site-local/development/plugins/configuration.html +269 -17
  398. data/site-local/development/plugins/index.html +267 -15
  399. data/site-local/development/plugins/plugin-subclass.html +906 -154
  400. data/site-local/development/plugins/rake-tasks.html +276 -14
  401. data/site-local/development/releases.html +4708 -0
  402. data/site-local/development/workflow.html +1030 -51
  403. data/site-local/getting-started/builds.html +4607 -0
  404. data/site-local/getting-started/command-line.html +418 -34
  405. data/site-local/getting-started/example-projects/cipher-quest.html +248 -14
  406. data/site-local/getting-started/example-projects/index.html +249 -15
  407. data/site-local/getting-started/example-projects/temp-sensor.html +248 -14
  408. data/site-local/getting-started/example-projects/wondrous-forest.html +248 -14
  409. data/site-local/getting-started/index.html +255 -14
  410. data/site-local/getting-started/installation.html +258 -22
  411. data/site-local/getting-started/quick-start.html +251 -15
  412. data/site-local/help.html +255 -14
  413. data/site-local/index.html +292 -22
  414. data/site-local/overview/build-system.html +249 -15
  415. data/site-local/overview/index.html +248 -14
  416. data/site-local/overview/test-environments.html +257 -14
  417. data/site-local/overview/tools-and-frameworks.html +248 -14
  418. data/site-local/plugins/beep.html +251 -14
  419. data/site-local/plugins/bullseye/index.html +5079 -0
  420. data/site-local/plugins/bullseye/licensing.html +4840 -0
  421. data/site-local/plugins/command-hooks.html +265 -27
  422. data/site-local/plugins/compile-commands-json-db.html +256 -17
  423. data/site-local/plugins/cppcheck.html +1081 -262
  424. data/site-local/plugins/dependencies.html +934 -242
  425. data/site-local/plugins/fff.html +296 -15
  426. data/site-local/plugins/gcov/examples.html +251 -14
  427. data/site-local/plugins/gcov/gcovr.html +567 -65
  428. data/site-local/plugins/gcov/index.html +251 -14
  429. data/site-local/plugins/gcov/overview.html +259 -18
  430. data/site-local/plugins/gcov/reportgenerator.html +386 -38
  431. data/site-local/plugins/gcov/reporting.html +348 -100
  432. data/site-local/plugins/gcov/setup.html +253 -15
  433. data/site-local/plugins/gcov/tool-versions.html +301 -19
  434. data/site-local/plugins/gcov/troubleshooting.html +273 -36
  435. data/site-local/plugins/index.html +294 -36
  436. data/site-local/plugins/module-generator.html +779 -195
  437. data/site-local/plugins/report-build-warnings-log.html +578 -33
  438. data/site-local/plugins/report-tests-gtestlike-stdout.html +467 -84
  439. data/site-local/plugins/report-tests-ide-stdout.html +654 -51
  440. data/site-local/plugins/report-tests-log-factory.html +337 -70
  441. data/site-local/plugins/report-tests-pretty-stdout.html +251 -14
  442. data/site-local/plugins/report-tests-raw-output-log.html +251 -14
  443. data/site-local/plugins/report-tests-teamcity-stdout.html +251 -14
  444. data/site-local/plugins/sanitize.html +5332 -0
  445. data/site-local/plugins/valgrind.html +416 -26
  446. data/site-local/{plugins/bullseye.html → project/index.html} +297 -217
  447. data/site-local/project/release-history.html +251 -17
  448. data/site-local/project/sbom.html +4726 -0
  449. data/site-local/project/upgrade.html +250 -16
  450. data/site-local/reference/build-directives.html +257 -14
  451. data/site-local/reference/command-line.html +373 -16
  452. data/site-local/reference/environment-vars.html +248 -14
  453. data/site-local/reference/gcov-plugin.html +492 -18
  454. data/site-local/reference/global-collections.html +249 -15
  455. data/site-local/reference/index.html +248 -14
  456. data/site-local/reference/partials-macros.html +258 -14
  457. data/site-local/reference/project-configuration.html +248 -14
  458. data/site-local/sitemap.xml.gz +0 -0
  459. data/{docs/mkdocs/snapshot/assets → site-local/snapshot/assets/features}/project.yml +4 -1
  460. data/site-local/snapshot/examples/cipher_quest/index.html +248 -14
  461. data/site-local/snapshot/examples/temp_sensor/index.html +248 -14
  462. data/site-local/snapshot/examples/wondrous_forest/index.html +265 -25
  463. data/site-local/snapshot/plugins/bullseye/config/defaults.yml +24 -0
  464. data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  465. data/site-local/snapshot/plugins/gcov/config/defaults.yml +5 -0
  466. data/site-local/testing-guide/build-directives.html +332 -22
  467. data/site-local/testing-guide/conventions.html +678 -153
  468. data/site-local/testing-guide/frameworks.html +248 -14
  469. data/site-local/testing-guide/index.html +248 -21
  470. data/site-local/testing-guide/partials/configuration.html +248 -14
  471. data/site-local/testing-guide/partials/conventions.html +316 -17
  472. data/site-local/testing-guide/partials/directives.html +456 -48
  473. data/site-local/testing-guide/partials/example.html +248 -14
  474. data/site-local/testing-guide/partials/index.html +255 -14
  475. data/site-local/testing-guide/partials/overview.html +248 -14
  476. data/site-local/testing-guide/partials/variables.html +248 -14
  477. data/site-local/testing-guide/test-cases.html +248 -14
  478. data/site-local/testing-guide/test-sample.html +248 -14
  479. data/site-local/testing-guide/test-suite-anatomy.html +248 -14
  480. data/spec/integration/actionator_file_operations_spec.rb +287 -0
  481. data/spec/integration/analysis_tool_output_spec.rb +204 -0
  482. data/spec/{units/c_extractor/c_extractor_integration_spec.rb → integration/c_extractor_composition_spec.rb} +196 -17
  483. data/spec/integration/command_hooks_plugin_spec.rb +152 -0
  484. data/spec/integration/compile_commands_json_db_spec.rb +76 -0
  485. data/spec/integration/configurator_pipeline_spec.rb +180 -0
  486. data/spec/integration/configurator_plugins_spec.rb +122 -0
  487. data/spec/integration/configurator_validation_spec.rb +98 -0
  488. data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +396 -0
  489. data/spec/integration/dependencies/dependency_tracker_core_spec.rb +244 -0
  490. data/spec/integration/dependencies/dependency_tracker_diagnose_spec.rb +224 -0
  491. data/spec/integration/dependencies/dependency_tracker_filename_handling_spec.rb +118 -0
  492. data/spec/integration/dependencies/dependency_tracker_gcc_deps_spec.rb +199 -0
  493. data/spec/integration/dependencies/dependency_tracker_pruning_spec.rb +167 -0
  494. data/spec/integration/dependencies_plugin_spec.rb +473 -0
  495. data/spec/integration/erb_dependency_removed_spec.rb +167 -0
  496. data/spec/integration/includes_extraction_spec.rb +612 -0
  497. data/spec/integration/mixin_loading_spec.rb +414 -0
  498. data/spec/integration/module_generator_spec.rb +436 -0
  499. data/spec/integration/partials_fallback_preprocessing_spec.rb +316 -0
  500. data/spec/integration/partials_header_composition_spec.rb +889 -0
  501. data/spec/integration/partials_module_resolution_spec.rb +372 -0
  502. data/spec/integration/partials_symbol_linkage_spec.rb +371 -0
  503. data/spec/integration/preprocessing_transient_io_retry_spec.rb +135 -0
  504. data/spec/integration/quote_include_isolator_spec.rb +167 -0
  505. data/spec/integration/report_build_warnings_log_spec.rb +170 -0
  506. data/spec/integration/report_tests_log_factory_spec.rb +100 -0
  507. data/spec/integration/sanitizer_exclusions_spec.rb +126 -0
  508. data/spec/integration/system_harness_sanitizers_spec.rb +104 -0
  509. data/spec/integration/test_build_parallel_barrier_spec.rb +89 -0
  510. data/spec/integration/test_executable_manifest_spec.rb +118 -0
  511. data/spec/integration/test_includes_extractinator_spec.rb +293 -0
  512. data/spec/integration/tool_executor_spec.rb +224 -0
  513. data/spec/integration/tool_validator_spec.rb +133 -0
  514. data/spec/integration/vendor_copy_transient_io_retry_spec.rb +130 -0
  515. data/spec/manual/stress_test.rb +1 -1
  516. data/spec/support/config_yaml_helper.rb +17 -0
  517. data/spec/support/fixtures/sanitizer_reports/clang_asan_heap.txt +45 -0
  518. data/spec/support/fixtures/sanitizer_reports/clang_ubsan_shift.txt +5 -0
  519. data/spec/support/fixtures/sanitizer_reports/gcc_heap.txt +47 -0
  520. data/spec/support/fixtures/sanitizer_reports/gcc_leak.txt +10 -0
  521. data/spec/support/fixtures/sanitizer_reports/gcc_segv.txt +6 -0
  522. data/spec/support/fixtures/sanitizer_reports/gcc_ubsan_shift.txt +6 -0
  523. data/spec/support/fixtures/templates/bullseye__all_pass.txt +6 -0
  524. data/spec/support/fixtures/templates/bullseye__coverage_branches_only.txt +6 -0
  525. data/spec/support/fixtures/templates/bullseye__coverage_functions_only.txt +6 -0
  526. data/spec/support/fixtures/templates/bullseye__coverage_none.txt +6 -0
  527. data/spec/support/fixtures/templates/bullseye__empty.txt +6 -0
  528. data/spec/support/fixtures/templates/bullseye__gcov_context.txt +6 -0
  529. data/spec/support/fixtures/templates/bullseye__mixed_all.txt +6 -0
  530. data/spec/support/fixtures/templates/bullseye__one_failure_matching.txt +6 -0
  531. data/spec/support/fixtures/templates/bullseye__one_failure_multiline.txt +6 -0
  532. data/spec/support/fixtures/templates/bullseye__one_failure_no_message.txt +6 -0
  533. data/spec/support/fixtures/templates/bullseye__one_failure_nonmatching.txt +6 -0
  534. data/spec/support/fixtures/templates/bullseye__one_ignore_no_message.txt +6 -0
  535. data/spec/support/fixtures/templates/bullseye__one_ignore_with_message.txt +6 -0
  536. data/spec/support/fixtures/templates/bullseye__stdout_only.txt +6 -0
  537. data/spec/support/fixtures/templates/ide__all_pass.txt +10 -0
  538. data/spec/support/fixtures/templates/ide__coverage_branches_only.txt +10 -0
  539. data/spec/support/fixtures/templates/ide__coverage_functions_only.txt +10 -0
  540. data/spec/support/fixtures/templates/ide__coverage_none.txt +10 -0
  541. data/spec/support/fixtures/templates/ide__empty.txt +8 -0
  542. data/spec/support/fixtures/templates/ide__gcov_context.txt +28 -0
  543. data/spec/support/fixtures/templates/ide__mixed_all.txt +29 -0
  544. data/spec/support/fixtures/templates/ide__one_failure_matching.txt +15 -0
  545. data/spec/support/fixtures/templates/ide__one_failure_multiline.txt +17 -0
  546. data/spec/support/fixtures/templates/ide__one_failure_no_message.txt +15 -0
  547. data/spec/support/fixtures/templates/ide__one_failure_nonmatching.txt +15 -0
  548. data/spec/support/fixtures/templates/ide__one_ignore_no_message.txt +15 -0
  549. data/spec/support/fixtures/templates/ide__one_ignore_with_message.txt +15 -0
  550. data/spec/support/fixtures/templates/ide__stdout_only.txt +16 -0
  551. data/spec/support/fixtures/templates/pretty__all_pass.txt +8 -0
  552. data/spec/support/fixtures/templates/pretty__coverage_branches_only.txt +8 -0
  553. data/spec/support/fixtures/templates/pretty__coverage_functions_only.txt +8 -0
  554. data/spec/support/fixtures/templates/pretty__coverage_none.txt +8 -0
  555. data/spec/support/fixtures/templates/pretty__empty.txt +6 -0
  556. data/spec/support/fixtures/templates/pretty__gcov_context.txt +31 -0
  557. data/spec/support/fixtures/templates/pretty__mixed_all.txt +35 -0
  558. data/spec/support/fixtures/templates/pretty__one_failure_matching.txt +15 -0
  559. data/spec/support/fixtures/templates/pretty__one_failure_multiline.txt +17 -0
  560. data/spec/support/fixtures/templates/pretty__one_failure_no_message.txt +15 -0
  561. data/spec/support/fixtures/templates/pretty__one_failure_nonmatching.txt +15 -0
  562. data/spec/support/fixtures/templates/pretty__one_ignore_no_message.txt +15 -0
  563. data/spec/support/fixtures/templates/pretty__one_ignore_with_message.txt +15 -0
  564. data/spec/support/fixtures/templates/pretty__stdout_only.txt +15 -0
  565. data/spec/support/fixtures/valgrind_reports/sigsegv.log +51 -0
  566. data/spec/support/fixtures/valgrind_reports/sigsegv.xml +182 -0
  567. data/spec/support/include_guard_helper.rb +20 -0
  568. data/spec/support/integration/configurator_integration_helper.rb +159 -0
  569. data/spec/support/integration/dependency_tracker_integration_helper.rb +136 -0
  570. data/spec/support/integration/partials_generation_integration_helper.rb +726 -0
  571. data/spec/support/integration/spec_integration_helper.rb +285 -0
  572. data/spec/support/integration/test_includes_harness.rb +259 -0
  573. data/spec/support/integration/tool_executor_integration_helper.rb +55 -0
  574. data/spec/support/spec_helper.rb +41 -0
  575. data/spec/support/system/sanitizers/asan_ubsan.yml +82 -0
  576. data/spec/support/system/sanitizers/asan_ubsan_leaks.yml +57 -0
  577. data/spec/support/system/simplecov_boot.rb +66 -0
  578. data/spec/support/system/spec_system_helper.rb +376 -16
  579. data/spec/support/system/system_context.rb +181 -59
  580. data/spec/support/template_render_cases.rb +166 -0
  581. data/spec/system/bracket_path_handling_spec.rb +175 -0
  582. data/spec/system/build_output_mirroring_spec.rb +89 -0
  583. data/spec/system/build_recovery_spec.rb +382 -0
  584. data/spec/system/bullseye_deployment_spec.rb +102 -0
  585. data/spec/system/cli_surface_spec.rb +245 -0
  586. data/spec/system/command_hooks_spec.rb +117 -0
  587. data/spec/system/conditional_include_macro_visibility_spec.rb +32 -124
  588. data/spec/system/conditional_mock_includes_spec.rb +181 -0
  589. data/spec/system/cppcheck_deployment_spec.rb +26 -8
  590. data/spec/system/delta_builds_spec.rb +751 -0
  591. data/spec/system/deployment_as_gem_spec.rb +7 -0
  592. data/spec/system/deployment_as_vendor_spec.rb +29 -145
  593. data/spec/system/dumpconfig_spec.rb +137 -0
  594. data/spec/system/encoding_stress_spec.rb +7 -4
  595. data/spec/system/example_cipher_quest_spec.rb +25 -100
  596. data/spec/system/example_temp_sensor_spec.rb +30 -172
  597. data/spec/system/example_wondrous_forest_spec.rb +25 -62
  598. data/spec/system/extension_multiple_values_spec.rb +75 -0
  599. data/spec/system/files_paths_reporting_spec.rb +154 -0
  600. data/spec/system/gcov_deployment_spec.rb +72 -3
  601. data/spec/system/header_include_path_validation_spec.rb +222 -0
  602. data/spec/system/implicit_source_header_correspondence_disambiguation_spec.rb +100 -0
  603. data/spec/system/include_path_reconciliation_spec.rb +64 -0
  604. data/spec/system/mixin_ordering_spec.rb +30 -415
  605. data/spec/system/mocks_partials_configuration_validation_spec.rb +126 -0
  606. data/spec/system/parent_directory_reference_spec.rb +114 -0
  607. data/spec/system/partials_module_disambiguation_spec.rb +143 -0
  608. data/spec/system/pinned_thread_count_spec.rb +102 -0
  609. data/spec/system/plugin_delta_builds_spec.rb +179 -0
  610. data/spec/system/preprocessing_encoding_spec.rb +87 -4
  611. data/spec/system/preprocessing_fallback_conditionals_spec.rb +19 -25
  612. data/spec/system/preprocessing_parameterized_tests_spec.rb +2 -2
  613. data/spec/system/rake_release_task_path_disambiguation_spec.rb +97 -0
  614. data/spec/system/rake_test_task_path_disambiguation_spec.rb +118 -0
  615. data/spec/system/report_and_tooling_plugins_spec.rb +327 -0
  616. data/spec/system/ruby_replacement_spec.rb +1 -1
  617. data/spec/system/same_named_modules_spec.rb +115 -0
  618. data/spec/system/sanitize_deployment_spec.rb +64 -0
  619. data/spec/system/shuffle_tests_spec.rb +139 -0
  620. data/spec/system/sibling_header_collision_spec.rb +620 -0
  621. data/spec/system/subdir_include_preservation_spec.rb +63 -0
  622. data/spec/system/support/bullseye_common_test_cases.rb +369 -0
  623. data/spec/system/support/bullseye_helpers.rb +70 -0
  624. data/spec/system/support/common_test_cases.rb +167 -43
  625. data/spec/system/support/cppcheck_common_test_cases.rb +80 -0
  626. data/spec/system/support/cppcheck_helpers.rb +10 -8
  627. data/spec/system/support/gcov_common_test_cases.rb +173 -37
  628. data/spec/system/support/gcov_helpers.rb +3 -3
  629. data/spec/system/support/gcov_partials_test_cases.rb +48 -2
  630. data/spec/system/support/sanitize_common_test_cases.rb +222 -0
  631. data/spec/system/support/sanitize_helpers.rb +27 -0
  632. data/spec/system/support/valgrind_common_test_cases.rb +116 -16
  633. data/spec/system/support/valgrind_helpers.rb +3 -4
  634. data/spec/system/test_pipeline_stop_points_spec.rb +160 -0
  635. data/spec/system/test_runner_system_include_spec.rb +19 -41
  636. data/spec/system/test_source_file_directive_spec.rb +235 -0
  637. data/spec/system/upgrade_as_vendor_spec.rb +25 -46
  638. data/spec/system/valgrind_deployment_spec.rb +41 -0
  639. data/spec/units/batchinator_spec.rb +314 -0
  640. data/spec/units/bin/actionator_spec.rb +412 -0
  641. data/spec/units/bin/app_cfg_spec.rb +90 -0
  642. data/spec/units/bin/cli_handler_spec.rb +204 -0
  643. data/spec/units/bin/cli_helper_spec.rb +238 -10
  644. data/spec/units/bin/cli_options_transform_spec.rb +49 -0
  645. data/spec/units/bin/composinator_spec.rb +236 -0
  646. data/spec/units/bin/{projectinator_mixin_spec.rb → mixin_resolvinator_spec.rb} +122 -83
  647. data/spec/units/bin/mixin_standardizer_spec.rb +4 -3
  648. data/spec/units/bin/mixinator_spec.rb +58 -22
  649. data/spec/units/bin/path_validator_spec.rb +112 -0
  650. data/spec/units/bin/projectinator_spec.rb +223 -0
  651. data/spec/units/bin/rake_patches_spec.rb +52 -0
  652. data/spec/units/bin/recursive_merger_spec.rb +22 -0
  653. data/spec/units/bin/versionator_spec.rb +104 -0
  654. data/spec/units/c_extractor/c_extractor_code_text_spec.rb +4 -4
  655. data/spec/units/c_extractor/c_extractor_declarations_spec.rb +70 -0
  656. data/spec/units/c_extractor/c_extractor_functions_spec.rb +75 -1
  657. data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +158 -0
  658. data/spec/units/c_extractor/c_extractor_spec.rb +236 -6
  659. data/spec/units/ceedling/templateinator_golden_spec.rb +84 -0
  660. data/spec/units/ceedling/templateinator_spec.rb +188 -0
  661. data/spec/units/config/configurator_builder_spec.rb +444 -0
  662. data/spec/units/config/configurator_plugins_spec.rb +160 -0
  663. data/spec/units/config/configurator_setup_spec.rb +706 -6
  664. data/spec/units/config/configurator_spec.rb +952 -0
  665. data/spec/units/config/configurator_validator_spec.rb +259 -0
  666. data/spec/units/config/line_marker_suppressors_spec.rb +89 -0
  667. data/spec/units/config_matchinator_spec.rb +103 -0
  668. data/spec/units/defineinator_spec.rb +158 -0
  669. data/spec/units/dependencies/dependency_cache_store_spec.rb +364 -0
  670. data/spec/units/dependencies/dependency_debug_tree_spec.rb +189 -0
  671. data/spec/units/dependencies/dependency_differ_spec.rb +139 -0
  672. data/spec/units/dependencies/dependency_hasher_spec.rb +141 -0
  673. data/spec/units/dependencies/dependency_path_normalizer_spec.rb +111 -0
  674. data/spec/units/dependencies/dependency_tracker_spec.rb +905 -0
  675. data/spec/units/dependencies/dependinator_spec.rb +99 -0
  676. data/spec/units/dependencies/gcc_dependency_parser_spec.rb +152 -0
  677. data/spec/units/encodinator_spec.rb +92 -0
  678. data/spec/units/file_finder_helper_spec.rb +99 -15
  679. data/spec/units/file_finder_spec.rb +495 -0
  680. data/spec/units/file_path_collection_utils_spec.rb +9 -0
  681. data/spec/units/file_path_utils_spec.rb +736 -0
  682. data/spec/units/file_wrapper_spec.rb +447 -0
  683. data/spec/units/filename_extension_spec.rb +120 -0
  684. data/spec/units/flaginator_spec.rb +114 -0
  685. data/spec/units/generators/generator_helper_spec.rb +113 -0
  686. data/spec/units/generators/generator_mocks_spec.rb +131 -0
  687. data/spec/units/generators/generator_partials_spec.rb +336 -160
  688. data/spec/units/generators/generator_spec.rb +317 -0
  689. data/spec/units/generators/generator_test_results_backtrace_spec.rb +169 -9
  690. data/spec/units/generators/generator_test_results_sanity_checker_spec.rb +14 -6
  691. data/spec/units/generators/generator_test_results_spec.rb +65 -8
  692. data/spec/units/generators/generator_test_runner_spec.rb +1 -1
  693. data/spec/units/includes/include_factory_spec.rb +53 -0
  694. data/spec/units/includes/include_pathinator_spec.rb +269 -0
  695. data/spec/units/includes/include_spec.rb +8 -4
  696. data/spec/units/includes/includes_spec.rb +326 -18
  697. data/spec/units/mock_locator_spec.rb +74 -0
  698. data/spec/units/parsing_parcels_spec.rb +65 -0
  699. data/spec/units/partials/partializer_config_spec.rb +284 -18
  700. data/spec/units/partials/partializer_helper_spec.rb +122 -0
  701. data/spec/units/partials/partializer_spec.rb +346 -71
  702. data/spec/units/partials/partializer_utils_spec.rb +4 -4
  703. data/spec/units/partials_manager_spec.rb +539 -0
  704. data/spec/units/path_matcher_spec.rb +193 -0
  705. data/spec/units/path_mirror_spec.rb +103 -0
  706. data/spec/units/plugin_manager_spec.rb +77 -0
  707. data/spec/units/plugin_reportinator_spec.rb +78 -3
  708. data/spec/units/plugins/bullseye_spec.rb +1068 -0
  709. data/spec/units/plugins/command_hooks_spec.rb +157 -0
  710. data/spec/units/plugins/compile_commands_json_db_spec.rb +145 -0
  711. data/spec/units/plugins/console_reportinator_spec.rb +370 -0
  712. data/spec/units/plugins/cppcheck_spec.rb +330 -4
  713. data/spec/units/plugins/cppunit_tests_reporter_spec.rb +118 -0
  714. data/spec/units/plugins/dependencies_spec.rb +295 -0
  715. data/spec/units/plugins/dependency_commands_spec.rb +83 -0
  716. data/spec/units/plugins/dependency_environment_spec.rb +64 -0
  717. data/spec/units/plugins/dependency_spec_spec.rb +170 -0
  718. data/spec/units/plugins/gcov_reportinator_spec.rb +272 -0
  719. data/spec/units/plugins/gcov_spec.rb +521 -0
  720. data/spec/units/plugins/gcovr_reportinator_spec.rb +795 -0
  721. data/spec/units/plugins/gtestlike_report_spec.rb +363 -0
  722. data/spec/units/plugins/html_tests_reporter_spec.rb +158 -0
  723. data/spec/units/plugins/ide_report_lines_spec.rb +229 -0
  724. data/spec/units/plugins/json_tests_reporter_spec.rb +87 -0
  725. data/spec/units/plugins/junit_tests_reporter_spec.rb +237 -0
  726. data/spec/units/plugins/module_generator_options_spec.rb +185 -0
  727. data/spec/units/plugins/module_generator_project_spec.rb +55 -0
  728. data/spec/units/plugins/module_generator_request_spec.rb +107 -0
  729. data/spec/units/plugins/module_generator_spec.rb +214 -0
  730. data/spec/units/plugins/module_generator_test_file_spec.rb +102 -0
  731. data/spec/units/plugins/module_generator_unity_spec.rb +37 -0
  732. data/spec/units/plugins/report_build_warnings_log_spec.rb +199 -0
  733. data/spec/units/plugins/report_log_writer_plugin_spec.rb +94 -0
  734. data/spec/units/plugins/report_tests_gtestlike_stdout_spec.rb +274 -0
  735. data/spec/units/plugins/report_tests_ide_stdout_spec.rb +140 -0
  736. data/spec/units/plugins/report_tests_log_factory_spec.rb +210 -0
  737. data/spec/units/plugins/report_tests_pretty_stdout_spec.rb +83 -0
  738. data/spec/units/plugins/report_tests_raw_output_log_spec.rb +98 -0
  739. data/spec/units/plugins/report_tests_stdout_plugin_spec.rb +145 -0
  740. data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +121 -0
  741. data/spec/units/plugins/reportgenerator_reportinator_spec.rb +410 -0
  742. data/spec/units/plugins/sanitize_config_spec.rb +119 -0
  743. data/spec/units/plugins/sanitize_findings_spec.rb +69 -0
  744. data/spec/units/plugins/sanitize_records_spec.rb +114 -0
  745. data/spec/units/plugins/sanitize_reports_spec.rb +84 -0
  746. data/spec/units/plugins/sanitize_spec.rb +300 -0
  747. data/spec/units/plugins/tests_reporter_spec.rb +89 -0
  748. data/spec/units/plugins/valgrind_spec.rb +560 -0
  749. data/spec/units/plugins/warning_collector_spec.rb +185 -0
  750. data/spec/units/plugins/warning_reports_spec.rb +150 -0
  751. data/spec/units/preprocess/c_comment_scanner_spec.rb +17 -17
  752. data/spec/units/preprocess/c_preprocessor_conditionals_spec.rb +94 -0
  753. data/spec/units/preprocess/preprocessinator_bare_includes_extractor_spec.rb +73 -0
  754. data/spec/units/preprocess/preprocessinator_code_finder_spec.rb +35 -16
  755. data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +129 -48
  756. data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +292 -9
  757. data/spec/units/preprocess/preprocessinator_includes_handler_spec.rb +294 -16
  758. data/spec/units/preprocess/preprocessinator_line_marker_includes_extractor_spec.rb +356 -6
  759. data/spec/units/preprocess/preprocessinator_reconstructor_spec.rb +58 -4
  760. data/spec/units/preprocess/preprocessinator_spec.rb +693 -5
  761. data/spec/units/quote_include_isolator_spec.rb +176 -0
  762. data/spec/units/rake_app/rake_invocation_tracker_spec.rb +94 -0
  763. data/spec/units/rake_app/rake_task_registry_spec.rb +263 -0
  764. data/spec/units/rake_app/rake_utils_spec.rb +54 -0
  765. data/spec/units/rake_app/rake_wrapper_spec.rb +64 -0
  766. data/spec/units/rake_app/rakefile_component_resolver_spec.rb +182 -0
  767. data/spec/units/release_build_executor_spec.rb +404 -0
  768. data/spec/units/release_build_planner_spec.rb +144 -0
  769. data/spec/units/release_invoker_spec.rb +127 -0
  770. data/spec/units/reportinator_spec.rb +35 -0
  771. data/spec/units/ruby_expandinator_spec.rb +36 -0
  772. data/spec/units/standin_headerinator_spec.rb +168 -0
  773. data/spec/units/system_wrapper_spec.rb +16 -0
  774. data/spec/units/test_build_executor_spec.rb +1653 -8
  775. data/spec/units/test_build_planner_spec.rb +878 -0
  776. data/spec/units/test_build_setup_spec.rb +583 -0
  777. data/spec/units/test_context_extractor_spec.rb +51 -3
  778. data/spec/units/test_file_preprocessinator_spec.rb +206 -0
  779. data/spec/units/test_includes_extractinator_spec.rb +764 -0
  780. data/spec/units/test_invoker/objects_wiring_spec.rb +31 -0
  781. data/spec/units/test_invoker_spec.rb +147 -0
  782. data/spec/units/test_invoker_types_spec.rb +182 -0
  783. data/spec/units/test_pipeline_helpers_spec.rb +100 -0
  784. data/spec/units/test_pipeline_manager_spec.rb +415 -0
  785. data/spec/units/test_runner_generatinator_spec.rb +215 -0
  786. data/spec/units/test_runner_manager_spec.rb +70 -0
  787. data/spec/units/test_search_paths_spec.rb +84 -0
  788. data/spec/units/test_source_file_directive_resolver_spec.rb +239 -0
  789. data/spec/units/tool_executor_helper_spec.rb +1 -1
  790. data/spec/units/tool_executor_spec.rb +571 -2
  791. data/spec/units/tool_validator_spec.rb +303 -24
  792. data/spec/units/version_spec.rb +74 -0
  793. data/spec/units/yaml_wrapper_spec.rb +4 -1
  794. data/vendor/cmock/docs/CMock_Summary.md +11 -0
  795. data/vendor/cmock/lib/cmock_config.rb +1 -0
  796. data/vendor/cmock/lib/cmock_generator.rb +5 -1
  797. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +31 -0
  798. data/vendor/cmock/vendor/unity/auto/generate_module.rb +4 -4
  799. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +8 -2
  800. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +2 -2
  801. data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +7 -0
  802. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +4 -0
  803. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  804. data/vendor/cmock/vendor/unity/src/unity_internals.h +21 -7
  805. data/vendor/cmock/vendor/unity/test/Makefile +9 -2
  806. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -0
  807. data/vendor/cmock/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  808. data/vendor/cmock/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  809. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  810. data/vendor/cmock/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  811. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +78 -0
  812. data/vendor/cmock/vendor/unity/test/tests/test_unity_test_summary.rb +58 -0
  813. data/vendor/diy/lib/diy/factory.rb +5 -4
  814. data/vendor/diy/lib/diy.rb +5 -4
  815. data/vendor/diy/sample_code/car.rb +5 -4
  816. data/vendor/diy/sample_code/chassis.rb +5 -4
  817. data/vendor/diy/sample_code/diy_example.rb +5 -4
  818. data/vendor/diy/sample_code/engine.rb +5 -4
  819. data/vendor/diy/sample_code/objects.yml +5 -4
  820. data/vendor/diy/test/constructor.rb +5 -4
  821. data/vendor/diy/test/diy_test.rb +5 -4
  822. data/vendor/diy/test/factory_test.rb +5 -4
  823. data/vendor/diy/test/files/broken_construction.yml +5 -4
  824. data/vendor/diy/test/files/cat/cat.rb +5 -4
  825. data/vendor/diy/test/files/cat/extra_conflict.yml +5 -4
  826. data/vendor/diy/test/files/cat/heritage.rb +5 -4
  827. data/vendor/diy/test/files/cat/needs_input.yml +5 -4
  828. data/vendor/diy/test/files/cat/the_cat_lineage.rb +5 -4
  829. data/vendor/diy/test/files/dog/dog_model.rb +5 -4
  830. data/vendor/diy/test/files/dog/dog_presenter.rb +5 -4
  831. data/vendor/diy/test/files/dog/dog_view.rb +5 -4
  832. data/vendor/diy/test/files/dog/file_resolver.rb +5 -4
  833. data/vendor/diy/test/files/dog/other_thing.rb +5 -4
  834. data/vendor/diy/test/files/dog/simple.yml +5 -4
  835. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +5 -4
  836. data/vendor/diy/test/files/donkey/foo.rb +5 -4
  837. data/vendor/diy/test/files/factory/beef.rb +5 -4
  838. data/vendor/diy/test/files/factory/dog.rb +5 -4
  839. data/vendor/diy/test/files/factory/factory.yml +5 -4
  840. data/vendor/diy/test/files/factory/farm/llama.rb +5 -4
  841. data/vendor/diy/test/files/factory/farm/pork.rb +5 -4
  842. data/vendor/diy/test/files/factory/kitten.rb +5 -4
  843. data/vendor/diy/test/files/fud/objects.yml +5 -4
  844. data/vendor/diy/test/files/fud/toy.rb +5 -4
  845. data/vendor/diy/test/files/functions/attached_things_builder.rb +5 -4
  846. data/vendor/diy/test/files/functions/invalid_method.yml +5 -4
  847. data/vendor/diy/test/files/functions/method_extractor.rb +5 -4
  848. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -4
  849. data/vendor/diy/test/files/functions/objects.yml +5 -4
  850. data/vendor/diy/test/files/functions/thing.rb +5 -4
  851. data/vendor/diy/test/files/functions/thing_builder.rb +5 -4
  852. data/vendor/diy/test/files/functions/things_builder.rb +5 -4
  853. data/vendor/diy/test/files/gnu/objects.yml +5 -4
  854. data/vendor/diy/test/files/gnu/thinger.rb +5 -4
  855. data/vendor/diy/test/files/goat/base.rb +5 -4
  856. data/vendor/diy/test/files/goat/can.rb +5 -4
  857. data/vendor/diy/test/files/goat/goat.rb +5 -4
  858. data/vendor/diy/test/files/goat/objects.yml +5 -4
  859. data/vendor/diy/test/files/goat/paper.rb +5 -4
  860. data/vendor/diy/test/files/goat/plane.rb +5 -4
  861. data/vendor/diy/test/files/goat/shirt.rb +5 -4
  862. data/vendor/diy/test/files/goat/wings.rb +5 -4
  863. data/vendor/diy/test/files/horse/holder_thing.rb +5 -4
  864. data/vendor/diy/test/files/horse/objects.yml +5 -4
  865. data/vendor/diy/test/files/namespace/animal/bird.rb +5 -4
  866. data/vendor/diy/test/files/namespace/animal/cat.rb +5 -4
  867. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +5 -4
  868. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +5 -4
  869. data/vendor/diy/test/files/namespace/bad_module_specified.yml +5 -4
  870. data/vendor/diy/test/files/namespace/class_name_combine.yml +5 -4
  871. data/vendor/diy/test/files/namespace/no_module_specified.yml +5 -4
  872. data/vendor/diy/test/files/namespace/objects.yml +5 -4
  873. data/vendor/diy/test/files/namespace/road.rb +5 -4
  874. data/vendor/diy/test/files/namespace/sky.rb +5 -4
  875. data/vendor/diy/test/files/namespace/subcontext.yml +5 -4
  876. data/vendor/diy/test/files/non_singleton/air.rb +5 -4
  877. data/vendor/diy/test/files/non_singleton/fat_cat.rb +5 -4
  878. data/vendor/diy/test/files/non_singleton/objects.yml +5 -4
  879. data/vendor/diy/test/files/non_singleton/pig.rb +5 -4
  880. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +5 -4
  881. data/vendor/diy/test/files/non_singleton/tick.rb +5 -4
  882. data/vendor/diy/test/files/non_singleton/yard.rb +5 -4
  883. data/vendor/diy/test/files/yak/core_model.rb +5 -4
  884. data/vendor/diy/test/files/yak/core_presenter.rb +5 -4
  885. data/vendor/diy/test/files/yak/core_view.rb +5 -4
  886. data/vendor/diy/test/files/yak/data_source.rb +5 -4
  887. data/vendor/diy/test/files/yak/fringe_model.rb +5 -4
  888. data/vendor/diy/test/files/yak/fringe_presenter.rb +5 -4
  889. data/vendor/diy/test/files/yak/fringe_view.rb +5 -4
  890. data/vendor/diy/test/files/yak/giant_squid.rb +5 -4
  891. data/vendor/diy/test/files/yak/krill.rb +5 -4
  892. data/vendor/diy/test/files/yak/my_objects.yml +5 -4
  893. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +5 -4
  894. data/vendor/diy/test/test_helper.rb +5 -4
  895. data/vendor/unity/auto/generate_module.rb +4 -4
  896. data/vendor/unity/auto/generate_test_runner.rb +5 -1
  897. data/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  898. data/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  899. data/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  900. data/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  901. data/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  902. data/vendor/unity/test/tests/test_generate_test_runner.rb +29 -0
  903. metadata +770 -287
  904. data/assets/tests_with_fallback_conditionals/src/conditional_module.c +0 -18
  905. data/bin/actions_wrapper.rb +0 -51
  906. data/docs/mkdocs/assets/images/ceedling-logo-circle.png +0 -0
  907. data/docs/mkdocs/assets/images/ceedling.svg +0 -90
  908. data/docs/mkdocs/assets/images/favicon.png +0 -0
  909. data/docs/mkdocs/assets/stylesheets/admonitions.css +0 -152
  910. data/docs/mkdocs/assets/stylesheets/fixes-local.css +0 -15
  911. data/docs/mkdocs/assets/stylesheets/styling.css +0 -102
  912. data/docs/mkdocs/configuration/environment-vars.md +0 -14
  913. data/docs/mkdocs/configuration/global-collections.md +0 -156
  914. data/docs/mkdocs/configuration/index.md +0 -75
  915. data/docs/mkdocs/configuration/loading.md +0 -89
  916. data/docs/mkdocs/configuration/mixins.md +0 -607
  917. data/docs/mkdocs/configuration/parallel-builds.md +0 -97
  918. data/docs/mkdocs/configuration/project-file.md +0 -216
  919. data/docs/mkdocs/configuration/reference/cexception.md +0 -35
  920. data/docs/mkdocs/configuration/reference/cmock.md +0 -106
  921. data/docs/mkdocs/configuration/reference/defines.md +0 -352
  922. data/docs/mkdocs/configuration/reference/environment.md +0 -55
  923. data/docs/mkdocs/configuration/reference/extension.md +0 -63
  924. data/docs/mkdocs/configuration/reference/files.md +0 -154
  925. data/docs/mkdocs/configuration/reference/flags.md +0 -296
  926. data/docs/mkdocs/configuration/reference/index.md +0 -176
  927. data/docs/mkdocs/configuration/reference/libraries.md +0 -82
  928. data/docs/mkdocs/configuration/reference/mixins.md +0 -24
  929. data/docs/mkdocs/configuration/reference/partials.md +0 -38
  930. data/docs/mkdocs/configuration/reference/paths.md +0 -276
  931. data/docs/mkdocs/configuration/reference/plugins.md +0 -60
  932. data/docs/mkdocs/configuration/reference/project.md +0 -333
  933. data/docs/mkdocs/configuration/reference/release-build.md +0 -62
  934. data/docs/mkdocs/configuration/reference/test-build.md +0 -55
  935. data/docs/mkdocs/configuration/reference/test-runner.md +0 -61
  936. data/docs/mkdocs/configuration/reference/tools.md +0 -457
  937. data/docs/mkdocs/configuration/reference/unity.md +0 -49
  938. data/docs/mkdocs/configuration/which-ceedling.md +0 -77
  939. data/docs/mkdocs/development/index.md +0 -61
  940. data/docs/mkdocs/development/plugins/configuration.md +0 -164
  941. data/docs/mkdocs/development/plugins/index.md +0 -84
  942. data/docs/mkdocs/development/plugins/plugin-subclass.md +0 -513
  943. data/docs/mkdocs/development/plugins/rake-tasks.md +0 -54
  944. data/docs/mkdocs/development/workflow.md +0 -284
  945. data/docs/mkdocs/getting-started/command-line.md +0 -477
  946. data/docs/mkdocs/getting-started/example-projects/cipher-quest.md +0 -65
  947. data/docs/mkdocs/getting-started/example-projects/index.md +0 -49
  948. data/docs/mkdocs/getting-started/example-projects/temp-sensor.md +0 -60
  949. data/docs/mkdocs/getting-started/example-projects/wondrous-forest.md +0 -45
  950. data/docs/mkdocs/getting-started/index.md +0 -41
  951. data/docs/mkdocs/getting-started/installation.md +0 -179
  952. data/docs/mkdocs/getting-started/quick-start.md +0 -86
  953. data/docs/mkdocs/help.md +0 -49
  954. data/docs/mkdocs/index.md +0 -222
  955. data/docs/mkdocs/overview/build-system.md +0 -115
  956. data/docs/mkdocs/overview/index.md +0 -29
  957. data/docs/mkdocs/overview/test-environments.md +0 -33
  958. data/docs/mkdocs/overview/tools-and-frameworks.md +0 -115
  959. data/docs/mkdocs/plugins/beep.md +0 -134
  960. data/docs/mkdocs/plugins/bullseye.md +0 -83
  961. data/docs/mkdocs/plugins/command-hooks.md +0 -268
  962. data/docs/mkdocs/plugins/compile-commands-json-db.md +0 -42
  963. data/docs/mkdocs/plugins/cppcheck.md +0 -377
  964. data/docs/mkdocs/plugins/dependencies.md +0 -310
  965. data/docs/mkdocs/plugins/fff.md +0 -247
  966. data/docs/mkdocs/plugins/gcov/examples.md +0 -92
  967. data/docs/mkdocs/plugins/gcov/gcovr.md +0 -526
  968. data/docs/mkdocs/plugins/gcov/index.md +0 -74
  969. data/docs/mkdocs/plugins/gcov/overview.md +0 -145
  970. data/docs/mkdocs/plugins/gcov/reportgenerator.md +0 -246
  971. data/docs/mkdocs/plugins/gcov/reporting.md +0 -147
  972. data/docs/mkdocs/plugins/gcov/setup.md +0 -232
  973. data/docs/mkdocs/plugins/gcov/tool-versions.md +0 -60
  974. data/docs/mkdocs/plugins/gcov/troubleshooting.md +0 -78
  975. data/docs/mkdocs/plugins/index.md +0 -261
  976. data/docs/mkdocs/plugins/module-generator.md +0 -267
  977. data/docs/mkdocs/plugins/report-build-warnings-log.md +0 -42
  978. data/docs/mkdocs/plugins/report-tests-gtestlike-stdout.md +0 -98
  979. data/docs/mkdocs/plugins/report-tests-ide-stdout.md +0 -63
  980. data/docs/mkdocs/plugins/report-tests-log-factory.md +0 -454
  981. data/docs/mkdocs/plugins/report-tests-pretty-stdout.md +0 -56
  982. data/docs/mkdocs/plugins/report-tests-raw-output-log.md +0 -52
  983. data/docs/mkdocs/plugins/report-tests-teamcity-stdout.md +0 -96
  984. data/docs/mkdocs/plugins/sample_html_report.png +0 -0
  985. data/docs/mkdocs/plugins/valgrind.md +0 -198
  986. data/docs/mkdocs/project/release-history.md +0 -61
  987. data/docs/mkdocs/project/upgrade.md +0 -85
  988. data/docs/mkdocs/reference/build-directives.md +0 -37
  989. data/docs/mkdocs/reference/command-line.md +0 -323
  990. data/docs/mkdocs/reference/environment-vars.md +0 -60
  991. data/docs/mkdocs/reference/gcov-plugin.md +0 -600
  992. data/docs/mkdocs/reference/global-collections.md +0 -160
  993. data/docs/mkdocs/reference/index.md +0 -65
  994. data/docs/mkdocs/reference/partials-macros.md +0 -79
  995. data/docs/mkdocs/reference/project-configuration.md +0 -46
  996. data/docs/mkdocs/snapshot/examples/cipher_quest/README.md +0 -210
  997. data/docs/mkdocs/snapshot/examples/temp_sensor/README.md +0 -283
  998. data/docs/mkdocs/snapshot/examples/wondrous_forest/README.md +0 -92
  999. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +0 -32
  1000. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults_gcov.rb +0 -136
  1001. data/docs/mkdocs/snapshot.yml +0 -20
  1002. data/docs/mkdocs/testing-guide/build-directives.md +0 -153
  1003. data/docs/mkdocs/testing-guide/conventions.md +0 -616
  1004. data/docs/mkdocs/testing-guide/frameworks.md +0 -192
  1005. data/docs/mkdocs/testing-guide/index.md +0 -80
  1006. data/docs/mkdocs/testing-guide/partials/configuration.md +0 -67
  1007. data/docs/mkdocs/testing-guide/partials/conventions.md +0 -68
  1008. data/docs/mkdocs/testing-guide/partials/directives.md +0 -212
  1009. data/docs/mkdocs/testing-guide/partials/example.md +0 -149
  1010. data/docs/mkdocs/testing-guide/partials/index.md +0 -88
  1011. data/docs/mkdocs/testing-guide/partials/overview.md +0 -81
  1012. data/docs/mkdocs/testing-guide/partials/variables.md +0 -244
  1013. data/docs/mkdocs/testing-guide/test-cases.md +0 -194
  1014. data/docs/mkdocs/testing-guide/test-sample.md +0 -94
  1015. data/docs/mkdocs/testing-guide/test-suite-anatomy.md +0 -58
  1016. data/lib/ceedling/cacheinator.rb +0 -53
  1017. data/lib/ceedling/cacheinator_helper.rb +0 -60
  1018. data/lib/ceedling/dependinator.rb +0 -31
  1019. data/lib/ceedling/makefile.rb +0 -52
  1020. data/lib/ceedling/release_invoker.rb +0 -112
  1021. data/lib/ceedling/rules_release.rake +0 -109
  1022. data/lib/ceedling/rules_tests.rake +0 -40
  1023. data/lib/ceedling/tasks_release.rake +0 -36
  1024. data/plugins/fff/vendor/fff/Makefile +0 -10
  1025. data/plugins/fff/vendor/fff/buildandtest +0 -15
  1026. data/plugins/fff/vendor/fff/examples/Makefile +0 -7
  1027. data/plugins/fff/vendor/fff/examples/driver_testing/Makefile +0 -64
  1028. data/plugins/fff/vendor/fff/examples/driver_testing/driver.c +0 -32
  1029. data/plugins/fff/vendor/fff/examples/driver_testing/driver.h +0 -21
  1030. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.cpp +0 -58
  1031. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.fff.cpp +0 -70
  1032. data/plugins/fff/vendor/fff/examples/driver_testing/hardware_abstraction.h +0 -25
  1033. data/plugins/fff/vendor/fff/examples/driver_testing/registers.h +0 -23
  1034. data/plugins/fff/vendor/fff/examples/embedded_ui/DISPLAY.h +0 -27
  1035. data/plugins/fff/vendor/fff/examples/embedded_ui/Kata.txt +0 -25
  1036. data/plugins/fff/vendor/fff/examples/embedded_ui/Makefile +0 -67
  1037. data/plugins/fff/vendor/fff/examples/embedded_ui/SYSTEM.h +0 -31
  1038. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.c +0 -56
  1039. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.h +0 -22
  1040. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_ansic.c +0 -191
  1041. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_cpp.cpp +0 -144
  1042. data/plugins/fff/vendor/fff/examples/embedded_ui/test_suite_template.c +0 -42
  1043. data/plugins/fff/vendor/fff/gtest/Makefile +0 -22
  1044. data/plugins/fff/vendor/fff/gtest/gtest-all.cc +0 -9118
  1045. data/plugins/fff/vendor/fff/gtest/gtest-main.cc +0 -6
  1046. data/plugins/fff/vendor/fff/gtest/gtest.h +0 -19547
  1047. data/plugins/fff/vendor/fff/test/Makefile +0 -81
  1048. data/plugins/fff/vendor/fff/test/c_test_framework.h +0 -25
  1049. data/plugins/fff/vendor/fff/test/fff_test_c.c +0 -116
  1050. data/plugins/fff/vendor/fff/test/fff_test_cpp.cpp +0 -53
  1051. data/plugins/fff/vendor/fff/test/fff_test_global_c.c +0 -84
  1052. data/plugins/fff/vendor/fff/test/fff_test_global_cpp.cpp +0 -31
  1053. data/plugins/fff/vendor/fff/test/global_fakes.c +0 -21
  1054. data/plugins/fff/vendor/fff/test/global_fakes.h +0 -47
  1055. data/plugins/fff/vendor/fff/test/test_cases.include +0 -276
  1056. data/plugins/report_tests_gtestlike_stdout/assets/template.erb +0 -83
  1057. data/site-local/snapshot/assets/project.yml +0 -404
  1058. data/spec/system/partials_types_header_spec.rb +0 -166
  1059. data/spec/units/configurator_spec.rb +0 -232
  1060. /data/assets/{ceedling → features/ceedling} +0 -0
  1061. /data/assets/{ceedling.cmd → features/ceedling.cmd} +0 -0
  1062. /data/assets/{default_gitignore → features/default_gitignore} +0 -0
  1063. /data/assets/{broken_uncovered_file.c → fixtures/broken_uncovered_file.c} +0 -0
  1064. /data/assets/{example_file.c → fixtures/example_file.c} +0 -0
  1065. /data/assets/{example_file.h → fixtures/example_file.h} +0 -0
  1066. /data/assets/{example_file_call.c → fixtures/example_file_call.c} +0 -0
  1067. /data/assets/{example_file_call.h → fixtures/example_file_call.h} +0 -0
  1068. /data/assets/{example_file_with_statics.c → fixtures/example_file_with_statics.c} +0 -0
  1069. /data/assets/{example_file_with_stdio.c → fixtures/example_file_with_stdio.c} +0 -0
  1070. /data/assets/{example_file_with_stdio.h → fixtures/example_file_with_stdio.h} +0 -0
  1071. /data/assets/{fake_crash_test_fixture.rb → fixtures/fake_crash_test_fixture.rb} +0 -0
  1072. /data/assets/{partial_all_module.h → fixtures/partial_all_module.h} +0 -0
  1073. /data/assets/{run_with_ubsan.rb → fixtures/run_with_ubsan.rb} +0 -0
  1074. /data/assets/{same_dir_pairing_module.c → fixtures/same_dir_pairing_module.c} +0 -0
  1075. /data/assets/{same_dir_pairing_module.h → fixtures/same_dir_pairing_module.h} +0 -0
  1076. /data/assets/{same_dir_pairing_module_func.h → fixtures/same_dir_pairing_module_func.h} +0 -0
  1077. /data/assets/{same_dir_pairing_other.c → fixtures/same_dir_pairing_other.c} +0 -0
  1078. /data/assets/{same_dir_pairing_other.h → fixtures/same_dir_pairing_other.h} +0 -0
  1079. /data/assets/{test_example_file.c → fixtures/test_example_file.c} +0 -0
  1080. /data/assets/{test_example_file_2.c → fixtures/test_example_file_2.c} +0 -0
  1081. /data/assets/{test_example_file_source_include.c → fixtures/test_example_file_source_include.c} +0 -0
  1082. /data/assets/{test_example_file_success.c → fixtures/test_example_file_success.c} +0 -0
  1083. /data/assets/{test_example_file_unity_printf.c → fixtures/test_example_file_unity_printf.c} +0 -0
  1084. /data/assets/{test_example_file_verbose.c → fixtures/test_example_file_verbose.c} +0 -0
  1085. /data/assets/{test_example_file_with_mock.c → fixtures/test_example_file_with_mock.c} +0 -0
  1086. /data/assets/{test_example_file_with_stdio.c → fixtures/test_example_file_with_stdio.c} +0 -0
  1087. /data/assets/{test_example_with_parameterized_tests.c → fixtures/test_example_with_parameterized_tests.c} +0 -0
  1088. /data/assets/{test_partial_all_module.c → fixtures/test_partial_all_module.c} +0 -0
  1089. /data/assets/{test_same_dir_pairing.c → fixtures/test_same_dir_pairing.c} +0 -0
  1090. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_config.h +0 -0
  1091. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_extra.h +0 -0
  1092. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/local_flag_extra.h +0 -0
  1093. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_extra.h +0 -0
  1094. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_wrapper.h +0 -0
  1095. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/project_flag_extra.h +0 -0
  1096. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.h +0 -0
  1097. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.c +0 -0
  1098. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.h +0 -0
  1099. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.c +0 -0
  1100. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.h +0 -0
  1101. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware.c +0 -0
  1102. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware_special.c +0 -0
  1103. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.c +0 -0
  1104. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.h +0 -0
  1105. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder.c +0 -0
  1106. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder_partial.c +0 -0
  1107. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/conditional_module.h +0 -0
  1108. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/optional_dep.h +0 -0
  1109. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.c +0 -0
  1110. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.h +0 -0
  1111. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.c +0 -0
  1112. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.h +0 -0
  1113. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.c +0 -0
  1114. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.h +0 -0
  1115. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_blanks.c +0 -0
  1116. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_counter.c +0 -0
  1117. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_decorators.c +0 -0
  1118. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.c +0 -0
  1119. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.h +0 -0
  1120. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.c +0 -0
  1121. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.h +0 -0
  1122. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.c +0 -0
  1123. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.h +0 -0
  1124. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorA.h +0 -0
  1125. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorB.h +0 -0
  1126. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorC.h +0 -0
  1127. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareA.c +0 -0
  1128. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareB.c +0 -0
  1129. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareC.c +0 -0
  1130. /data/assets/{uncovered_example_file.c → fixtures/uncovered_example_file.c} +0 -0
  1131. /data/plugins/bullseye/assets/{template.erb → coverage.template} +0 -0
@@ -0,0 +1,5079 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Test-Centered Build System for C">
10
+
11
+
12
+
13
+
14
+ <link rel="prev" href="../sanitize.html">
15
+
16
+
17
+ <link rel="next" href="licensing.html">
18
+
19
+
20
+
21
+
22
+
23
+ <link rel="icon" href="../../assets/images/favicon.png">
24
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
25
+
26
+
27
+
28
+ <title>Bullseye - Ceedling</title>
29
+
30
+
31
+
32
+ <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css">
33
+
34
+
35
+ <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
49
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
50
+ <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
51
+
52
+
53
+
54
+ <link rel="stylesheet" href="../../assets/stylesheets/styling.css">
55
+
56
+ <link rel="stylesheet" href="../../assets/stylesheets/admonitions.css">
57
+
58
+ <link rel="stylesheet" href="../../assets/stylesheets/fixes-local.css">
59
+
60
+ <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
61
+
62
+
63
+
64
+
65
+
66
+ </head>
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="deep_purple">
77
+
78
+
79
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
80
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
81
+ <label class="md-overlay" for="__drawer"></label>
82
+ <div data-md-component="skip">
83
+
84
+
85
+ <a href="#bullseye" class="md-skip">
86
+ Skip to content
87
+ </a>
88
+
89
+ </div>
90
+ <div data-md-component="announce">
91
+
92
+ <aside class="md-banner">
93
+ <div class="md-banner__inner md-grid md-typeset">
94
+
95
+
96
+
97
+
98
+ </div>
99
+
100
+ </aside>
101
+
102
+ </div>
103
+
104
+ <div data-md-color-scheme="default" data-md-component="outdated" hidden>
105
+
106
+ <aside class="md-banner md-banner--warning">
107
+ <div class="md-banner__inner md-grid md-typeset">
108
+
109
+
110
+ You are not viewing the latest version.
111
+ <a href="../../..">
112
+ <strong>Click here to go to latest.</strong>
113
+ </a>
114
+
115
+
116
+ </div>
117
+ <script>var el=document.querySelector("[data-md-component=outdated]"),base=new URL("../.."),outdated=__md_get("__outdated",sessionStorage,base);!0===outdated&&el&&(el.hidden=!1)</script>
118
+ </aside>
119
+
120
+ </div>
121
+
122
+
123
+
124
+
125
+ <header class="md-header" data-md-component="header">
126
+ <nav class="md-header__inner md-grid" aria-label="Header">
127
+ <a href="../../index.html" title="Ceedling" class="md-header__button md-logo" aria-label="Ceedling" data-md-component="logo">
128
+
129
+
130
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
131
+
132
+ </a>
133
+ <label class="md-header__button md-icon" for="__drawer">
134
+
135
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
136
+ </label>
137
+ <div class="md-header__title" data-md-component="header-title">
138
+ <div class="md-header__ellipsis">
139
+ <div class="md-header__topic">
140
+ <span class="md-ellipsis">
141
+ Ceedling
142
+ </span>
143
+ </div>
144
+ <div class="md-header__topic" data-md-component="header-topic">
145
+ <span class="md-ellipsis">
146
+
147
+ Bullseye
148
+
149
+ </span>
150
+ </div>
151
+ </div>
152
+ </div>
153
+
154
+
155
+ <form class="md-header__option" data-md-component="palette">
156
+
157
+
158
+
159
+
160
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="deep_purple" aria-hidden="true" type="radio" name="__palette" id="__palette_0">
161
+
162
+
163
+ </form>
164
+
165
+
166
+
167
+ <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
168
+
169
+
170
+
171
+
172
+ <div class="md-header__source">
173
+ <a href="https://github.com/ThrowTheSwitch/Ceedling" title="Go to repository" class="md-source" data-md-component="source">
174
+ <div class="md-source__icon md-icon">
175
+
176
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
177
+ </div>
178
+ <div class="md-source__repository">
179
+ ThrowTheSwitch/Ceedling
180
+ </div>
181
+ </a>
182
+ </div>
183
+
184
+ </nav>
185
+
186
+ </header>
187
+
188
+ <div class="md-container" data-md-component="container">
189
+
190
+
191
+
192
+
193
+
194
+ <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
195
+ <div class="md-grid">
196
+ <ul class="md-tabs__list">
197
+
198
+
199
+
200
+
201
+
202
+
203
+ <li class="md-tabs__item">
204
+ <a href="../../index.html" class="md-tabs__link">
205
+
206
+
207
+
208
+
209
+
210
+ Home
211
+
212
+ </a>
213
+ </li>
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+ <li class="md-tabs__item">
225
+ <a href="../../overview/index.html" class="md-tabs__link">
226
+
227
+
228
+
229
+
230
+
231
+ Overview
232
+
233
+ </a>
234
+ </li>
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+ <li class="md-tabs__item">
247
+ <a href="../../getting-started/index.html" class="md-tabs__link">
248
+
249
+
250
+
251
+
252
+
253
+ Getting Started
254
+
255
+ </a>
256
+ </li>
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+ <li class="md-tabs__item">
269
+ <a href="../../testing-guide/index.html" class="md-tabs__link">
270
+
271
+
272
+
273
+
274
+
275
+ Testing Guide
276
+
277
+ </a>
278
+ </li>
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+ <li class="md-tabs__item">
291
+ <a href="../../configuration/index.html" class="md-tabs__link">
292
+
293
+
294
+
295
+
296
+
297
+ Configuration
298
+
299
+ </a>
300
+ </li>
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+ <li class="md-tabs__item md-tabs__item--active">
315
+ <a href="../index.html" class="md-tabs__link">
316
+
317
+
318
+
319
+
320
+
321
+ Plugins
322
+
323
+ </a>
324
+ </li>
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+ <li class="md-tabs__item">
337
+ <a href="../../reference/index.html" class="md-tabs__link">
338
+
339
+
340
+
341
+
342
+
343
+ Reference
344
+
345
+ </a>
346
+ </li>
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+ <li class="md-tabs__item">
359
+ <a href="../../project/index.html" class="md-tabs__link">
360
+
361
+
362
+
363
+
364
+
365
+ Releases
366
+
367
+ </a>
368
+ </li>
369
+
370
+
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+ <li class="md-tabs__item">
379
+ <a href="../../help.html" class="md-tabs__link">
380
+
381
+
382
+
383
+
384
+
385
+ Help
386
+
387
+ </a>
388
+ </li>
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+ <li class="md-tabs__item">
400
+ <a href="../../development/index.html" class="md-tabs__link">
401
+
402
+
403
+
404
+
405
+
406
+ Development
407
+
408
+ </a>
409
+ </li>
410
+
411
+
412
+
413
+
414
+ </ul>
415
+ </div>
416
+ </nav>
417
+
418
+
419
+
420
+ <main class="md-main" data-md-component="main">
421
+ <div class="md-main__inner md-grid">
422
+
423
+
424
+
425
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
426
+ <div class="md-sidebar__scrollwrap">
427
+ <div class="md-sidebar__inner">
428
+
429
+
430
+
431
+
432
+
433
+
434
+ <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
435
+ <label class="md-nav__title" for="__drawer">
436
+ <a href="../../index.html" title="Ceedling" class="md-nav__button md-logo" aria-label="Ceedling" data-md-component="logo">
437
+
438
+
439
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
440
+
441
+ </a>
442
+ Ceedling
443
+ </label>
444
+
445
+ <div class="md-nav__source">
446
+ <a href="https://github.com/ThrowTheSwitch/Ceedling" title="Go to repository" class="md-source" data-md-component="source">
447
+ <div class="md-source__icon md-icon">
448
+
449
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
450
+ </div>
451
+ <div class="md-source__repository">
452
+ ThrowTheSwitch/Ceedling
453
+ </div>
454
+ </a>
455
+ </div>
456
+
457
+ <ul class="md-nav__list" data-md-scrollfix>
458
+
459
+
460
+
461
+
462
+
463
+
464
+
465
+ <li class="md-nav__item">
466
+ <a href="../../index.html" class="md-nav__link">
467
+
468
+
469
+
470
+ <span class="md-ellipsis">
471
+
472
+
473
+ Home
474
+
475
+
476
+
477
+ </span>
478
+
479
+
480
+
481
+ </a>
482
+ </li>
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+ <li class="md-nav__item md-nav__item--nested">
515
+
516
+
517
+
518
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
519
+
520
+
521
+ <div class="md-nav__link md-nav__container">
522
+ <a href="../../overview/index.html" class="md-nav__link ">
523
+
524
+
525
+
526
+ <span class="md-ellipsis">
527
+
528
+
529
+ Overview
530
+
531
+
532
+
533
+ </span>
534
+
535
+
536
+
537
+ </a>
538
+
539
+
540
+ <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0">
541
+ <span class="md-nav__icon md-icon"></span>
542
+ </label>
543
+
544
+ </div>
545
+
546
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
547
+ <label class="md-nav__title" for="__nav_2">
548
+ <span class="md-nav__icon md-icon"></span>
549
+
550
+
551
+ Overview
552
+
553
+
554
+ </label>
555
+ <ul class="md-nav__list" data-md-scrollfix>
556
+
557
+
558
+
559
+
560
+
561
+
562
+
563
+
564
+
565
+ <li class="md-nav__item">
566
+ <a href="../../overview/build-system.html" class="md-nav__link">
567
+
568
+
569
+
570
+ <span class="md-ellipsis">
571
+
572
+
573
+ Build System
574
+
575
+
576
+
577
+ </span>
578
+
579
+
580
+
581
+ </a>
582
+ </li>
583
+
584
+
585
+
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+ <li class="md-nav__item">
594
+ <a href="../../overview/tools-and-frameworks.html" class="md-nav__link">
595
+
596
+
597
+
598
+ <span class="md-ellipsis">
599
+
600
+
601
+ Tools & Frameworks
602
+
603
+
604
+
605
+ </span>
606
+
607
+
608
+
609
+ </a>
610
+ </li>
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+ <li class="md-nav__item">
622
+ <a href="../../overview/test-environments.html" class="md-nav__link">
623
+
624
+
625
+
626
+ <span class="md-ellipsis">
627
+
628
+
629
+ Test Environments
630
+
631
+
632
+
633
+ </span>
634
+
635
+
636
+
637
+ </a>
638
+ </li>
639
+
640
+
641
+
642
+
643
+ </ul>
644
+ </nav>
645
+
646
+ </li>
647
+
648
+
649
+
650
+
651
+
652
+
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+
666
+
667
+
668
+
669
+
670
+
671
+
672
+
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+
682
+ <li class="md-nav__item md-nav__item--nested">
683
+
684
+
685
+
686
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
687
+
688
+
689
+ <div class="md-nav__link md-nav__container">
690
+ <a href="../../getting-started/index.html" class="md-nav__link ">
691
+
692
+
693
+
694
+ <span class="md-ellipsis">
695
+
696
+
697
+ Getting Started
698
+
699
+
700
+
701
+ </span>
702
+
703
+
704
+
705
+ </a>
706
+
707
+
708
+ <label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0">
709
+ <span class="md-nav__icon md-icon"></span>
710
+ </label>
711
+
712
+ </div>
713
+
714
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
715
+ <label class="md-nav__title" for="__nav_3">
716
+ <span class="md-nav__icon md-icon"></span>
717
+
718
+
719
+ Getting Started
720
+
721
+
722
+ </label>
723
+ <ul class="md-nav__list" data-md-scrollfix>
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+
733
+ <li class="md-nav__item">
734
+ <a href="../../getting-started/quick-start.html" class="md-nav__link">
735
+
736
+
737
+
738
+ <span class="md-ellipsis">
739
+
740
+
741
+ Quick Start
742
+
743
+
744
+
745
+ </span>
746
+
747
+
748
+
749
+ </a>
750
+ </li>
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+ <li class="md-nav__item">
762
+ <a href="../../getting-started/installation.html" class="md-nav__link">
763
+
764
+
765
+
766
+ <span class="md-ellipsis">
767
+
768
+
769
+ Installation
770
+
771
+
772
+
773
+ </span>
774
+
775
+
776
+
777
+ </a>
778
+ </li>
779
+
780
+
781
+
782
+
783
+
784
+
785
+
786
+
787
+
788
+
789
+ <li class="md-nav__item">
790
+ <a href="../../getting-started/command-line.html" class="md-nav__link">
791
+
792
+
793
+
794
+ <span class="md-ellipsis">
795
+
796
+
797
+ Command Line
798
+
799
+
800
+
801
+ </span>
802
+
803
+
804
+
805
+ </a>
806
+ </li>
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+
816
+
817
+ <li class="md-nav__item">
818
+ <a href="../../getting-started/builds.html" class="md-nav__link">
819
+
820
+
821
+
822
+ <span class="md-ellipsis">
823
+
824
+
825
+ Builds
826
+
827
+
828
+
829
+ </span>
830
+
831
+
832
+
833
+ </a>
834
+ </li>
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+
867
+ <li class="md-nav__item md-nav__item--nested">
868
+
869
+
870
+
871
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
872
+
873
+
874
+ <div class="md-nav__link md-nav__container">
875
+ <a href="../../getting-started/example-projects/index.html" class="md-nav__link ">
876
+
877
+
878
+
879
+ <span class="md-ellipsis">
880
+
881
+
882
+ Example Projects
883
+
884
+
885
+
886
+ </span>
887
+
888
+
889
+
890
+ </a>
891
+
892
+
893
+ <label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
894
+ <span class="md-nav__icon md-icon"></span>
895
+ </label>
896
+
897
+ </div>
898
+
899
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
900
+ <label class="md-nav__title" for="__nav_3_6">
901
+ <span class="md-nav__icon md-icon"></span>
902
+
903
+
904
+ Example Projects
905
+
906
+
907
+ </label>
908
+ <ul class="md-nav__list" data-md-scrollfix>
909
+
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+ <li class="md-nav__item">
919
+ <a href="../../getting-started/example-projects/temp-sensor.html" class="md-nav__link">
920
+
921
+
922
+
923
+ <span class="md-ellipsis">
924
+
925
+
926
+ Temp Sensor
927
+
928
+
929
+
930
+ </span>
931
+
932
+
933
+
934
+ </a>
935
+ </li>
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+ <li class="md-nav__item">
947
+ <a href="../../getting-started/example-projects/wondrous-forest.html" class="md-nav__link">
948
+
949
+
950
+
951
+ <span class="md-ellipsis">
952
+
953
+
954
+ Wondrous Forest
955
+
956
+
957
+
958
+ </span>
959
+
960
+
961
+
962
+ </a>
963
+ </li>
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+ <li class="md-nav__item">
975
+ <a href="../../getting-started/example-projects/cipher-quest.html" class="md-nav__link">
976
+
977
+
978
+
979
+ <span class="md-ellipsis">
980
+
981
+
982
+ Cipher Quest
983
+
984
+
985
+
986
+ </span>
987
+
988
+
989
+
990
+ </a>
991
+ </li>
992
+
993
+
994
+
995
+
996
+ </ul>
997
+ </nav>
998
+
999
+ </li>
1000
+
1001
+
1002
+
1003
+
1004
+ </ul>
1005
+ </nav>
1006
+
1007
+ </li>
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+ <li class="md-nav__item md-nav__item--nested">
1048
+
1049
+
1050
+
1051
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
1052
+
1053
+
1054
+ <div class="md-nav__link md-nav__container">
1055
+ <a href="../../testing-guide/index.html" class="md-nav__link ">
1056
+
1057
+
1058
+
1059
+ <span class="md-ellipsis">
1060
+
1061
+
1062
+ Testing Guide
1063
+
1064
+
1065
+
1066
+ </span>
1067
+
1068
+
1069
+
1070
+ </a>
1071
+
1072
+
1073
+ <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="0">
1074
+ <span class="md-nav__icon md-icon"></span>
1075
+ </label>
1076
+
1077
+ </div>
1078
+
1079
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
1080
+ <label class="md-nav__title" for="__nav_4">
1081
+ <span class="md-nav__icon md-icon"></span>
1082
+
1083
+
1084
+ Testing Guide
1085
+
1086
+
1087
+ </label>
1088
+ <ul class="md-nav__list" data-md-scrollfix>
1089
+
1090
+
1091
+
1092
+
1093
+
1094
+
1095
+
1096
+
1097
+
1098
+ <li class="md-nav__item">
1099
+ <a href="../../testing-guide/test-cases.html" class="md-nav__link">
1100
+
1101
+
1102
+
1103
+ <span class="md-ellipsis">
1104
+
1105
+
1106
+ How Does a Test Case Work?
1107
+
1108
+
1109
+
1110
+ </span>
1111
+
1112
+
1113
+
1114
+ </a>
1115
+ </li>
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+
1122
+
1123
+
1124
+
1125
+
1126
+ <li class="md-nav__item">
1127
+ <a href="../../testing-guide/test-sample.html" class="md-nav__link">
1128
+
1129
+
1130
+
1131
+ <span class="md-ellipsis">
1132
+
1133
+
1134
+ Commented Sample Test File
1135
+
1136
+
1137
+
1138
+ </span>
1139
+
1140
+
1141
+
1142
+ </a>
1143
+ </li>
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+
1152
+
1153
+
1154
+ <li class="md-nav__item">
1155
+ <a href="../../testing-guide/test-suite-anatomy.html" class="md-nav__link">
1156
+
1157
+
1158
+
1159
+ <span class="md-ellipsis">
1160
+
1161
+
1162
+ Anatomy of a Test Suite
1163
+
1164
+
1165
+
1166
+ </span>
1167
+
1168
+
1169
+
1170
+ </a>
1171
+ </li>
1172
+
1173
+
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+ <li class="md-nav__item">
1183
+ <a href="../../testing-guide/conventions.html" class="md-nav__link">
1184
+
1185
+
1186
+
1187
+ <span class="md-ellipsis">
1188
+
1189
+
1190
+ Conventions & Behaviors
1191
+
1192
+
1193
+
1194
+ </span>
1195
+
1196
+
1197
+
1198
+ </a>
1199
+ </li>
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+ <li class="md-nav__item">
1211
+ <a href="../../testing-guide/frameworks.html" class="md-nav__link">
1212
+
1213
+
1214
+
1215
+ <span class="md-ellipsis">
1216
+
1217
+
1218
+ Unity, CMock & CException
1219
+
1220
+
1221
+
1222
+ </span>
1223
+
1224
+
1225
+
1226
+ </a>
1227
+ </li>
1228
+
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+
1262
+
1263
+
1264
+
1265
+
1266
+ <li class="md-nav__item md-nav__item--nested">
1267
+
1268
+
1269
+
1270
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_7" >
1271
+
1272
+
1273
+ <div class="md-nav__link md-nav__container">
1274
+ <a href="../../testing-guide/partials/index.html" class="md-nav__link ">
1275
+
1276
+
1277
+
1278
+ <span class="md-ellipsis">
1279
+
1280
+
1281
+ Partials
1282
+
1283
+
1284
+
1285
+ </span>
1286
+
1287
+
1288
+
1289
+ </a>
1290
+
1291
+
1292
+ <label class="md-nav__link " for="__nav_4_7" id="__nav_4_7_label" tabindex="0">
1293
+ <span class="md-nav__icon md-icon"></span>
1294
+ </label>
1295
+
1296
+ </div>
1297
+
1298
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_7_label" aria-expanded="false">
1299
+ <label class="md-nav__title" for="__nav_4_7">
1300
+ <span class="md-nav__icon md-icon"></span>
1301
+
1302
+
1303
+ Partials
1304
+
1305
+
1306
+ </label>
1307
+ <ul class="md-nav__list" data-md-scrollfix>
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+
1314
+
1315
+
1316
+
1317
+ <li class="md-nav__item">
1318
+ <a href="../../testing-guide/partials/overview.html" class="md-nav__link">
1319
+
1320
+
1321
+
1322
+ <span class="md-ellipsis">
1323
+
1324
+
1325
+ What Is a Partial?
1326
+
1327
+
1328
+
1329
+ </span>
1330
+
1331
+
1332
+
1333
+ </a>
1334
+ </li>
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+ <li class="md-nav__item">
1346
+ <a href="../../testing-guide/partials/configuration.html" class="md-nav__link">
1347
+
1348
+
1349
+
1350
+ <span class="md-ellipsis">
1351
+
1352
+
1353
+ Configuration
1354
+
1355
+
1356
+
1357
+ </span>
1358
+
1359
+
1360
+
1361
+ </a>
1362
+ </li>
1363
+
1364
+
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+ <li class="md-nav__item">
1374
+ <a href="../../testing-guide/partials/example.html" class="md-nav__link">
1375
+
1376
+
1377
+
1378
+ <span class="md-ellipsis">
1379
+
1380
+
1381
+ Walk-Through Example
1382
+
1383
+
1384
+
1385
+ </span>
1386
+
1387
+
1388
+
1389
+ </a>
1390
+ </li>
1391
+
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+
1401
+ <li class="md-nav__item">
1402
+ <a href="../../testing-guide/partials/conventions.html" class="md-nav__link">
1403
+
1404
+
1405
+
1406
+ <span class="md-ellipsis">
1407
+
1408
+
1409
+ Conventions & Terminology
1410
+
1411
+
1412
+
1413
+ </span>
1414
+
1415
+
1416
+
1417
+ </a>
1418
+ </li>
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+
1426
+
1427
+
1428
+
1429
+ <li class="md-nav__item">
1430
+ <a href="../../testing-guide/partials/directives.html" class="md-nav__link">
1431
+
1432
+
1433
+
1434
+ <span class="md-ellipsis">
1435
+
1436
+
1437
+ Partial Directive Macros
1438
+
1439
+
1440
+
1441
+ </span>
1442
+
1443
+
1444
+
1445
+ </a>
1446
+ </li>
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+ <li class="md-nav__item">
1458
+ <a href="../../testing-guide/partials/variables.html" class="md-nav__link">
1459
+
1460
+
1461
+
1462
+ <span class="md-ellipsis">
1463
+
1464
+
1465
+ Accessing Static Variables
1466
+
1467
+
1468
+
1469
+ </span>
1470
+
1471
+
1472
+
1473
+ </a>
1474
+ </li>
1475
+
1476
+
1477
+
1478
+
1479
+ </ul>
1480
+ </nav>
1481
+
1482
+ </li>
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+ <li class="md-nav__item">
1494
+ <a href="../../testing-guide/build-directives.html" class="md-nav__link">
1495
+
1496
+
1497
+
1498
+ <span class="md-ellipsis">
1499
+
1500
+
1501
+ Build Directive Macros
1502
+
1503
+
1504
+
1505
+ </span>
1506
+
1507
+
1508
+
1509
+ </a>
1510
+ </li>
1511
+
1512
+
1513
+
1514
+
1515
+ </ul>
1516
+ </nav>
1517
+
1518
+ </li>
1519
+
1520
+
1521
+
1522
+
1523
+
1524
+
1525
+
1526
+
1527
+
1528
+
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+ <li class="md-nav__item md-nav__item--nested">
1561
+
1562
+
1563
+
1564
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
1565
+
1566
+
1567
+ <div class="md-nav__link md-nav__container">
1568
+ <a href="../../configuration/index.html" class="md-nav__link ">
1569
+
1570
+
1571
+
1572
+ <span class="md-ellipsis">
1573
+
1574
+
1575
+ Configuration
1576
+
1577
+
1578
+
1579
+ </span>
1580
+
1581
+
1582
+
1583
+ </a>
1584
+
1585
+
1586
+ <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="0">
1587
+ <span class="md-nav__icon md-icon"></span>
1588
+ </label>
1589
+
1590
+ </div>
1591
+
1592
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
1593
+ <label class="md-nav__title" for="__nav_5">
1594
+ <span class="md-nav__icon md-icon"></span>
1595
+
1596
+
1597
+ Configuration
1598
+
1599
+
1600
+ </label>
1601
+ <ul class="md-nav__list" data-md-scrollfix>
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+
1611
+ <li class="md-nav__item">
1612
+ <a href="../../configuration/loading.html" class="md-nav__link">
1613
+
1614
+
1615
+
1616
+ <span class="md-ellipsis">
1617
+
1618
+
1619
+ Loading Configuration
1620
+
1621
+
1622
+
1623
+ </span>
1624
+
1625
+
1626
+
1627
+ </a>
1628
+ </li>
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+ <li class="md-nav__item">
1640
+ <a href="../../configuration/mixins.html" class="md-nav__link">
1641
+
1642
+
1643
+
1644
+ <span class="md-ellipsis">
1645
+
1646
+
1647
+ Mixins
1648
+
1649
+
1650
+
1651
+ </span>
1652
+
1653
+
1654
+
1655
+ </a>
1656
+ </li>
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+
1667
+ <li class="md-nav__item">
1668
+ <a href="../../configuration/project-file.html" class="md-nav__link">
1669
+
1670
+
1671
+
1672
+ <span class="md-ellipsis">
1673
+
1674
+
1675
+ Project File Basics
1676
+
1677
+
1678
+
1679
+ </span>
1680
+
1681
+
1682
+
1683
+ </a>
1684
+ </li>
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+
1695
+ <li class="md-nav__item">
1696
+ <a href="../../configuration/parallel-builds.html" class="md-nav__link">
1697
+
1698
+
1699
+
1700
+ <span class="md-ellipsis">
1701
+
1702
+
1703
+ Parallel Builds
1704
+
1705
+
1706
+
1707
+ </span>
1708
+
1709
+
1710
+
1711
+ </a>
1712
+ </li>
1713
+
1714
+
1715
+
1716
+
1717
+
1718
+
1719
+
1720
+
1721
+
1722
+
1723
+ <li class="md-nav__item">
1724
+ <a href="../../configuration/environment-vars.html" class="md-nav__link">
1725
+
1726
+
1727
+
1728
+ <span class="md-ellipsis">
1729
+
1730
+
1731
+ Environment Variables
1732
+
1733
+
1734
+
1735
+ </span>
1736
+
1737
+
1738
+
1739
+ </a>
1740
+ </li>
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+
1751
+ <li class="md-nav__item">
1752
+ <a href="../../configuration/which-ceedling.html" class="md-nav__link">
1753
+
1754
+
1755
+
1756
+ <span class="md-ellipsis">
1757
+
1758
+
1759
+ Which Ceedling
1760
+
1761
+
1762
+
1763
+ </span>
1764
+
1765
+
1766
+
1767
+ </a>
1768
+ </li>
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+ <li class="md-nav__item">
1780
+ <a href="../../configuration/global-collections.html" class="md-nav__link">
1781
+
1782
+
1783
+
1784
+ <span class="md-ellipsis">
1785
+
1786
+
1787
+ Global Collections
1788
+
1789
+
1790
+
1791
+ </span>
1792
+
1793
+
1794
+
1795
+ </a>
1796
+ </li>
1797
+
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+
1804
+
1805
+
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+
1813
+
1814
+
1815
+
1816
+
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+
1834
+
1835
+
1836
+
1837
+
1838
+
1839
+
1840
+
1841
+
1842
+
1843
+
1844
+
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+ <li class="md-nav__item md-nav__item--nested">
1860
+
1861
+
1862
+
1863
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_9" >
1864
+
1865
+
1866
+ <div class="md-nav__link md-nav__container">
1867
+ <a href="../../configuration/reference/index.html" class="md-nav__link ">
1868
+
1869
+
1870
+
1871
+ <span class="md-ellipsis">
1872
+
1873
+
1874
+ Configuration Reference
1875
+
1876
+
1877
+
1878
+ </span>
1879
+
1880
+
1881
+
1882
+ </a>
1883
+
1884
+
1885
+ <label class="md-nav__link " for="__nav_5_9" id="__nav_5_9_label" tabindex="0">
1886
+ <span class="md-nav__icon md-icon"></span>
1887
+ </label>
1888
+
1889
+ </div>
1890
+
1891
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_9_label" aria-expanded="false">
1892
+ <label class="md-nav__title" for="__nav_5_9">
1893
+ <span class="md-nav__icon md-icon"></span>
1894
+
1895
+
1896
+ Configuration Reference
1897
+
1898
+
1899
+ </label>
1900
+ <ul class="md-nav__list" data-md-scrollfix>
1901
+
1902
+
1903
+
1904
+
1905
+
1906
+
1907
+
1908
+
1909
+
1910
+ <li class="md-nav__item">
1911
+ <a href="../../configuration/reference/project.html" class="md-nav__link">
1912
+
1913
+
1914
+
1915
+ <span class="md-ellipsis">
1916
+
1917
+
1918
+ Global Project Settings
1919
+
1920
+
1921
+
1922
+ </span>
1923
+
1924
+
1925
+
1926
+ </a>
1927
+ </li>
1928
+
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+ <li class="md-nav__item">
1939
+ <a href="../../configuration/reference/mixins.html" class="md-nav__link">
1940
+
1941
+
1942
+
1943
+ <span class="md-ellipsis">
1944
+
1945
+
1946
+ Mixins
1947
+
1948
+
1949
+
1950
+ </span>
1951
+
1952
+
1953
+
1954
+ </a>
1955
+ </li>
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+
1965
+
1966
+ <li class="md-nav__item">
1967
+ <a href="../../configuration/reference/test-build.html" class="md-nav__link">
1968
+
1969
+
1970
+
1971
+ <span class="md-ellipsis">
1972
+
1973
+
1974
+ Test Build Settings
1975
+
1976
+
1977
+
1978
+ </span>
1979
+
1980
+
1981
+
1982
+ </a>
1983
+ </li>
1984
+
1985
+
1986
+
1987
+
1988
+
1989
+
1990
+
1991
+
1992
+
1993
+
1994
+ <li class="md-nav__item">
1995
+ <a href="../../configuration/reference/partials.html" class="md-nav__link">
1996
+
1997
+
1998
+
1999
+ <span class="md-ellipsis">
2000
+
2001
+
2002
+ Partials Settings
2003
+
2004
+
2005
+
2006
+ </span>
2007
+
2008
+
2009
+
2010
+ </a>
2011
+ </li>
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+
2020
+
2021
+
2022
+ <li class="md-nav__item">
2023
+ <a href="../../configuration/reference/release-build.html" class="md-nav__link">
2024
+
2025
+
2026
+
2027
+ <span class="md-ellipsis">
2028
+
2029
+
2030
+ Release Build Settings
2031
+
2032
+
2033
+
2034
+ </span>
2035
+
2036
+
2037
+
2038
+ </a>
2039
+ </li>
2040
+
2041
+
2042
+
2043
+
2044
+
2045
+
2046
+
2047
+
2048
+
2049
+
2050
+ <li class="md-nav__item">
2051
+ <a href="../../configuration/reference/paths.html" class="md-nav__link">
2052
+
2053
+
2054
+
2055
+ <span class="md-ellipsis">
2056
+
2057
+
2058
+ Search Paths
2059
+
2060
+
2061
+
2062
+ </span>
2063
+
2064
+
2065
+
2066
+ </a>
2067
+ </li>
2068
+
2069
+
2070
+
2071
+
2072
+
2073
+
2074
+
2075
+
2076
+
2077
+
2078
+ <li class="md-nav__item">
2079
+ <a href="../../configuration/reference/files.html" class="md-nav__link">
2080
+
2081
+
2082
+
2083
+ <span class="md-ellipsis">
2084
+
2085
+
2086
+ File Collections
2087
+
2088
+
2089
+
2090
+ </span>
2091
+
2092
+
2093
+
2094
+ </a>
2095
+ </li>
2096
+
2097
+
2098
+
2099
+
2100
+
2101
+
2102
+
2103
+
2104
+
2105
+
2106
+ <li class="md-nav__item">
2107
+ <a href="../../configuration/reference/environment.html" class="md-nav__link">
2108
+
2109
+
2110
+
2111
+ <span class="md-ellipsis">
2112
+
2113
+
2114
+ Environment Variables
2115
+
2116
+
2117
+
2118
+ </span>
2119
+
2120
+
2121
+
2122
+ </a>
2123
+ </li>
2124
+
2125
+
2126
+
2127
+
2128
+
2129
+
2130
+
2131
+
2132
+
2133
+
2134
+ <li class="md-nav__item">
2135
+ <a href="../../configuration/reference/extension.html" class="md-nav__link">
2136
+
2137
+
2138
+
2139
+ <span class="md-ellipsis">
2140
+
2141
+
2142
+ File Extensions
2143
+
2144
+
2145
+
2146
+ </span>
2147
+
2148
+
2149
+
2150
+ </a>
2151
+ </li>
2152
+
2153
+
2154
+
2155
+
2156
+
2157
+
2158
+
2159
+
2160
+
2161
+
2162
+ <li class="md-nav__item">
2163
+ <a href="../../configuration/reference/defines.html" class="md-nav__link">
2164
+
2165
+
2166
+
2167
+ <span class="md-ellipsis">
2168
+
2169
+
2170
+ Defines
2171
+
2172
+
2173
+
2174
+ </span>
2175
+
2176
+
2177
+
2178
+ </a>
2179
+ </li>
2180
+
2181
+
2182
+
2183
+
2184
+
2185
+
2186
+
2187
+
2188
+
2189
+
2190
+ <li class="md-nav__item">
2191
+ <a href="../../configuration/reference/flags.html" class="md-nav__link">
2192
+
2193
+
2194
+
2195
+ <span class="md-ellipsis">
2196
+
2197
+
2198
+ Compilation & Link Flags
2199
+
2200
+
2201
+
2202
+ </span>
2203
+
2204
+
2205
+
2206
+ </a>
2207
+ </li>
2208
+
2209
+
2210
+
2211
+
2212
+
2213
+
2214
+
2215
+
2216
+
2217
+
2218
+ <li class="md-nav__item">
2219
+ <a href="../../configuration/reference/libraries.html" class="md-nav__link">
2220
+
2221
+
2222
+
2223
+ <span class="md-ellipsis">
2224
+
2225
+
2226
+ Libraries
2227
+
2228
+
2229
+
2230
+ </span>
2231
+
2232
+
2233
+
2234
+ </a>
2235
+ </li>
2236
+
2237
+
2238
+
2239
+
2240
+
2241
+
2242
+
2243
+
2244
+
2245
+
2246
+ <li class="md-nav__item">
2247
+ <a href="../../configuration/reference/unity.html" class="md-nav__link">
2248
+
2249
+
2250
+
2251
+ <span class="md-ellipsis">
2252
+
2253
+
2254
+ Unity
2255
+
2256
+
2257
+
2258
+ </span>
2259
+
2260
+
2261
+
2262
+ </a>
2263
+ </li>
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+
2274
+ <li class="md-nav__item">
2275
+ <a href="../../configuration/reference/cmock.html" class="md-nav__link">
2276
+
2277
+
2278
+
2279
+ <span class="md-ellipsis">
2280
+
2281
+
2282
+ CMock
2283
+
2284
+
2285
+
2286
+ </span>
2287
+
2288
+
2289
+
2290
+ </a>
2291
+ </li>
2292
+
2293
+
2294
+
2295
+
2296
+
2297
+
2298
+
2299
+
2300
+
2301
+
2302
+ <li class="md-nav__item">
2303
+ <a href="../../configuration/reference/test-runner.html" class="md-nav__link">
2304
+
2305
+
2306
+
2307
+ <span class="md-ellipsis">
2308
+
2309
+
2310
+ Test Runner
2311
+
2312
+
2313
+
2314
+ </span>
2315
+
2316
+
2317
+
2318
+ </a>
2319
+ </li>
2320
+
2321
+
2322
+
2323
+
2324
+
2325
+
2326
+
2327
+
2328
+
2329
+
2330
+ <li class="md-nav__item">
2331
+ <a href="../../configuration/reference/cexception.html" class="md-nav__link">
2332
+
2333
+
2334
+
2335
+ <span class="md-ellipsis">
2336
+
2337
+
2338
+ CException
2339
+
2340
+
2341
+
2342
+ </span>
2343
+
2344
+
2345
+
2346
+ </a>
2347
+ </li>
2348
+
2349
+
2350
+
2351
+
2352
+
2353
+
2354
+
2355
+
2356
+
2357
+
2358
+ <li class="md-nav__item">
2359
+ <a href="../../configuration/reference/plugins.html" class="md-nav__link">
2360
+
2361
+
2362
+
2363
+ <span class="md-ellipsis">
2364
+
2365
+
2366
+ Plugins
2367
+
2368
+
2369
+
2370
+ </span>
2371
+
2372
+
2373
+
2374
+ </a>
2375
+ </li>
2376
+
2377
+
2378
+
2379
+
2380
+
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+ <li class="md-nav__item">
2387
+ <a href="../../configuration/reference/tools.html" class="md-nav__link">
2388
+
2389
+
2390
+
2391
+ <span class="md-ellipsis">
2392
+
2393
+
2394
+ Tools
2395
+
2396
+
2397
+
2398
+ </span>
2399
+
2400
+
2401
+
2402
+ </a>
2403
+ </li>
2404
+
2405
+
2406
+
2407
+
2408
+ </ul>
2409
+ </nav>
2410
+
2411
+ </li>
2412
+
2413
+
2414
+
2415
+
2416
+ </ul>
2417
+ </nav>
2418
+
2419
+ </li>
2420
+
2421
+
2422
+
2423
+
2424
+
2425
+
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+
2432
+
2433
+
2434
+
2435
+
2436
+
2437
+
2438
+
2439
+
2440
+
2441
+
2442
+
2443
+
2444
+
2445
+
2446
+
2447
+
2448
+
2449
+
2450
+
2451
+
2452
+
2453
+
2454
+
2455
+
2456
+
2457
+
2458
+
2459
+
2460
+
2461
+
2462
+
2463
+
2464
+
2465
+
2466
+
2467
+
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+
2481
+
2482
+
2483
+
2484
+
2485
+
2486
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
2487
+
2488
+
2489
+
2490
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" checked>
2491
+
2492
+
2493
+ <div class="md-nav__link md-nav__container">
2494
+ <a href="../index.html" class="md-nav__link ">
2495
+
2496
+
2497
+
2498
+ <span class="md-ellipsis">
2499
+
2500
+
2501
+ Plugins
2502
+
2503
+
2504
+
2505
+ </span>
2506
+
2507
+
2508
+
2509
+ </a>
2510
+
2511
+
2512
+ <label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
2513
+ <span class="md-nav__icon md-icon"></span>
2514
+ </label>
2515
+
2516
+ </div>
2517
+
2518
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="true">
2519
+ <label class="md-nav__title" for="__nav_6">
2520
+ <span class="md-nav__icon md-icon"></span>
2521
+
2522
+
2523
+ Plugins
2524
+
2525
+
2526
+ </label>
2527
+ <ul class="md-nav__list" data-md-scrollfix>
2528
+
2529
+
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+
2536
+
2537
+ <li class="md-nav__item">
2538
+ <a href="../report-tests-pretty-stdout.html" class="md-nav__link">
2539
+
2540
+
2541
+
2542
+ <span class="md-ellipsis">
2543
+
2544
+
2545
+ Test Report — Pretty
2546
+
2547
+
2548
+
2549
+ </span>
2550
+
2551
+
2552
+
2553
+ </a>
2554
+ </li>
2555
+
2556
+
2557
+
2558
+
2559
+
2560
+
2561
+
2562
+
2563
+
2564
+
2565
+ <li class="md-nav__item">
2566
+ <a href="../report-tests-ide-stdout.html" class="md-nav__link">
2567
+
2568
+
2569
+
2570
+ <span class="md-ellipsis">
2571
+
2572
+
2573
+ Test Report — IDE
2574
+
2575
+
2576
+
2577
+ </span>
2578
+
2579
+
2580
+
2581
+ </a>
2582
+ </li>
2583
+
2584
+
2585
+
2586
+
2587
+
2588
+
2589
+
2590
+
2591
+
2592
+
2593
+ <li class="md-nav__item">
2594
+ <a href="../report-tests-gtestlike-stdout.html" class="md-nav__link">
2595
+
2596
+
2597
+
2598
+ <span class="md-ellipsis">
2599
+
2600
+
2601
+ Test Report — GTest-like
2602
+
2603
+
2604
+
2605
+ </span>
2606
+
2607
+
2608
+
2609
+ </a>
2610
+ </li>
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+
2620
+
2621
+ <li class="md-nav__item">
2622
+ <a href="../report-tests-teamcity-stdout.html" class="md-nav__link">
2623
+
2624
+
2625
+
2626
+ <span class="md-ellipsis">
2627
+
2628
+
2629
+ Test Report — TeamCity
2630
+
2631
+
2632
+
2633
+ </span>
2634
+
2635
+
2636
+
2637
+ </a>
2638
+ </li>
2639
+
2640
+
2641
+
2642
+
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+
2649
+ <li class="md-nav__item">
2650
+ <a href="../report-tests-log-factory.html" class="md-nav__link">
2651
+
2652
+
2653
+
2654
+ <span class="md-ellipsis">
2655
+
2656
+
2657
+ Test Report Log Factory
2658
+
2659
+
2660
+
2661
+ </span>
2662
+
2663
+
2664
+
2665
+ </a>
2666
+ </li>
2667
+
2668
+
2669
+
2670
+
2671
+
2672
+
2673
+
2674
+
2675
+
2676
+
2677
+ <li class="md-nav__item">
2678
+ <a href="../report-tests-raw-output-log.html" class="md-nav__link">
2679
+
2680
+
2681
+
2682
+ <span class="md-ellipsis">
2683
+
2684
+
2685
+ Test Report — Raw Output
2686
+
2687
+
2688
+
2689
+ </span>
2690
+
2691
+
2692
+
2693
+ </a>
2694
+ </li>
2695
+
2696
+
2697
+
2698
+
2699
+
2700
+
2701
+
2702
+
2703
+
2704
+
2705
+ <li class="md-nav__item">
2706
+ <a href="../report-build-warnings-log.html" class="md-nav__link">
2707
+
2708
+
2709
+
2710
+ <span class="md-ellipsis">
2711
+
2712
+
2713
+ Build Warnings Log
2714
+
2715
+
2716
+
2717
+ </span>
2718
+
2719
+
2720
+
2721
+ </a>
2722
+ </li>
2723
+
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+
2734
+
2735
+
2736
+
2737
+
2738
+
2739
+
2740
+
2741
+
2742
+
2743
+
2744
+
2745
+
2746
+
2747
+
2748
+
2749
+
2750
+
2751
+
2752
+
2753
+
2754
+
2755
+
2756
+
2757
+
2758
+
2759
+
2760
+
2761
+
2762
+
2763
+
2764
+
2765
+
2766
+
2767
+
2768
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
2769
+
2770
+
2771
+
2772
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_9" >
2773
+
2774
+
2775
+ <div class="md-nav__link md-nav__container">
2776
+ <a href="../gcov/index.html" class="md-nav__link ">
2777
+
2778
+
2779
+
2780
+ <span class="md-ellipsis">
2781
+
2782
+
2783
+ GCov (Coverage)
2784
+
2785
+
2786
+
2787
+ </span>
2788
+
2789
+
2790
+
2791
+ </a>
2792
+
2793
+
2794
+ <label class="md-nav__link " for="__nav_6_9" id="__nav_6_9_label" tabindex="">
2795
+ <span class="md-nav__icon md-icon"></span>
2796
+ </label>
2797
+
2798
+ </div>
2799
+
2800
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_9_label" aria-expanded="false">
2801
+ <label class="md-nav__title" for="__nav_6_9">
2802
+ <span class="md-nav__icon md-icon"></span>
2803
+
2804
+
2805
+ GCov (Coverage)
2806
+
2807
+
2808
+ </label>
2809
+ <ul class="md-nav__list" data-md-scrollfix>
2810
+
2811
+
2812
+
2813
+
2814
+
2815
+
2816
+
2817
+
2818
+
2819
+ <li class="md-nav__item">
2820
+ <a href="../gcov/overview.html" class="md-nav__link">
2821
+
2822
+
2823
+
2824
+ <span class="md-ellipsis">
2825
+
2826
+
2827
+ Overview
2828
+
2829
+
2830
+
2831
+ </span>
2832
+
2833
+
2834
+
2835
+ </a>
2836
+ </li>
2837
+
2838
+
2839
+
2840
+
2841
+
2842
+
2843
+
2844
+
2845
+
2846
+
2847
+ <li class="md-nav__item">
2848
+ <a href="../gcov/tool-versions.html" class="md-nav__link">
2849
+
2850
+
2851
+
2852
+ <span class="md-ellipsis">
2853
+
2854
+
2855
+ Tool Versions
2856
+
2857
+
2858
+
2859
+ </span>
2860
+
2861
+
2862
+
2863
+ </a>
2864
+ </li>
2865
+
2866
+
2867
+
2868
+
2869
+
2870
+
2871
+
2872
+
2873
+
2874
+
2875
+ <li class="md-nav__item">
2876
+ <a href="../gcov/setup.html" class="md-nav__link">
2877
+
2878
+
2879
+
2880
+ <span class="md-ellipsis">
2881
+
2882
+
2883
+ Set Up & Configuration
2884
+
2885
+
2886
+
2887
+ </span>
2888
+
2889
+
2890
+
2891
+ </a>
2892
+ </li>
2893
+
2894
+
2895
+
2896
+
2897
+
2898
+
2899
+
2900
+
2901
+
2902
+
2903
+ <li class="md-nav__item">
2904
+ <a href="../gcov/examples.html" class="md-nav__link">
2905
+
2906
+
2907
+
2908
+ <span class="md-ellipsis">
2909
+
2910
+
2911
+ Example Usage
2912
+
2913
+
2914
+
2915
+ </span>
2916
+
2917
+
2918
+
2919
+ </a>
2920
+ </li>
2921
+
2922
+
2923
+
2924
+
2925
+
2926
+
2927
+
2928
+
2929
+
2930
+
2931
+ <li class="md-nav__item">
2932
+ <a href="../gcov/reporting.html" class="md-nav__link">
2933
+
2934
+
2935
+
2936
+ <span class="md-ellipsis">
2937
+
2938
+
2939
+ Reporting Configuration
2940
+
2941
+
2942
+
2943
+ </span>
2944
+
2945
+
2946
+
2947
+ </a>
2948
+ </li>
2949
+
2950
+
2951
+
2952
+
2953
+
2954
+
2955
+
2956
+
2957
+
2958
+
2959
+ <li class="md-nav__item">
2960
+ <a href="../gcov/gcovr.html" class="md-nav__link">
2961
+
2962
+
2963
+
2964
+ <span class="md-ellipsis">
2965
+
2966
+
2967
+ GCovr Configuration
2968
+
2969
+
2970
+
2971
+ </span>
2972
+
2973
+
2974
+
2975
+ </a>
2976
+ </li>
2977
+
2978
+
2979
+
2980
+
2981
+
2982
+
2983
+
2984
+
2985
+
2986
+
2987
+ <li class="md-nav__item">
2988
+ <a href="../gcov/reportgenerator.html" class="md-nav__link">
2989
+
2990
+
2991
+
2992
+ <span class="md-ellipsis">
2993
+
2994
+
2995
+ ReportGenerator Configuration
2996
+
2997
+
2998
+
2999
+ </span>
3000
+
3001
+
3002
+
3003
+ </a>
3004
+ </li>
3005
+
3006
+
3007
+
3008
+
3009
+
3010
+
3011
+
3012
+
3013
+
3014
+
3015
+ <li class="md-nav__item">
3016
+ <a href="../gcov/troubleshooting.html" class="md-nav__link">
3017
+
3018
+
3019
+
3020
+ <span class="md-ellipsis">
3021
+
3022
+
3023
+ Advanced & Troubleshooting
3024
+
3025
+
3026
+
3027
+ </span>
3028
+
3029
+
3030
+
3031
+ </a>
3032
+ </li>
3033
+
3034
+
3035
+
3036
+
3037
+ </ul>
3038
+ </nav>
3039
+
3040
+ </li>
3041
+
3042
+
3043
+
3044
+
3045
+
3046
+
3047
+
3048
+
3049
+
3050
+
3051
+ <li class="md-nav__item">
3052
+ <a href="../cppcheck.html" class="md-nav__link">
3053
+
3054
+
3055
+
3056
+ <span class="md-ellipsis">
3057
+
3058
+
3059
+ Cppcheck (Static Analysis)
3060
+
3061
+
3062
+
3063
+ </span>
3064
+
3065
+
3066
+
3067
+ </a>
3068
+ </li>
3069
+
3070
+
3071
+
3072
+
3073
+
3074
+
3075
+
3076
+
3077
+
3078
+
3079
+ <li class="md-nav__item">
3080
+ <a href="../valgrind.html" class="md-nav__link">
3081
+
3082
+
3083
+
3084
+ <span class="md-ellipsis">
3085
+
3086
+
3087
+ Valgrind (Memory Analysis)
3088
+
3089
+
3090
+
3091
+ </span>
3092
+
3093
+
3094
+
3095
+ </a>
3096
+ </li>
3097
+
3098
+
3099
+
3100
+
3101
+
3102
+
3103
+
3104
+
3105
+
3106
+
3107
+ <li class="md-nav__item">
3108
+ <a href="../sanitize.html" class="md-nav__link">
3109
+
3110
+
3111
+
3112
+ <span class="md-ellipsis">
3113
+
3114
+
3115
+ Sanitize (ASan, UBSan & Leaks)
3116
+
3117
+
3118
+
3119
+ </span>
3120
+
3121
+
3122
+
3123
+ </a>
3124
+ </li>
3125
+
3126
+
3127
+
3128
+
3129
+
3130
+
3131
+
3132
+
3133
+
3134
+
3135
+
3136
+
3137
+
3138
+
3139
+
3140
+
3141
+
3142
+
3143
+
3144
+
3145
+
3146
+
3147
+
3148
+
3149
+
3150
+
3151
+
3152
+
3153
+
3154
+
3155
+
3156
+
3157
+
3158
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
3159
+
3160
+
3161
+
3162
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_13" checked>
3163
+
3164
+
3165
+ <div class="md-nav__link md-nav__container">
3166
+ <a href="index.html" class="md-nav__link md-nav__link--active">
3167
+
3168
+
3169
+
3170
+ <span class="md-ellipsis">
3171
+
3172
+
3173
+ Bullseye (Coverage)
3174
+
3175
+
3176
+
3177
+ </span>
3178
+
3179
+
3180
+
3181
+ </a>
3182
+
3183
+
3184
+ <label class="md-nav__link md-nav__link--active" for="__nav_6_13" id="__nav_6_13_label" tabindex="">
3185
+ <span class="md-nav__icon md-icon"></span>
3186
+ </label>
3187
+
3188
+ </div>
3189
+
3190
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_13_label" aria-expanded="true">
3191
+ <label class="md-nav__title" for="__nav_6_13">
3192
+ <span class="md-nav__icon md-icon"></span>
3193
+
3194
+
3195
+ Bullseye (Coverage)
3196
+
3197
+
3198
+ </label>
3199
+ <ul class="md-nav__list" data-md-scrollfix>
3200
+
3201
+
3202
+
3203
+
3204
+
3205
+
3206
+
3207
+
3208
+
3209
+ <li class="md-nav__item">
3210
+ <a href="licensing.html" class="md-nav__link">
3211
+
3212
+
3213
+
3214
+ <span class="md-ellipsis">
3215
+
3216
+
3217
+ Licensing
3218
+
3219
+
3220
+
3221
+ </span>
3222
+
3223
+
3224
+
3225
+ </a>
3226
+ </li>
3227
+
3228
+
3229
+
3230
+
3231
+ </ul>
3232
+ </nav>
3233
+
3234
+ </li>
3235
+
3236
+
3237
+
3238
+
3239
+
3240
+
3241
+
3242
+
3243
+
3244
+
3245
+ <li class="md-nav__item">
3246
+ <a href="../fff.html" class="md-nav__link">
3247
+
3248
+
3249
+
3250
+ <span class="md-ellipsis">
3251
+
3252
+
3253
+ FFF (Fake Functions)
3254
+
3255
+
3256
+
3257
+ </span>
3258
+
3259
+
3260
+
3261
+ </a>
3262
+ </li>
3263
+
3264
+
3265
+
3266
+
3267
+
3268
+
3269
+
3270
+
3271
+
3272
+
3273
+ <li class="md-nav__item">
3274
+ <a href="../command-hooks.html" class="md-nav__link">
3275
+
3276
+
3277
+
3278
+ <span class="md-ellipsis">
3279
+
3280
+
3281
+ Command Hooks
3282
+
3283
+
3284
+
3285
+ </span>
3286
+
3287
+
3288
+
3289
+ </a>
3290
+ </li>
3291
+
3292
+
3293
+
3294
+
3295
+
3296
+
3297
+
3298
+
3299
+
3300
+
3301
+ <li class="md-nav__item">
3302
+ <a href="../compile-commands-json-db.html" class="md-nav__link">
3303
+
3304
+
3305
+
3306
+ <span class="md-ellipsis">
3307
+
3308
+
3309
+ Compile Commands JSON DB
3310
+
3311
+
3312
+
3313
+ </span>
3314
+
3315
+
3316
+
3317
+ </a>
3318
+ </li>
3319
+
3320
+
3321
+
3322
+
3323
+
3324
+
3325
+
3326
+
3327
+
3328
+
3329
+ <li class="md-nav__item">
3330
+ <a href="../beep.html" class="md-nav__link">
3331
+
3332
+
3333
+
3334
+ <span class="md-ellipsis">
3335
+
3336
+
3337
+ Beep
3338
+
3339
+
3340
+
3341
+ </span>
3342
+
3343
+
3344
+
3345
+ </a>
3346
+ </li>
3347
+
3348
+
3349
+
3350
+
3351
+
3352
+
3353
+
3354
+
3355
+
3356
+
3357
+ <li class="md-nav__item">
3358
+ <a href="../module-generator.html" class="md-nav__link">
3359
+
3360
+
3361
+
3362
+ <span class="md-ellipsis">
3363
+
3364
+
3365
+ Module Generator
3366
+
3367
+
3368
+
3369
+ </span>
3370
+
3371
+
3372
+
3373
+ </a>
3374
+ </li>
3375
+
3376
+
3377
+
3378
+
3379
+
3380
+
3381
+
3382
+
3383
+
3384
+
3385
+ <li class="md-nav__item">
3386
+ <a href="../dependencies.html" class="md-nav__link">
3387
+
3388
+
3389
+
3390
+ <span class="md-ellipsis">
3391
+
3392
+
3393
+ Dependencies
3394
+
3395
+
3396
+
3397
+ </span>
3398
+
3399
+
3400
+
3401
+ </a>
3402
+ </li>
3403
+
3404
+
3405
+
3406
+
3407
+ </ul>
3408
+ </nav>
3409
+
3410
+ </li>
3411
+
3412
+
3413
+
3414
+
3415
+
3416
+
3417
+
3418
+
3419
+
3420
+
3421
+
3422
+
3423
+
3424
+
3425
+
3426
+
3427
+
3428
+
3429
+
3430
+
3431
+
3432
+
3433
+
3434
+
3435
+
3436
+
3437
+
3438
+
3439
+
3440
+
3441
+
3442
+
3443
+
3444
+
3445
+
3446
+
3447
+
3448
+
3449
+
3450
+ <li class="md-nav__item md-nav__item--nested">
3451
+
3452
+
3453
+
3454
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
3455
+
3456
+
3457
+ <div class="md-nav__link md-nav__container">
3458
+ <a href="../../reference/index.html" class="md-nav__link ">
3459
+
3460
+
3461
+
3462
+ <span class="md-ellipsis">
3463
+
3464
+
3465
+ Reference
3466
+
3467
+
3468
+
3469
+ </span>
3470
+
3471
+
3472
+
3473
+ </a>
3474
+
3475
+
3476
+ <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="0">
3477
+ <span class="md-nav__icon md-icon"></span>
3478
+ </label>
3479
+
3480
+ </div>
3481
+
3482
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
3483
+ <label class="md-nav__title" for="__nav_7">
3484
+ <span class="md-nav__icon md-icon"></span>
3485
+
3486
+
3487
+ Reference
3488
+
3489
+
3490
+ </label>
3491
+ <ul class="md-nav__list" data-md-scrollfix>
3492
+
3493
+
3494
+
3495
+
3496
+
3497
+
3498
+
3499
+
3500
+
3501
+ <li class="md-nav__item">
3502
+ <a href="../../reference/command-line.html" class="md-nav__link">
3503
+
3504
+
3505
+
3506
+ <span class="md-ellipsis">
3507
+
3508
+
3509
+ Command Line
3510
+
3511
+
3512
+
3513
+ </span>
3514
+
3515
+
3516
+
3517
+ </a>
3518
+ </li>
3519
+
3520
+
3521
+
3522
+
3523
+
3524
+
3525
+
3526
+
3527
+
3528
+
3529
+ <li class="md-nav__item">
3530
+ <a href="../../reference/project-configuration.html" class="md-nav__link">
3531
+
3532
+
3533
+
3534
+ <span class="md-ellipsis">
3535
+
3536
+
3537
+ Project Configuration
3538
+
3539
+
3540
+
3541
+ </span>
3542
+
3543
+
3544
+
3545
+ </a>
3546
+ </li>
3547
+
3548
+
3549
+
3550
+
3551
+
3552
+
3553
+
3554
+
3555
+
3556
+
3557
+ <li class="md-nav__item">
3558
+ <a href="../../reference/build-directives.html" class="md-nav__link">
3559
+
3560
+
3561
+
3562
+ <span class="md-ellipsis">
3563
+
3564
+
3565
+ Test Build Directives
3566
+
3567
+
3568
+
3569
+ </span>
3570
+
3571
+
3572
+
3573
+ </a>
3574
+ </li>
3575
+
3576
+
3577
+
3578
+
3579
+
3580
+
3581
+
3582
+
3583
+
3584
+
3585
+ <li class="md-nav__item">
3586
+ <a href="../../reference/partials-macros.html" class="md-nav__link">
3587
+
3588
+
3589
+
3590
+ <span class="md-ellipsis">
3591
+
3592
+
3593
+ Partials Macros
3594
+
3595
+
3596
+
3597
+ </span>
3598
+
3599
+
3600
+
3601
+ </a>
3602
+ </li>
3603
+
3604
+
3605
+
3606
+
3607
+
3608
+
3609
+
3610
+
3611
+
3612
+
3613
+ <li class="md-nav__item">
3614
+ <a href="../../reference/environment-vars.html" class="md-nav__link">
3615
+
3616
+
3617
+
3618
+ <span class="md-ellipsis">
3619
+
3620
+
3621
+ Environment Variables
3622
+
3623
+
3624
+
3625
+ </span>
3626
+
3627
+
3628
+
3629
+ </a>
3630
+ </li>
3631
+
3632
+
3633
+
3634
+
3635
+
3636
+
3637
+
3638
+
3639
+
3640
+
3641
+ <li class="md-nav__item">
3642
+ <a href="../../reference/gcov-plugin.html" class="md-nav__link">
3643
+
3644
+
3645
+
3646
+ <span class="md-ellipsis">
3647
+
3648
+
3649
+ Coverage Reporting
3650
+
3651
+
3652
+
3653
+ </span>
3654
+
3655
+
3656
+
3657
+ </a>
3658
+ </li>
3659
+
3660
+
3661
+
3662
+
3663
+
3664
+
3665
+
3666
+
3667
+
3668
+
3669
+ <li class="md-nav__item">
3670
+ <a href="../../reference/global-collections.html" class="md-nav__link">
3671
+
3672
+
3673
+
3674
+ <span class="md-ellipsis">
3675
+
3676
+
3677
+ Global Collections
3678
+
3679
+
3680
+
3681
+ </span>
3682
+
3683
+
3684
+
3685
+ </a>
3686
+ </li>
3687
+
3688
+
3689
+
3690
+
3691
+ </ul>
3692
+ </nav>
3693
+
3694
+ </li>
3695
+
3696
+
3697
+
3698
+
3699
+
3700
+
3701
+
3702
+
3703
+
3704
+
3705
+
3706
+
3707
+
3708
+
3709
+
3710
+
3711
+
3712
+
3713
+
3714
+
3715
+
3716
+
3717
+
3718
+
3719
+
3720
+
3721
+
3722
+
3723
+
3724
+
3725
+
3726
+ <li class="md-nav__item md-nav__item--nested">
3727
+
3728
+
3729
+
3730
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
3731
+
3732
+
3733
+ <div class="md-nav__link md-nav__container">
3734
+ <a href="../../project/index.html" class="md-nav__link ">
3735
+
3736
+
3737
+
3738
+ <span class="md-ellipsis">
3739
+
3740
+
3741
+ Releases
3742
+
3743
+
3744
+
3745
+ </span>
3746
+
3747
+
3748
+
3749
+ </a>
3750
+
3751
+
3752
+ <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0">
3753
+ <span class="md-nav__icon md-icon"></span>
3754
+ </label>
3755
+
3756
+ </div>
3757
+
3758
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
3759
+ <label class="md-nav__title" for="__nav_8">
3760
+ <span class="md-nav__icon md-icon"></span>
3761
+
3762
+
3763
+ Releases
3764
+
3765
+
3766
+ </label>
3767
+ <ul class="md-nav__list" data-md-scrollfix>
3768
+
3769
+
3770
+
3771
+
3772
+
3773
+
3774
+
3775
+
3776
+
3777
+ <li class="md-nav__item">
3778
+ <a href="../../project/release-history.html" class="md-nav__link">
3779
+
3780
+
3781
+
3782
+ <span class="md-ellipsis">
3783
+
3784
+
3785
+ History Documents
3786
+
3787
+
3788
+
3789
+ </span>
3790
+
3791
+
3792
+
3793
+ </a>
3794
+ </li>
3795
+
3796
+
3797
+
3798
+
3799
+
3800
+
3801
+
3802
+
3803
+
3804
+
3805
+ <li class="md-nav__item">
3806
+ <a href="../../project/sbom.html" class="md-nav__link">
3807
+
3808
+
3809
+
3810
+ <span class="md-ellipsis">
3811
+
3812
+
3813
+ Software Bill of Materials
3814
+
3815
+
3816
+
3817
+ </span>
3818
+
3819
+
3820
+
3821
+ </a>
3822
+ </li>
3823
+
3824
+
3825
+
3826
+
3827
+
3828
+
3829
+
3830
+
3831
+
3832
+
3833
+ <li class="md-nav__item">
3834
+ <a href="../../project/upgrade.html" class="md-nav__link">
3835
+
3836
+
3837
+
3838
+ <span class="md-ellipsis">
3839
+
3840
+
3841
+ Upgrading
3842
+
3843
+
3844
+
3845
+ </span>
3846
+
3847
+
3848
+
3849
+ </a>
3850
+ </li>
3851
+
3852
+
3853
+
3854
+
3855
+ </ul>
3856
+ </nav>
3857
+
3858
+ </li>
3859
+
3860
+
3861
+
3862
+
3863
+
3864
+
3865
+
3866
+
3867
+
3868
+ <li class="md-nav__item">
3869
+ <a href="../../help.html" class="md-nav__link">
3870
+
3871
+
3872
+
3873
+ <span class="md-ellipsis">
3874
+
3875
+
3876
+ Help
3877
+
3878
+
3879
+
3880
+ </span>
3881
+
3882
+
3883
+
3884
+ </a>
3885
+ </li>
3886
+
3887
+
3888
+
3889
+
3890
+
3891
+
3892
+
3893
+
3894
+
3895
+
3896
+
3897
+
3898
+
3899
+
3900
+
3901
+
3902
+
3903
+
3904
+
3905
+
3906
+
3907
+
3908
+
3909
+
3910
+
3911
+
3912
+
3913
+
3914
+
3915
+
3916
+
3917
+ <li class="md-nav__item md-nav__item--nested">
3918
+
3919
+
3920
+
3921
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
3922
+
3923
+
3924
+ <div class="md-nav__link md-nav__container">
3925
+ <a href="../../development/index.html" class="md-nav__link ">
3926
+
3927
+
3928
+
3929
+ <span class="md-ellipsis">
3930
+
3931
+
3932
+ Development
3933
+
3934
+
3935
+
3936
+ </span>
3937
+
3938
+
3939
+
3940
+ </a>
3941
+
3942
+
3943
+ <label class="md-nav__link " for="__nav_10" id="__nav_10_label" tabindex="0">
3944
+ <span class="md-nav__icon md-icon"></span>
3945
+ </label>
3946
+
3947
+ </div>
3948
+
3949
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
3950
+ <label class="md-nav__title" for="__nav_10">
3951
+ <span class="md-nav__icon md-icon"></span>
3952
+
3953
+
3954
+ Development
3955
+
3956
+
3957
+ </label>
3958
+ <ul class="md-nav__list" data-md-scrollfix>
3959
+
3960
+
3961
+
3962
+
3963
+
3964
+
3965
+
3966
+
3967
+
3968
+ <li class="md-nav__item">
3969
+ <a href="../../development/workflow.html" class="md-nav__link">
3970
+
3971
+
3972
+
3973
+ <span class="md-ellipsis">
3974
+
3975
+
3976
+ Development Workflow
3977
+
3978
+
3979
+
3980
+ </span>
3981
+
3982
+
3983
+
3984
+ </a>
3985
+ </li>
3986
+
3987
+
3988
+
3989
+
3990
+
3991
+
3992
+
3993
+
3994
+
3995
+
3996
+ <li class="md-nav__item">
3997
+ <a href="../../development/releases.html" class="md-nav__link">
3998
+
3999
+
4000
+
4001
+ <span class="md-ellipsis">
4002
+
4003
+
4004
+ Branching & Releases
4005
+
4006
+
4007
+
4008
+ </span>
4009
+
4010
+
4011
+
4012
+ </a>
4013
+ </li>
4014
+
4015
+
4016
+
4017
+
4018
+
4019
+
4020
+
4021
+
4022
+
4023
+
4024
+
4025
+
4026
+
4027
+
4028
+
4029
+
4030
+
4031
+
4032
+
4033
+
4034
+
4035
+
4036
+
4037
+
4038
+
4039
+
4040
+
4041
+
4042
+
4043
+
4044
+
4045
+
4046
+ <li class="md-nav__item md-nav__item--nested">
4047
+
4048
+
4049
+
4050
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_4" >
4051
+
4052
+
4053
+ <div class="md-nav__link md-nav__container">
4054
+ <a href="../../development/plugins/index.html" class="md-nav__link ">
4055
+
4056
+
4057
+
4058
+ <span class="md-ellipsis">
4059
+
4060
+
4061
+ Plugin Development
4062
+
4063
+
4064
+
4065
+ </span>
4066
+
4067
+
4068
+
4069
+ </a>
4070
+
4071
+
4072
+ <label class="md-nav__link " for="__nav_10_4" id="__nav_10_4_label" tabindex="0">
4073
+ <span class="md-nav__icon md-icon"></span>
4074
+ </label>
4075
+
4076
+ </div>
4077
+
4078
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_4_label" aria-expanded="false">
4079
+ <label class="md-nav__title" for="__nav_10_4">
4080
+ <span class="md-nav__icon md-icon"></span>
4081
+
4082
+
4083
+ Plugin Development
4084
+
4085
+
4086
+ </label>
4087
+ <ul class="md-nav__list" data-md-scrollfix>
4088
+
4089
+
4090
+
4091
+
4092
+
4093
+
4094
+
4095
+
4096
+
4097
+ <li class="md-nav__item">
4098
+ <a href="../../development/plugins/configuration.html" class="md-nav__link">
4099
+
4100
+
4101
+
4102
+ <span class="md-ellipsis">
4103
+
4104
+
4105
+ Configuration Plugin
4106
+
4107
+
4108
+
4109
+ </span>
4110
+
4111
+
4112
+
4113
+ </a>
4114
+ </li>
4115
+
4116
+
4117
+
4118
+
4119
+
4120
+
4121
+
4122
+
4123
+
4124
+
4125
+ <li class="md-nav__item">
4126
+ <a href="../../development/plugins/plugin-subclass.html" class="md-nav__link">
4127
+
4128
+
4129
+
4130
+ <span class="md-ellipsis">
4131
+
4132
+
4133
+ Plugin Subclass
4134
+
4135
+
4136
+
4137
+ </span>
4138
+
4139
+
4140
+
4141
+ </a>
4142
+ </li>
4143
+
4144
+
4145
+
4146
+
4147
+
4148
+
4149
+
4150
+
4151
+
4152
+
4153
+ <li class="md-nav__item">
4154
+ <a href="../../development/plugins/rake-tasks.html" class="md-nav__link">
4155
+
4156
+
4157
+
4158
+ <span class="md-ellipsis">
4159
+
4160
+
4161
+ Rake Task Plugin
4162
+
4163
+
4164
+
4165
+ </span>
4166
+
4167
+
4168
+
4169
+ </a>
4170
+ </li>
4171
+
4172
+
4173
+
4174
+
4175
+ </ul>
4176
+ </nav>
4177
+
4178
+ </li>
4179
+
4180
+
4181
+
4182
+
4183
+ </ul>
4184
+ </nav>
4185
+
4186
+ </li>
4187
+
4188
+
4189
+
4190
+ </ul>
4191
+ </nav>
4192
+ </div>
4193
+ </div>
4194
+ </div>
4195
+
4196
+
4197
+
4198
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
4199
+ <div class="md-sidebar__scrollwrap">
4200
+ <div class="md-sidebar__inner">
4201
+
4202
+
4203
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
4204
+
4205
+
4206
+
4207
+
4208
+
4209
+
4210
+ <label class="md-nav__title" for="__toc">
4211
+ <span class="md-nav__icon md-icon"></span>
4212
+ Table of contents
4213
+ </label>
4214
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
4215
+
4216
+ <li class="md-nav__item">
4217
+ <a href="#plugin-overview" class="md-nav__link">
4218
+ <span class="md-ellipsis">
4219
+
4220
+ Plugin overview
4221
+
4222
+ </span>
4223
+ </a>
4224
+
4225
+ <nav class="md-nav" aria-label="Plugin overview">
4226
+ <ul class="md-nav__list">
4227
+
4228
+ <li class="md-nav__item">
4229
+ <a href="#coverage-metric" class="md-nav__link">
4230
+ <span class="md-ellipsis">
4231
+
4232
+ Coverage metric
4233
+
4234
+ </span>
4235
+ </a>
4236
+
4237
+ </li>
4238
+
4239
+ <li class="md-nav__item">
4240
+ <a href="#the-coverage-data-file" class="md-nav__link">
4241
+ <span class="md-ellipsis">
4242
+
4243
+ The coverage data file
4244
+
4245
+ </span>
4246
+ </a>
4247
+
4248
+ </li>
4249
+
4250
+ <li class="md-nav__item">
4251
+ <a href="#supported-tool-versions" class="md-nav__link">
4252
+ <span class="md-ellipsis">
4253
+
4254
+ Supported tool versions
4255
+
4256
+ </span>
4257
+ </a>
4258
+
4259
+ </li>
4260
+
4261
+ </ul>
4262
+ </nav>
4263
+
4264
+ </li>
4265
+
4266
+ <li class="md-nav__item">
4267
+ <a href="#installation-and-set-up" class="md-nav__link">
4268
+ <span class="md-ellipsis">
4269
+
4270
+ Installation and set up
4271
+
4272
+ </span>
4273
+ </a>
4274
+
4275
+ <nav class="md-nav" aria-label="Installation and set up">
4276
+ <ul class="md-nav__list">
4277
+
4278
+ <li class="md-nav__item">
4279
+ <a href="#install-bullseye" class="md-nav__link">
4280
+ <span class="md-ellipsis">
4281
+
4282
+ Install Bullseye
4283
+
4284
+ </span>
4285
+ </a>
4286
+
4287
+ </li>
4288
+
4289
+ <li class="md-nav__item">
4290
+ <a href="#enable-the-plugin" class="md-nav__link">
4291
+ <span class="md-ellipsis">
4292
+
4293
+ Enable the plugin
4294
+
4295
+ </span>
4296
+ </a>
4297
+
4298
+ </li>
4299
+
4300
+ </ul>
4301
+ </nav>
4302
+
4303
+ </li>
4304
+
4305
+ <li class="md-nav__item">
4306
+ <a href="#configuration" class="md-nav__link">
4307
+ <span class="md-ellipsis">
4308
+
4309
+ Configuration
4310
+
4311
+ </span>
4312
+ </a>
4313
+
4314
+ <nav class="md-nav" aria-label="Configuration">
4315
+ <ul class="md-nav__list">
4316
+
4317
+ <li class="md-nav__item">
4318
+ <a href="#summaries" class="md-nav__link">
4319
+ <span class="md-ellipsis">
4320
+
4321
+ :summaries:
4322
+
4323
+ </span>
4324
+ </a>
4325
+
4326
+ </li>
4327
+
4328
+ <li class="md-nav__item">
4329
+ <a href="#untested_sources" class="md-nav__link">
4330
+ <span class="md-ellipsis">
4331
+
4332
+ :untested_sources:
4333
+
4334
+ </span>
4335
+ </a>
4336
+
4337
+ </li>
4338
+
4339
+ <li class="md-nav__item">
4340
+ <a href="#branch_detail" class="md-nav__link">
4341
+ <span class="md-ellipsis">
4342
+
4343
+ :branch_detail:
4344
+
4345
+ </span>
4346
+ </a>
4347
+
4348
+ </li>
4349
+
4350
+ <li class="md-nav__item">
4351
+ <a href="#xml_report" class="md-nav__link">
4352
+ <span class="md-ellipsis">
4353
+
4354
+ :xml_report:
4355
+
4356
+ </span>
4357
+ </a>
4358
+
4359
+ </li>
4360
+
4361
+ <li class="md-nav__item">
4362
+ <a href="#fail_under" class="md-nav__link">
4363
+ <span class="md-ellipsis">
4364
+
4365
+ :fail_under:
4366
+
4367
+ </span>
4368
+ </a>
4369
+
4370
+ </li>
4371
+
4372
+ <li class="md-nav__item">
4373
+ <a href="#report_task" class="md-nav__link">
4374
+ <span class="md-ellipsis">
4375
+
4376
+ :report_task:
4377
+
4378
+ </span>
4379
+ </a>
4380
+
4381
+ </li>
4382
+
4383
+ <li class="md-nav__item">
4384
+ <a href="#license_manager_file" class="md-nav__link">
4385
+ <span class="md-ellipsis">
4386
+
4387
+ :license_manager_file:
4388
+
4389
+ </span>
4390
+ </a>
4391
+
4392
+ </li>
4393
+
4394
+ </ul>
4395
+ </nav>
4396
+
4397
+ </li>
4398
+
4399
+ <li class="md-nav__item">
4400
+ <a href="#reporting" class="md-nav__link">
4401
+ <span class="md-ellipsis">
4402
+
4403
+ Reporting
4404
+
4405
+ </span>
4406
+ </a>
4407
+
4408
+ <nav class="md-nav" aria-label="Reporting">
4409
+ <ul class="md-nav__list">
4410
+
4411
+ <li class="md-nav__item">
4412
+ <a href="#console-summaries" class="md-nav__link">
4413
+ <span class="md-ellipsis">
4414
+
4415
+ Console summaries
4416
+
4417
+ </span>
4418
+ </a>
4419
+
4420
+ </li>
4421
+
4422
+ <li class="md-nav__item">
4423
+ <a href="#branch-coverage-detail" class="md-nav__link">
4424
+ <span class="md-ellipsis">
4425
+
4426
+ Branch coverage detail
4427
+
4428
+ </span>
4429
+ </a>
4430
+
4431
+ </li>
4432
+
4433
+ <li class="md-nav__item">
4434
+ <a href="#html-reports" class="md-nav__link">
4435
+ <span class="md-ellipsis">
4436
+
4437
+ HTML reports
4438
+
4439
+ </span>
4440
+ </a>
4441
+
4442
+ </li>
4443
+
4444
+ <li class="md-nav__item">
4445
+ <a href="#xml-reports" class="md-nav__link">
4446
+ <span class="md-ellipsis">
4447
+
4448
+ XML reports
4449
+
4450
+ </span>
4451
+ </a>
4452
+
4453
+ </li>
4454
+
4455
+ <li class="md-nav__item">
4456
+ <a href="#report-exclusions" class="md-nav__link">
4457
+ <span class="md-ellipsis">
4458
+
4459
+ Report exclusions
4460
+
4461
+ </span>
4462
+ </a>
4463
+
4464
+ </li>
4465
+
4466
+ </ul>
4467
+ </nav>
4468
+
4469
+ </li>
4470
+
4471
+ <li class="md-nav__item">
4472
+ <a href="#additional-tasks" class="md-nav__link">
4473
+ <span class="md-ellipsis">
4474
+
4475
+ Additional tasks
4476
+
4477
+ </span>
4478
+ </a>
4479
+
4480
+ <nav class="md-nav" aria-label="Additional tasks">
4481
+ <ul class="md-nav__list">
4482
+
4483
+ <li class="md-nav__item">
4484
+ <a href="#coverage-browser" class="md-nav__link">
4485
+ <span class="md-ellipsis">
4486
+
4487
+ Coverage Browser
4488
+
4489
+ </span>
4490
+ </a>
4491
+
4492
+ </li>
4493
+
4494
+ <li class="md-nav__item">
4495
+ <a href="#license-status" class="md-nav__link">
4496
+ <span class="md-ellipsis">
4497
+
4498
+ License status
4499
+
4500
+ </span>
4501
+ </a>
4502
+
4503
+ </li>
4504
+
4505
+ </ul>
4506
+ </nav>
4507
+
4508
+ </li>
4509
+
4510
+ <li class="md-nav__item">
4511
+ <a href="#advanced-and-troubleshooting" class="md-nav__link">
4512
+ <span class="md-ellipsis">
4513
+
4514
+ Advanced and troubleshooting
4515
+
4516
+ </span>
4517
+ </a>
4518
+
4519
+ <nav class="md-nav" aria-label="Advanced and troubleshooting">
4520
+ <ul class="md-nav__list">
4521
+
4522
+ <li class="md-nav__item">
4523
+ <a href="#advanced-usage" class="md-nav__link">
4524
+ <span class="md-ellipsis">
4525
+
4526
+ Advanced usage
4527
+
4528
+ </span>
4529
+ </a>
4530
+
4531
+ </li>
4532
+
4533
+ <li class="md-nav__item">
4534
+ <a href="#tool-wrapping-and-custom-flags" class="md-nav__link">
4535
+ <span class="md-ellipsis">
4536
+
4537
+ Tool wrapping and custom flags
4538
+
4539
+ </span>
4540
+ </a>
4541
+
4542
+ </li>
4543
+
4544
+ <li class="md-nav__item">
4545
+ <a href="#unknown-option-errors-from-covc" class="md-nav__link">
4546
+ <span class="md-ellipsis">
4547
+
4548
+ "unknown option" errors from covc
4549
+
4550
+ </span>
4551
+ </a>
4552
+
4553
+ </li>
4554
+
4555
+ <li class="md-nav__item">
4556
+ <a href="#bullseyebrowser-fails-to-launch-coveragebrowser" class="md-nav__link">
4557
+ <span class="md-ellipsis">
4558
+
4559
+ bullseye:browser fails to launch CoverageBrowser
4560
+
4561
+ </span>
4562
+ </a>
4563
+
4564
+ </li>
4565
+
4566
+ <li class="md-nav__item">
4567
+ <a href="#relocating-the-coverage-data-file" class="md-nav__link">
4568
+ <span class="md-ellipsis">
4569
+
4570
+ Relocating the coverage data file
4571
+
4572
+ </span>
4573
+ </a>
4574
+
4575
+ </li>
4576
+
4577
+ </ul>
4578
+ </nav>
4579
+
4580
+ </li>
4581
+
4582
+ </ul>
4583
+
4584
+ </nav>
4585
+ </div>
4586
+ </div>
4587
+ </div>
4588
+
4589
+
4590
+
4591
+ <div class="md-content" data-md-component="content">
4592
+
4593
+
4594
+
4595
+
4596
+
4597
+
4598
+
4599
+
4600
+ <nav class="md-path" aria-label="Navigation" >
4601
+ <ol class="md-path__list">
4602
+
4603
+
4604
+
4605
+
4606
+ <li class="md-path__item">
4607
+ <a href="../../index.html" class="md-path__link">
4608
+
4609
+ <span class="md-ellipsis">
4610
+ Home
4611
+ </span>
4612
+
4613
+ </a>
4614
+ </li>
4615
+
4616
+
4617
+
4618
+
4619
+
4620
+
4621
+
4622
+
4623
+
4624
+ <li class="md-path__item">
4625
+ <a href="../index.html" class="md-path__link">
4626
+
4627
+ <span class="md-ellipsis">
4628
+ Plugins
4629
+ </span>
4630
+
4631
+ </a>
4632
+ </li>
4633
+
4634
+
4635
+
4636
+
4637
+
4638
+
4639
+
4640
+
4641
+
4642
+ <li class="md-path__item">
4643
+ <a href="index.html" class="md-path__link">
4644
+
4645
+ <span class="md-ellipsis">
4646
+ Bullseye (Coverage)
4647
+ </span>
4648
+
4649
+ </a>
4650
+ </li>
4651
+
4652
+
4653
+
4654
+
4655
+ </ol>
4656
+ </nav>
4657
+
4658
+
4659
+ <article class="md-content__inner md-typeset">
4660
+
4661
+
4662
+
4663
+
4664
+
4665
+
4666
+
4667
+
4668
+ <h1 id="bullseye">Bullseye</h1>
4669
+ <p>This plugin measures code coverage with the commercially available
4670
+ <a href="https://www.bullseye.com">Bullseye Coverage</a> tool. It adds a set of <code>bullseye:</code> build tasks
4671
+ that mirror Ceedling's <code>test:</code> tasks. These tasks instrument your code,
4672
+ run your tests, and report how much of your source the tests actually exercised.</p>
4673
+ <div class="admonition warning">
4674
+ <p class="admonition-title">Requires a commercial license</p>
4675
+ <p>Bullseye Coverage is commercial software. You need your own licensed
4676
+ installation. See <a href="licensing.html">Licensing</a>.</p>
4677
+ </div>
4678
+ <div class="admonition note">
4679
+ <p class="admonition-title">Note</p>
4680
+ <p>A <code>bullseye:</code> task is a <a href="../../getting-started/builds.html">delta build</a>.
4681
+ This plugin maintains its own dependency cache. Test executables and source
4682
+ files are rebuilt the first time you run a <code>bullseye:</code> build. Coverage
4683
+ instrumentation must be applied at compile time, so <code>bullseye:</code> builds
4684
+ cannot share objects with <code>test:</code> builds. See
4685
+ <a href="../index.html#understanding-plugin-build-duplication">Understanding plugin build duplication</a>.</p>
4686
+ </div>
4687
+ <hr />
4688
+ <h2 id="plugin-overview">Plugin overview</h2>
4689
+ <p>A <code>bullseye:</code> task compiles and links test executables with Bullseye
4690
+ instrumentation, runs them, and accumulates coverage data. All coverage data
4691
+ lands in a single coverage data file. Reports are generated from that file.</p>
4692
+ <p>Every <code>test:</code> task has a <code>bullseye:</code> counterpart.</p>
4693
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>bullseye:all
4694
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>bullseye:Model
4695
+ <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>bullseye:pattern<span class="o">[</span>Model*<span class="o">]</span>
4696
+ <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>bullseye:path<span class="o">[</span>controllers<span class="o">]</span>
4697
+ </code></pre></div>
4698
+ <h3 id="coverage-metric">Coverage metric</h3>
4699
+ <p>Bullseye measures two things. Function coverage records whether each function
4700
+ was invoked at all. Condition/decision coverage is a hybrid metric. It records
4701
+ whether each branch condition evaluated both true and false. It also records
4702
+ whether each individual boolean operand did the same.</p>
4703
+ <p>This plugin labels condition/decision coverage as BRANCHES in its console
4704
+ output.</p>
4705
+ <p>Bullseye's own site offers a <a href="https://www.bullseye.com/coverage.html">conceptual overview of code coverage</a>.
4706
+ It includes suggested incremental coverage goals.</p>
4707
+ <h3 id="the-coverage-data-file">The coverage data file</h3>
4708
+ <p>Coverage data accumulates in <code>test.cov</code> at your project root. Every
4709
+ instrumented test executable writes to it. Every reporting tool reads from it.</p>
4710
+ <p>This file lives at your project root rather than under <code>build/</code> for a specific
4711
+ reason. Bullseye records each source path relative to the coverage data file's
4712
+ own location. Report exclusions match against that stored path. Your project
4713
+ root is the only common ancestor of every source location a project can have.
4714
+ Those locations include <code>src/</code>, <code>test/</code>, vendored framework sources, and
4715
+ generated test runners. Bullseye
4716
+ <a href="https://www.bullseye.com/help/build-coverageFile.html">recommends this placement</a> for the same reason.</p>
4717
+ <p>Coverage data accumulates across runs. Use <code>ceedling clean</code> or
4718
+ <code>ceedling clobber</code> to discard it and start fresh.</p>
4719
+ <h3 id="supported-tool-versions">Supported tool versions</h3>
4720
+ <p>This plugin is verified against Bullseye Coverage 9.25.9 on Linux x64. It
4721
+ relies on command-line conventions that have been stable across Bullseye's
4722
+ release history and across platforms.</p>
4723
+ <h2 id="installation-and-set-up">Installation and set up</h2>
4724
+ <h3 id="install-bullseye">Install Bullseye</h3>
4725
+ <p>Obtain an installer from <a href="https://www.bullseye.com/cgi-bin/download">Bullseye's download page</a>. Install
4726
+ and activate it following <a href="licensing.html">Licensing</a>.</p>
4727
+ <p>Bullseye's tools must be on your <code>PATH</code>. Ceedling's
4728
+ <a href="../../configuration/reference/environment.html"><code>:environment</code></a> settings can
4729
+ also supply the path.</p>
4730
+ <div class="admonition note">
4731
+ <p class="admonition-title">Docker images</p>
4732
+ <p>Ceedling's <code>madsciencelab-plugins</code> Docker image variants do not include
4733
+ Bullseye. This requires a license that a freely available image cannot carry.
4734
+ Download Bullseye and then either extend the image or install into a running
4735
+ container.
4736
+ See <a href="licensing.html#using-bullseye-in-a-container">Using Bullseye in a container</a>.</p>
4737
+ </div>
4738
+ <h3 id="enable-the-plugin">Enable the plugin</h3>
4739
+ <p>Add the plugin to your Ceedling project file.</p>
4740
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="nt">:plugins</span><span class="p">:</span>
4741
+ <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4742
+ <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">bullseye</span>
4743
+ </code></pre></div>
4744
+ <p>This alone creates the <code>bullseye:</code> tasks and prints console coverage summaries.
4745
+ No further configuration is required.</p>
4746
+ <h2 id="configuration">Configuration</h2>
4747
+ <p>All settings live in a top-level <code>:bullseye</code> section of your project file.</p>
4748
+ <h3 id="summaries"><code>:summaries:</code></h3>
4749
+ <p>Controls the coverage summaries printed to the console after <code>bullseye:</code> tasks.
4750
+ Set it to <code>FALSE</code> to suppress them.</p>
4751
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="nt">:bullseye</span><span class="p">:</span>
4752
+ <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="nt">:summaries</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">FALSE</span>
4753
+ </code></pre></div>
4754
+ <p><strong>Default:</strong> <code>TRUE</code></p>
4755
+ <h3 id="untested_sources"><code>:untested_sources:</code></h3>
4756
+ <p>Controls how the plugin handles source files that no test exercises. It takes
4757
+ one of three values.</p>
4758
+ <ul>
4759
+ <li><code>:ignore</code> — Untested sources are not processed. Nothing is logged. Nothing
4760
+ is compiled. These files are absent from coverage reports.</li>
4761
+ <li><code>:list</code> — Untested sources are not compiled. Their filepaths are logged as a
4762
+ warning so you know what is missing from reports.</li>
4763
+ <li><code>:compile</code> — All untested sources are compiled with coverage. They appear in
4764
+ reports at 0% coverage. A source that fails to compile fails the build.</li>
4765
+ </ul>
4766
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="nt">:bullseye</span><span class="p">:</span>
4767
+ <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="w"> </span><span class="nt">:untested_sources</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:list</span>
4768
+ </code></pre></div>
4769
+ <p><strong>Default:</strong> <code>:list</code></p>
4770
+ <div class="admonition warning">
4771
+ <p class="admonition-title">Warning</p>
4772
+ <p><strong>Compiling all untested sources for 0% coverage reporting will likely require additional work.</strong></p>
4773
+ <p>Successful compilation of untested source files may require certain
4774
+ symbols to be defined, certain flags to be set, or entire stand-in shims
4775
+ for platform headers and code.</p>
4776
+ <p>Ceedling's
4777
+ <a href="../../configuration/reference/defines.html"><code>:defines</code></a>
4778
+ and
4779
+ <a href="../../configuration/reference/flags.html"><code>:flags</code></a>
4780
+ matchers can provide these. Bullseye tasks extract symbols and flags from
4781
+ the <code>:test</code> context by default. Use the <code>:bullseye</code> context in those
4782
+ matchers to supply anything specific to coverage builds. For an untested
4783
+ source, matchers match against the source file's own path.</p>
4784
+ </div>
4785
+ <p><code>:compile</code> also enables a standalone <code>bullseye:untested_sources</code> task.</p>
4786
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>bullseye:untested_sources
4787
+ </code></pre></div>
4788
+ <p>This task recompiles only the untested sources. It exists so you can work
4789
+ through the compilation problems above without rebuilding the whole test suite
4790
+ each time.</p>
4791
+ <h3 id="branch_detail"><code>:branch_detail:</code></h3>
4792
+ <p>Prints an annotated source listing identifying individual uncovered branches.
4793
+ Console summaries report branch coverage only as a percentage. This setting is
4794
+ the only console report that shows which branches account for that number.</p>
4795
+ <p>It takes one of three values.</p>
4796
+ <ul>
4797
+ <li><code>:none</code> — No annotated listing.</li>
4798
+ <li><code>:uncovered</code> — Annotate only probes that are not fully covered.</li>
4799
+ <li><code>:all</code> — Annotate every source line.</li>
4800
+ </ul>
4801
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="nt">:bullseye</span><span class="p">:</span>
4802
+ <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span><span class="nt">:branch_detail</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:uncovered</span>
4803
+ </code></pre></div>
4804
+ <p><strong>Default:</strong> <code>:none</code></p>
4805
+ <p>See <a href="#branch-coverage-detail">Branch coverage detail</a> for how to read the
4806
+ output.</p>
4807
+ <h3 id="xml_report"><code>:xml_report:</code></h3>
4808
+ <p>Generates a machine-readable coverage report for CI tooling. It takes one of
4809
+ three values.</p>
4810
+ <ul>
4811
+ <li><code>:none</code> — No XML report.</li>
4812
+ <li><code>:native</code> — Bullseye's own XML schema.</li>
4813
+ <li><code>:cobertura</code> — Cobertura format (a popular format across coverage reporting
4814
+ tools and CI dashboards).</li>
4815
+ </ul>
4816
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="nt">:bullseye</span><span class="p">:</span>
4817
+ <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="nt">:xml_report</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:cobertura</span>
4818
+ </code></pre></div>
4819
+ <p><strong>Default:</strong> <code>:none</code></p>
4820
+ <p>The report is written to <code>build/artifacts/bullseye/coverage.xml</code>.</p>
4821
+ <h3 id="fail_under"><code>:fail_under:</code></h3>
4822
+ <p>Fails the build when coverage falls below a minimum percentage. Each metric is
4823
+ configured separately. A value of <code>0</code> disables that check.</p>
4824
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nt">:bullseye</span><span class="p">:</span>
4825
+ <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="w"> </span><span class="nt">:fail_under</span><span class="p">:</span>
4826
+ <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="w"> </span><span class="nt">:functions</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">90</span>
4827
+ <a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a><span class="w"> </span><span class="nt">:branches</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">75</span>
4828
+ </code></pre></div>
4829
+ <p><strong>Default:</strong> <code>0</code> for both metrics</p>
4830
+ <p>Reports are still generated when a threshold is unmet. The failure is reported
4831
+ last so you see the coverage numbers first.</p>
4832
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>------------------------
4833
+ <a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>❌ BUILD FAILURE SUMMARY
4834
+ <a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>------------------------
4835
+ <a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a> • [BULLSEYE] Function coverage 50% is below the configured minimum of 90%.
4836
+ <a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a> • [BULLSEYE] Branch coverage 10% is below the configured minimum of 75%.
4837
+ </code></pre></div>
4838
+ <h3 id="report_task"><code>:report_task:</code></h3>
4839
+ <p>Controls whether reports generate automatically. By default, HTML and XML
4840
+ reports are generated after every <code>bullseye:</code> task. Set this to <code>TRUE</code> to
4841
+ generate them on demand instead.</p>
4842
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="nt">:bullseye</span><span class="p">:</span>
4843
+ <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="w"> </span><span class="nt">:report_task</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">TRUE</span>
4844
+ </code></pre></div>
4845
+ <p><strong>Default:</strong> <code>FALSE</code></p>
4846
+ <p>This setting enables a <code>report:bullseye</code> task.</p>
4847
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>bullseye:all
4848
+ <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>report:bullseye
4849
+ </code></pre></div>
4850
+ <p>Large projects may prefer this. Report generation can be time intensive.</p>
4851
+ <h3 id="license_manager_file"><code>:license_manager_file:</code></h3>
4852
+ <p>Points the plugin at a shared Bullseye license manager file. This applies only
4853
+ to floating and evaluation licenses. See
4854
+ <a href="licensing.html#floating-and-evaluation-licenses">Licensing</a>.</p>
4855
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="nt">:bullseye</span><span class="p">:</span>
4856
+ <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="w"> </span><span class="nt">:license_manager_file</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/path/to/shared/bullseye.lmgr</span>
4857
+ </code></pre></div>
4858
+ <p><strong>Default:</strong> unset</p>
4859
+ <h2 id="reporting">Reporting</h2>
4860
+ <p>Bullseye is a single self-contained toolchain.</p>
4861
+ <h3 id="console-summaries">Console summaries</h3>
4862
+ <p>Two summaries print after a <code>bullseye:</code> task. Per-function detail lists each
4863
+ function's invocation status and condition/decision coverage. Whole-file totals
4864
+ follow as a single banner.</p>
4865
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>-------------------------------
4866
+ <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>BULLSEYE: CODE COVERAGE SUMMARY
4867
+ <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>-------------------------------
4868
+ <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>calc_never_used(int,int) 0 / 1 = 0% 0 / 6 = 0%
4869
+ <a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a>calc_classify(int) 1 / 1 = 100% 1 / 4 = 25%
4870
+ <a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a>------------------------ ----------------- --------------
4871
+ <a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a>Total 1 / 2 = 50% 1 / 10 = 10%
4872
+ <a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a>
4873
+ <a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a>-------------------------------
4874
+ <a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a>BULLSEYE: CODE COVERAGE SUMMARY
4875
+ <a id="__codelineno-12-11" name="__codelineno-12-11" href="#__codelineno-12-11"></a>-------------------------------
4876
+ <a id="__codelineno-12-12" name="__codelineno-12-12" href="#__codelineno-12-12"></a>FUNCTIONS: 50%
4877
+ <a id="__codelineno-12-13" name="__codelineno-12-13" href="#__codelineno-12-13"></a>BRANCHES: 10%
4878
+ </code></pre></div>
4879
+ <p>The totals banner covers every function and branch recorded in the coverage
4880
+ data file. It is not limited to what the current task invocation touched.</p>
4881
+ <h3 id="branch-coverage-detail">Branch coverage detail</h3>
4882
+ <p>Enabling <a href="#branch_detail"><code>:branch_detail:</code></a> adds an annotated source listing.
4883
+ Each probe is marked to the left of its source line.</p>
4884
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>--------------------------------
4885
+ <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>BULLSEYE: BRANCH COVERAGE DETAIL
4886
+ <a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>--------------------------------
4887
+ <a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a>src/calc.c:
4888
+ <a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a> 1 #include &quot;calc.h&quot;
4889
+ <a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a> 2
4890
+ <a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a>X 3 int calc_classify(int n) {
4891
+ <a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a>--&gt;T 4 if (n &gt; 10) { return 1; }
4892
+ <a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a>--&gt; 5 else if (n &lt; 0) { return -1; }
4893
+ <a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a> 6 return 0;
4894
+ <a id="__codelineno-13-11" name="__codelineno-13-11" href="#__codelineno-13-11"></a> 7 }
4895
+ <a id="__codelineno-13-12" name="__codelineno-13-12" href="#__codelineno-13-12"></a> 8
4896
+ <a id="__codelineno-13-13" name="__codelineno-13-13" href="#__codelineno-13-13"></a>--&gt; 9 int calc_never_used(int a, int b) {
4897
+ <a id="__codelineno-13-14" name="__codelineno-13-14" href="#__codelineno-13-14"></a>--&gt; 10 if (
4898
+ <a id="__codelineno-13-15" name="__codelineno-13-15" href="#__codelineno-13-15"></a> --&gt; a &amp;&amp;
4899
+ <a id="__codelineno-13-16" name="__codelineno-13-16" href="#__codelineno-13-16"></a> --&gt; b) { return 1; }
4900
+ <a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a> 11 return 0;
4901
+ <a id="__codelineno-13-18" name="__codelineno-13-18" href="#__codelineno-13-18"></a> 12 }
4902
+ </code></pre></div>
4903
+ <p>The markers carry specific meanings.</p>
4904
+ <table>
4905
+ <thead>
4906
+ <tr>
4907
+ <th>Marker</th>
4908
+ <th>Meaning</th>
4909
+ </tr>
4910
+ </thead>
4911
+ <tbody>
4912
+ <tr>
4913
+ <td><code>X</code></td>
4914
+ <td>An executed function, switch label, try block, or loop body</td>
4915
+ </tr>
4916
+ <tr>
4917
+ <td><code>T</code></td>
4918
+ <td>A decision that evaluated true</td>
4919
+ </tr>
4920
+ <tr>
4921
+ <td><code>F</code></td>
4922
+ <td>A decision that evaluated false</td>
4923
+ </tr>
4924
+ <tr>
4925
+ <td><code>t</code></td>
4926
+ <td>A condition within a decision that evaluated true</td>
4927
+ </tr>
4928
+ <tr>
4929
+ <td><code>f</code></td>
4930
+ <td>A condition within a decision that evaluated false</td>
4931
+ </tr>
4932
+ <tr>
4933
+ <td><code>--&gt;</code></td>
4934
+ <td>Incomplete coverage</td>
4935
+ </tr>
4936
+ <tr>
4937
+ <td><code>/</code></td>
4938
+ <td>An excluded probe</td>
4939
+ </tr>
4940
+ </tbody>
4941
+ </table>
4942
+ <p>Several probes on one line are distinguished by letter suffixes such as <code>19a</code>
4943
+ and <code>19b</code>.</p>
4944
+ <h3 id="html-reports">HTML reports</h3>
4945
+ <p>A full interactive HTML report is generated to
4946
+ <code>build/artifacts/bullseye/covhtml/</code>. Open <code>index.html</code> in a browser.</p>
4947
+ <h3 id="xml-reports">XML reports</h3>
4948
+ <p>Enabling <a href="#xml_report"><code>:xml_report:</code></a> writes
4949
+ <code>build/artifacts/bullseye/coverage.xml</code>. Cobertura format suits CI dashboards
4950
+ that already consume it. Bullseye's native schema carries more detail,
4951
+ including per-probe results.</p>
4952
+ <h3 id="report-exclusions">Report exclusions</h3>
4953
+ <p>Framework and test sources are excluded from reports automatically. Unity,
4954
+ CMock, CException, files matching your test file prefix, and generated mocks
4955
+ are all excluded. Aggregate percentages therefore reflect your production code.</p>
4956
+ <p>Exclusions apply to console totals, HTML reports, and XML reports alike.</p>
4957
+ <p>Bullseye calls the underlying concept a region. A region is an inclusion or
4958
+ exclusion rule. Regions can match by filename, directory, function, or C++
4959
+ class and namespace. This plugin uses filename-pattern exclusions only. See
4960
+ <a href="https://www.bullseye.com/help/ref-regions.html">Bullseye's region reference</a> for the full syntax.</p>
4961
+ <h2 id="additional-tasks">Additional tasks</h2>
4962
+ <h3 id="coverage-browser">Coverage Browser</h3>
4963
+ <p>The <code>bullseye:browser</code> task opens Bullseye's graphical Coverage Browser
4964
+ against your project's coverage data file.</p>
4965
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>bullseye:browser
4966
+ </code></pre></div>
4967
+ <h3 id="license-status">License status</h3>
4968
+ <p>The <code>bullseye:license</code> task reports your Bullseye license number, its expiry
4969
+ date, and license manager utilization.</p>
4970
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>bullseye:license
4971
+ </code></pre></div>
4972
+ <p>See <a href="licensing.html">Licensing</a> for how to read its output.</p>
4973
+ <h2 id="advanced-and-troubleshooting">Advanced and troubleshooting</h2>
4974
+ <h3 id="advanced-usage">Advanced usage</h3>
4975
+ <p>This plugin's tool definitions and defaults are contained in
4976
+ <a href="../../snapshot/plugins/bullseye/config/defaults_bullseye.rb">defaults_bullseye.rb</a>
4977
+ and <a href="../../snapshot/plugins/bullseye/config/defaults.yml">defaults.yml</a>. Both
4978
+ are useful references for overriding plugin behavior with Ceedling's advanced
4979
+ features.</p>
4980
+ <h3 id="tool-wrapping-and-custom-flags">Tool wrapping and custom flags</h3>
4981
+ <p>This plugin's compiler and linker tools wrap <code>gcc</code> with Bullseye's <code>covc</code>.
4982
+ <code>covc</code> parses everything before the wrapped compiler's name as its own option.
4983
+ Anything after that name is passed through to the compiler.</p>
4984
+ <p>The wrapped compiler name is therefore folded into each tool's <code>:executable</code>
4985
+ setting as <code>covc -q gcc</code>. It is not left as a leading argument.</p>
4986
+ <p>Keep this ordering in mind when overriding <code>:bullseye_compiler</code> or
4987
+ <code>:bullseye_linker</code>. Your own <code>:arguments:</code> entries must land after the wrapped
4988
+ compiler's name. So must any flags Ceedling injects through <code>:defines</code> and
4989
+ <code>:flags</code> matchers.</p>
4990
+ <h3 id="unknown-option-errors-from-covc">"unknown option" errors from <code>covc</code></h3>
4991
+ <p>A flag that belongs to <code>gcc</code> landed before the wrapped compiler's name. See
4992
+ <a href="#tool-wrapping-and-custom-flags">Tool wrapping and custom flags</a>.</p>
4993
+ <h3 id="bullseyebrowser-fails-to-launch-coveragebrowser"><code>bullseye:browser</code> fails to launch <code>CoverageBrowser</code></h3>
4994
+ <p><code>CoverageBrowser</code> is a GUI application with its own runtime dependencies. GTK
4995
+ is one example on Linux. Install your platform's GUI toolkit dependencies
4996
+ alongside Bullseye.</p>
4997
+ <p>Headless environments rarely have these libraries. Console summaries, HTML
4998
+ reports, and XML reports have no GUI dependencies at all.</p>
4999
+ <h3 id="relocating-the-coverage-data-file">Relocating the coverage data file</h3>
5000
+ <p>Region-based exclusions may stop matching if you relocate the coverage data
5001
+ file through your own <code>:tools</code> overrides. See
5002
+ <a href="#the-coverage-data-file">The coverage data file</a> for why its location
5003
+ matters.</p>
5004
+ <p><br/><br/></p>
5005
+
5006
+
5007
+
5008
+
5009
+
5010
+
5011
+
5012
+
5013
+
5014
+
5015
+
5016
+
5017
+
5018
+ </article>
5019
+ </div>
5020
+
5021
+
5022
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
5023
+ </div>
5024
+
5025
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
5026
+
5027
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
5028
+ Back to top
5029
+ </button>
5030
+
5031
+ </main>
5032
+
5033
+ <footer class="md-footer">
5034
+
5035
+ <div class="md-footer-meta md-typeset">
5036
+ <div class="md-footer-meta__inner md-grid">
5037
+ <div class="md-copyright">
5038
+
5039
+ <div class="md-copyright__highlight">
5040
+ &copy; 2010-2026 M. Karlesky, M. VanderVoord, and G. Williams &mdash; Documentation license: <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0</a>
5041
+ </div>
5042
+
5043
+
5044
+ </div>
5045
+
5046
+
5047
+ <div class="md-social">
5048
+
5049
+
5050
+
5051
+
5052
+
5053
+ <a href="https://github.com/sponsors/ThrowTheSwitch" target="_blank" rel="noopener" title="Sponsor ThrowTheSwitch on GitHub" class="md-social__link">
5054
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
5055
+ </a>
5056
+
5057
+ </div>
5058
+
5059
+ </div>
5060
+ </div>
5061
+ </footer>
5062
+
5063
+ </div>
5064
+ <div class="md-dialog" data-md-component="dialog">
5065
+ <div class="md-dialog__inner md-typeset"></div>
5066
+ </div>
5067
+
5068
+
5069
+
5070
+
5071
+
5072
+ <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>
5073
+
5074
+
5075
+ <script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
5076
+
5077
+
5078
+ </body>
5079
+ </html>