ceedling 1.1.10 → 1.2.1

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