ceedling 1.2.0 → 1.2.2

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 (383) hide show
  1. checksums.yaml +4 -4
  2. data/GIT_COMMIT_SHA +1 -1
  3. data/README.md +57 -58
  4. data/Rakefile +5 -3
  5. data/assets/features/ceedling +1 -1
  6. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_typo.c +14 -0
  7. data/assets/fixtures/tests_with_duplicate_test_names/test_foo.c +21 -0
  8. data/bin/actionator.rb +6 -12
  9. data/bin/app_cfg.rb +35 -1
  10. data/bin/ceedling +13 -3
  11. data/bin/cli.rb +25 -6
  12. data/bin/cli_handler.rb +119 -73
  13. data/bin/cli_helper.rb +56 -78
  14. data/bin/installation_selector.rb +81 -0
  15. data/bin/launchinator.rb +69 -0
  16. data/bin/mixin_resolvinator.rb +26 -36
  17. data/bin/objects.yml +13 -0
  18. data/bin/path_validator.rb +25 -29
  19. data/bin/versionator.rb +47 -48
  20. data/ceedling.gemspec +19 -15
  21. data/docs/BreakingChanges.md +70 -1
  22. data/docs/Changelog.md +84 -3
  23. data/docs/KnownIssues.md +90 -4
  24. data/docs/ReleaseNotes.md +13 -0
  25. data/docs/overrides/main.html +11 -8
  26. data/lib/ceedling/build_log_writer.rb +33 -0
  27. data/lib/ceedling/config/build_root_policy.rb +70 -0
  28. data/lib/ceedling/config/configurator.rb +19 -18
  29. data/lib/ceedling/config/configurator_builder.rb +58 -28
  30. data/lib/ceedling/config/configurator_paths_validator.rb +179 -0
  31. data/lib/ceedling/config/configurator_plugins.rb +1 -1
  32. data/lib/ceedling/config/configurator_setup.rb +39 -41
  33. data/lib/ceedling/config/configurator_validator.rb +1 -110
  34. data/lib/ceedling/defaults.rb +4 -4
  35. data/lib/ceedling/dependencies/README.md +18 -16
  36. data/lib/ceedling/dependencies/dependency_cache_store.rb +20 -3
  37. data/lib/ceedling/dependencies/dependency_hasher.rb +35 -1
  38. data/lib/ceedling/filename_extension.rb +7 -1
  39. data/lib/ceedling/filesystem/FILE_TREE.md +253 -0
  40. data/lib/ceedling/filesystem/PATH_HANDLING.md +304 -0
  41. data/lib/ceedling/filesystem/README.md +41 -0
  42. data/lib/ceedling/filesystem/build_subpath.rb +102 -0
  43. data/lib/ceedling/filesystem/destination_collision.rb +25 -0
  44. data/lib/ceedling/{file_finder.rb → filesystem/file_finder.rb} +159 -104
  45. data/lib/ceedling/{file_finder_helper.rb → filesystem/file_finder_helper.rb} +36 -31
  46. data/lib/ceedling/filesystem/file_path_collection_utils.rb +183 -0
  47. data/lib/ceedling/{file_path_utils.rb → filesystem/file_path_utils.rb} +108 -97
  48. data/lib/ceedling/{file_system_wrapper.rb → filesystem/file_system_wrapper.rb} +6 -5
  49. data/lib/ceedling/filesystem/file_tree.rb +241 -0
  50. data/lib/ceedling/{file_wrapper.rb → filesystem/file_wrapper.rb} +65 -28
  51. data/lib/ceedling/filesystem/path_exclusions.rb +30 -0
  52. data/lib/ceedling/{path_matcher.rb → filesystem/path_matcher.rb} +27 -23
  53. data/lib/ceedling/{path_mirror.rb → filesystem/path_mirror.rb} +19 -18
  54. data/lib/ceedling/filesystem/path_spellings.rb +55 -0
  55. data/lib/ceedling/filesystem/project_paths.rb +184 -0
  56. data/lib/ceedling/filesystem/working_dir.rb +40 -0
  57. data/lib/ceedling/generators/generator.rb +5 -6
  58. data/lib/ceedling/generators/generator_partials.rb +1 -1
  59. data/lib/ceedling/generators/generator_test_results_backtrace.rb +7 -7
  60. data/lib/ceedling/handoff.rb +121 -0
  61. data/lib/ceedling/includes/include_factory.rb +3 -3
  62. data/lib/ceedling/includes/include_pathinator.rb +67 -10
  63. data/lib/ceedling/includes/includes.rb +1 -1
  64. data/lib/ceedling/installation.rb +92 -0
  65. data/lib/ceedling/library_resolver.rb +99 -0
  66. data/lib/ceedling/objects.yml +23 -2
  67. data/lib/ceedling/partials/partializer.rb +4 -4
  68. data/lib/ceedling/partials/partializer_config.rb +3 -1
  69. data/lib/ceedling/plugins/report_log_writer_plugin.rb +3 -5
  70. data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +1 -1
  71. data/lib/ceedling/preprocess/preprocessinator_includes_handler.rb +1 -1
  72. data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +1 -1
  73. data/lib/ceedling/rake_app/rakefile_component_resolver.rb +10 -17
  74. data/lib/ceedling/rake_app/test_task_name.rb +29 -0
  75. data/lib/ceedling/rakefile.rb +16 -1
  76. data/lib/ceedling/rakefiles/base/tasks_base.rake +1 -1
  77. data/lib/ceedling/rakefiles/release/rules_release.rake +4 -7
  78. data/lib/ceedling/rakefiles/tests/rules_tests.rake +3 -20
  79. data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +4 -30
  80. data/lib/ceedling/release_invoker/release_build_executor.rb +33 -44
  81. data/lib/ceedling/release_invoker/release_build_planner.rb +14 -6
  82. data/lib/ceedling/reportinator.rb +3 -4
  83. data/lib/ceedling/setupinator.rb +95 -87
  84. data/lib/ceedling/test_context_extractor.rb +5 -1
  85. data/lib/ceedling/test_invoker/PIPELINE.md +9 -7
  86. data/lib/ceedling/test_invoker/mock_locator.rb +60 -2
  87. data/lib/ceedling/test_invoker/partials_manager.rb +12 -0
  88. data/lib/ceedling/test_invoker/standin_headerinator.rb +22 -13
  89. data/lib/ceedling/test_invoker/test_build_executor.rb +42 -41
  90. data/lib/ceedling/test_invoker/test_build_planner.rb +37 -18
  91. data/lib/ceedling/test_invoker/test_build_setup.rb +17 -12
  92. data/lib/ceedling/test_invoker/test_build_validations.rb +16 -31
  93. data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +1 -1
  94. data/lib/ceedling/test_invoker/test_invoker.rb +6 -1
  95. data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +1 -1
  96. data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +40 -20
  97. data/lib/ceedling/tool_executor.rb +9 -3
  98. data/lib/ceedling/yaml_wrapper.rb +3 -2
  99. data/lib/version.rb +1 -1
  100. data/plugins/bullseye/bullseye.rake +6 -9
  101. data/plugins/bullseye/config/defaults_bullseye.rb +1 -1
  102. data/plugins/bullseye/lib/bullseye.rb +9 -7
  103. data/plugins/cppcheck/config/defaults_cppcheck.rb +1 -1
  104. data/plugins/dependencies/config/defaults.yml +6 -6
  105. data/plugins/dependencies/dependencies.rake +4 -1
  106. data/plugins/dependencies/lib/dependencies.rb +18 -8
  107. data/plugins/dependencies/lib/dependency_spec.rb +17 -5
  108. data/plugins/fff/lib/fff.rb +45 -39
  109. data/plugins/fff/spec/fff_cmock_wrapper_spec.rb +128 -0
  110. data/plugins/gcov/config/defaults_gcov.rb +1 -1
  111. data/plugins/gcov/gcov.rake +6 -9
  112. data/plugins/gcov/lib/console_reportinator.rb +4 -18
  113. data/plugins/gcov/lib/gcov.rb +9 -2
  114. data/plugins/gcov/lib/gcovr_reportinator.rb +8 -40
  115. data/plugins/gcov/lib/gcovr_thresholds.rb +74 -0
  116. data/plugins/gcov/lib/reportgenerator_reportinator.rb +1 -1
  117. data/plugins/module_generator/lib/module_generator.rb +3 -3
  118. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +53 -80
  119. data/plugins/sanitize/lib/sanitize_records.rb +3 -6
  120. data/plugins/sanitize/sanitize.rake +6 -6
  121. data/plugins/valgrind/lib/valgrind.rb +14 -7
  122. data/plugins/valgrind/valgrind.rake +6 -6
  123. data/site-local/404.html +6 -20
  124. data/site-local/assets/javascripts/{bundle.d7400e89.min.js → bundle.c21346df.min.js} +3 -3
  125. data/site-local/assets/javascripts/{bundle.d7400e89.min.js.map → bundle.c21346df.min.js.map} +2 -2
  126. data/site-local/assets/javascripts/workers/{search.2c215733.min.js → search.a7633da7.min.js} +2 -2
  127. data/site-local/assets/javascripts/workers/{search.2c215733.min.js.map → search.a7633da7.min.js.map} +1 -1
  128. data/site-local/assets/stylesheets/main.57a0d79d.min.css +6 -0
  129. data/site-local/assets/stylesheets/main.57a0d79d.min.css.map +1 -0
  130. data/site-local/assets/stylesheets/palette.fb2fffe2.min.css +4 -0
  131. data/site-local/assets/stylesheets/palette.fb2fffe2.min.css.map +1 -0
  132. data/site-local/configuration/environment-vars.html +6 -20
  133. data/site-local/configuration/global-collections.html +6 -20
  134. data/site-local/configuration/index.html +6 -20
  135. data/site-local/configuration/loading.html +6 -20
  136. data/site-local/configuration/mixins.html +10 -24
  137. data/site-local/configuration/parallel-builds.html +6 -20
  138. data/site-local/configuration/project-file.html +8 -22
  139. data/site-local/configuration/reference/cexception.html +6 -20
  140. data/site-local/configuration/reference/cmock.html +8 -21
  141. data/site-local/configuration/reference/defines.html +16 -30
  142. data/site-local/configuration/reference/environment.html +10 -24
  143. data/site-local/configuration/reference/extension.html +6 -20
  144. data/site-local/configuration/reference/files.html +22 -30
  145. data/site-local/configuration/reference/flags.html +13 -27
  146. data/site-local/configuration/reference/index.html +6 -20
  147. data/site-local/configuration/reference/libraries.html +27 -23
  148. data/site-local/configuration/reference/mixins.html +6 -20
  149. data/site-local/configuration/reference/partials.html +6 -20
  150. data/site-local/configuration/reference/paths.html +38 -29
  151. data/site-local/configuration/reference/plugins.html +6 -20
  152. data/site-local/configuration/reference/project.html +32 -36
  153. data/site-local/configuration/reference/release-build.html +8 -20
  154. data/site-local/configuration/reference/test-build.html +6 -20
  155. data/site-local/configuration/reference/test-runner.html +6 -20
  156. data/site-local/configuration/reference/tools.html +27 -32
  157. data/site-local/configuration/reference/unity.html +6 -20
  158. data/site-local/configuration/which-ceedling.html +383 -37
  159. data/site-local/development/index.html +6 -20
  160. data/site-local/development/plugins/configuration.html +6 -20
  161. data/site-local/development/plugins/index.html +6 -20
  162. data/site-local/development/plugins/plugin-subclass.html +54 -68
  163. data/site-local/development/plugins/rake-tasks.html +8 -22
  164. data/site-local/development/releases.html +84 -29
  165. data/site-local/development/workflow.html +62 -71
  166. data/site-local/getting-started/builds.html +8 -20
  167. data/site-local/getting-started/command-line.html +62 -24
  168. data/site-local/getting-started/example-projects/cipher-quest.html +6 -20
  169. data/site-local/getting-started/example-projects/index.html +6 -20
  170. data/site-local/getting-started/example-projects/temp-sensor.html +6 -20
  171. data/site-local/getting-started/example-projects/wondrous-forest.html +6 -20
  172. data/site-local/getting-started/index.html +6 -20
  173. data/site-local/getting-started/installation.html +6 -20
  174. data/site-local/getting-started/quick-start.html +6 -20
  175. data/site-local/help.html +6 -20
  176. data/site-local/index.html +11 -24
  177. data/site-local/overview/build-system.html +6 -20
  178. data/site-local/overview/index.html +6 -20
  179. data/site-local/overview/test-environments.html +6 -20
  180. data/site-local/overview/tools-and-frameworks.html +6 -20
  181. data/site-local/plugins/beep.html +6 -20
  182. data/site-local/plugins/bullseye/index.html +13 -24
  183. data/site-local/plugins/bullseye/licensing.html +14 -28
  184. data/site-local/plugins/command-hooks.html +8 -22
  185. data/site-local/plugins/compile-commands-json-db.html +6 -20
  186. data/site-local/plugins/cppcheck.html +8 -22
  187. data/site-local/plugins/dependencies.html +16 -27
  188. data/site-local/plugins/fff.html +49 -32
  189. data/site-local/plugins/gcov/examples.html +7 -21
  190. data/site-local/plugins/gcov/gcovr.html +22 -33
  191. data/site-local/plugins/gcov/index.html +6 -20
  192. data/site-local/plugins/gcov/overview.html +9 -20
  193. data/site-local/plugins/gcov/reportgenerator.html +9 -23
  194. data/site-local/plugins/gcov/reporting.html +6 -20
  195. data/site-local/plugins/gcov/setup.html +8 -21
  196. data/site-local/plugins/gcov/tool-versions.html +6 -20
  197. data/site-local/plugins/gcov/troubleshooting.html +10 -24
  198. data/site-local/plugins/index.html +6 -20
  199. data/site-local/plugins/module-generator.html +21 -35
  200. data/site-local/plugins/report-build-warnings-log.html +53 -67
  201. data/site-local/plugins/report-tests-gtestlike-stdout.html +6 -20
  202. data/site-local/plugins/report-tests-ide-stdout.html +43 -57
  203. data/site-local/plugins/report-tests-log-factory.html +50 -64
  204. data/site-local/plugins/report-tests-pretty-stdout.html +7 -21
  205. data/site-local/plugins/report-tests-raw-output-log.html +9 -21
  206. data/site-local/plugins/report-tests-teamcity-stdout.html +20 -31
  207. data/site-local/plugins/sanitize.html +56 -65
  208. data/site-local/plugins/valgrind.html +49 -58
  209. data/site-local/project/index.html +6 -20
  210. data/site-local/project/release-history.html +6 -20
  211. data/site-local/project/sbom.html +6 -20
  212. data/site-local/project/upgrade.html +9 -20
  213. data/site-local/reference/build-directives.html +6 -20
  214. data/site-local/reference/command-line.html +15 -22
  215. data/site-local/reference/environment-vars.html +6 -20
  216. data/site-local/reference/gcov-plugin.html +6 -20
  217. data/site-local/reference/global-collections.html +6 -20
  218. data/site-local/reference/index.html +6 -20
  219. data/site-local/reference/partials-macros.html +6 -20
  220. data/site-local/reference/project-configuration.html +6 -20
  221. data/site-local/sitemap.xml.gz +0 -0
  222. data/site-local/snapshot/examples/cipher_quest/index.html +16 -30
  223. data/site-local/snapshot/examples/temp_sensor/index.html +8 -22
  224. data/site-local/snapshot/examples/wondrous_forest/index.html +6 -20
  225. data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +1 -1
  226. data/site-local/snapshot/plugins/gcov/config/defaults_gcov.rb +1 -1
  227. data/site-local/testing-guide/build-directives.html +14 -28
  228. data/site-local/testing-guide/conventions.html +66 -27
  229. data/site-local/testing-guide/frameworks.html +11 -25
  230. data/site-local/testing-guide/index.html +6 -20
  231. data/site-local/testing-guide/partials/configuration.html +8 -22
  232. data/site-local/testing-guide/partials/conventions.html +8 -22
  233. data/site-local/testing-guide/partials/directives.html +16 -30
  234. data/site-local/testing-guide/partials/example.html +14 -28
  235. data/site-local/testing-guide/partials/index.html +6 -20
  236. data/site-local/testing-guide/partials/overview.html +6 -20
  237. data/site-local/testing-guide/partials/variables.html +11 -25
  238. data/site-local/testing-guide/test-cases.html +13 -27
  239. data/site-local/testing-guide/test-sample.html +12 -26
  240. data/site-local/testing-guide/test-suite-anatomy.html +6 -20
  241. data/spec/integration/actionator_file_operations_spec.rb +91 -1
  242. data/spec/integration/compile_commands_json_db_spec.rb +1 -1
  243. data/spec/integration/configurator_pipeline_spec.rb +10 -0
  244. data/spec/integration/configurator_validation_spec.rb +1 -1
  245. data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +26 -0
  246. data/spec/integration/dependencies/dependency_tracker_core_spec.rb +62 -0
  247. data/spec/integration/launcher_handoff_spec.rb +297 -0
  248. data/spec/integration/mixin_loading_spec.rb +1 -1
  249. data/spec/integration/module_generator_spec.rb +3 -3
  250. data/spec/integration/nested_test_artifacts_spec.rb +99 -0
  251. data/spec/integration/partials_module_resolution_spec.rb +7 -4
  252. data/spec/integration/path_intake_scenarios_spec.rb +101 -0
  253. data/spec/integration/path_scenarios_spec.rb +322 -0
  254. data/spec/integration/quote_include_isolator_spec.rb +1 -1
  255. data/spec/integration/rake_task_registry_plugins_spec.rb +95 -0
  256. data/spec/integration/report_build_warnings_log_spec.rb +1 -1
  257. data/spec/integration/report_tests_log_factory_spec.rb +1 -1
  258. data/spec/integration/test_executable_manifest_spec.rb +1 -1
  259. data/spec/integration/test_includes_extractinator_spec.rb +2 -1
  260. data/spec/integration/test_naming_spec.rb +198 -0
  261. data/spec/integration/test_source_file_checks_spec.rb +166 -0
  262. data/spec/integration/tool_validator_spec.rb +1 -1
  263. data/spec/integration/upgrade_docs_spec.rb +84 -0
  264. data/spec/integration/vendor_copy_transient_io_retry_spec.rb +192 -75
  265. data/spec/support/file_tree_helper.rb +88 -0
  266. data/spec/support/integration/configurator_integration_helper.rb +10 -7
  267. data/spec/support/integration/dependency_tracker_integration_helper.rb +1 -1
  268. data/spec/support/integration/partials_generation_integration_helper.rb +2 -2
  269. data/spec/support/integration/path_scenario_harness.rb +173 -0
  270. data/spec/support/integration/spec_integration_helper.rb +1 -1
  271. data/spec/support/integration/test_includes_harness.rb +13 -2
  272. data/spec/support/spec_helper.rb +2 -0
  273. data/spec/support/system/spec_system_helper.rb +7 -6
  274. data/spec/support/system/system_context.rb +21 -3
  275. data/spec/support/working_dir_tracking.rb +49 -0
  276. data/spec/system/build_output_mirroring_spec.rb +2 -2
  277. data/spec/system/conditional_mock_includes_spec.rb +1 -1
  278. data/spec/system/delta_builds_spec.rb +137 -11
  279. data/spec/system/gcov_deployment_spec.rb +1 -0
  280. data/spec/system/header_include_path_validation_spec.rb +4 -4
  281. data/spec/system/launcher_handoff_spec.rb +82 -0
  282. data/spec/system/mock_include_folders_spec.rb +91 -0
  283. data/spec/system/parent_directory_reference_spec.rb +5 -3
  284. data/spec/system/path_handling_probes_spec.rb +192 -0
  285. data/spec/system/preprocessing_parameterized_tests_spec.rb +1 -1
  286. data/spec/system/rake_release_task_path_disambiguation_spec.rb +6 -6
  287. data/spec/system/rake_test_task_path_disambiguation_spec.rb +85 -0
  288. data/spec/system/special_path_characters_spec.rb +86 -0
  289. data/spec/system/support/common_test_cases.rb +23 -21
  290. data/spec/system/support/gcov_common_test_cases.rb +37 -9
  291. data/spec/system/support/sanitize_common_test_cases.rb +2 -2
  292. data/spec/system/support/valgrind_common_test_cases.rb +12 -12
  293. data/spec/system/test_pipeline_stop_points_spec.rb +4 -4
  294. data/spec/system/test_runner_system_include_spec.rb +1 -1
  295. data/spec/system/test_source_file_directive_spec.rb +34 -5
  296. data/spec/units/bin/actionator_spec.rb +14 -17
  297. data/spec/units/bin/app_cfg_spec.rb +47 -0
  298. data/spec/units/bin/cli_handler_spec.rb +284 -7
  299. data/spec/units/bin/cli_helper_spec.rb +126 -45
  300. data/spec/units/bin/installation_selector_spec.rb +114 -0
  301. data/spec/units/bin/launchinator_spec.rb +171 -0
  302. data/spec/units/bin/path_validator_spec.rb +10 -0
  303. data/spec/units/bin/versionator_spec.rb +38 -6
  304. data/spec/units/build_log_writer_spec.rb +57 -0
  305. data/spec/units/config/build_root_policy_spec.rb +61 -0
  306. data/spec/units/config/configurator_builder_spec.rb +37 -6
  307. data/spec/units/config/configurator_paths_validator_spec.rb +292 -0
  308. data/spec/units/config/configurator_setup_spec.rb +65 -103
  309. data/spec/units/config/configurator_spec.rb +37 -6
  310. data/spec/units/config/configurator_validator_spec.rb +1 -172
  311. data/spec/units/default_tools_quoting_spec.rb +83 -0
  312. data/spec/units/dependencies/dependency_cache_store_spec.rb +33 -2
  313. data/spec/units/dependencies/dependency_debug_tree_spec.rb +1 -1
  314. data/spec/units/dependencies/dependency_hasher_spec.rb +42 -1
  315. data/spec/units/dependencies/dependency_path_normalizer_spec.rb +1 -1
  316. data/spec/units/dependencies/dependency_tracker_spec.rb +3 -1
  317. data/spec/units/filename_extension_spec.rb +11 -0
  318. data/spec/units/filesystem/build_subpath_spec.rb +122 -0
  319. data/spec/units/filesystem/destination_collision_spec.rb +30 -0
  320. data/spec/units/{file_finder_helper_spec.rb → filesystem/file_finder_helper_spec.rb} +46 -1
  321. data/spec/units/{file_finder_spec.rb → filesystem/file_finder_spec.rb} +188 -22
  322. data/spec/units/{file_path_collection_utils_spec.rb → filesystem/file_path_collection_utils_spec.rb} +181 -1
  323. data/spec/units/{file_path_utils_spec.rb → filesystem/file_path_utils_spec.rb} +204 -87
  324. data/spec/units/filesystem/file_system_wrapper_spec.rb +33 -0
  325. data/spec/units/filesystem/file_tree_spec.rb +511 -0
  326. data/spec/units/filesystem/file_tree_windows_spec.rb +78 -0
  327. data/spec/units/{file_wrapper_spec.rb → filesystem/file_wrapper_spec.rb} +154 -32
  328. data/spec/units/{path_matcher_spec.rb → filesystem/path_matcher_spec.rb} +12 -1
  329. data/spec/units/{path_mirror_spec.rb → filesystem/path_mirror_spec.rb} +32 -4
  330. data/spec/units/filesystem/project_paths_spec.rb +147 -0
  331. data/spec/units/filesystem/working_dir_spec.rb +71 -0
  332. data/spec/units/generators/generator_spec.rb +12 -6
  333. data/spec/units/generators/generator_test_results_backtrace_spec.rb +50 -46
  334. data/spec/units/generators/generator_test_results_spec.rb +1 -1
  335. data/spec/units/handoff_spec.rb +205 -0
  336. data/spec/units/includes/include_factory_spec.rb +3 -3
  337. data/spec/units/includes/include_pathinator_spec.rb +46 -0
  338. data/spec/units/installation_spec.rb +228 -0
  339. data/spec/units/library_resolver_spec.rb +157 -0
  340. data/spec/units/mock_locator_spec.rb +76 -1
  341. data/spec/units/partials/partializer_config_spec.rb +7 -0
  342. data/spec/units/partials/partializer_spec.rb +1 -0
  343. data/spec/units/partials_manager_spec.rb +17 -0
  344. data/spec/units/plugins/bullseye_spec.rb +15 -2
  345. data/spec/units/plugins/console_reportinator_spec.rb +18 -20
  346. data/spec/units/plugins/dependencies_spec.rb +33 -7
  347. data/spec/units/plugins/dependency_spec_spec.rb +17 -0
  348. data/spec/units/plugins/gcov_spec.rb +28 -3
  349. data/spec/units/plugins/gcovr_reportinator_spec.rb +19 -47
  350. data/spec/units/plugins/gcovr_thresholds_spec.rb +95 -0
  351. data/spec/units/plugins/module_generator_spec.rb +5 -5
  352. data/spec/units/plugins/report_build_warnings_log_spec.rb +3 -3
  353. data/spec/units/plugins/report_log_writer_plugin_spec.rb +10 -1
  354. data/spec/units/plugins/report_tests_raw_output_log_spec.rb +13 -2
  355. data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +77 -3
  356. data/spec/units/plugins/reportgenerator_reportinator_spec.rb +1 -1
  357. data/spec/units/plugins/sanitize_records_spec.rb +3 -1
  358. data/spec/units/plugins/sanitize_spec.rb +1 -1
  359. data/spec/units/plugins/valgrind_spec.rb +23 -8
  360. data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +1 -1
  361. data/spec/units/rake_app/rakefile_component_resolver_spec.rb +21 -0
  362. data/spec/units/rake_app/test_task_name_spec.rb +47 -0
  363. data/spec/units/release_build_executor_spec.rb +53 -14
  364. data/spec/units/release_build_planner_spec.rb +15 -3
  365. data/spec/units/reportinator_spec.rb +5 -5
  366. data/spec/units/standin_headerinator_spec.rb +31 -1
  367. data/spec/units/test_build_executor_spec.rb +107 -5
  368. data/spec/units/test_build_planner_spec.rb +104 -2
  369. data/spec/units/test_build_setup_spec.rb +96 -12
  370. data/spec/units/test_context_extractor_spec.rb +25 -0
  371. data/spec/units/test_file_preprocessinator_spec.rb +17 -1
  372. data/spec/units/test_includes_extractinator_spec.rb +5 -1
  373. data/spec/units/test_invoker/objects_wiring_spec.rb +6 -3
  374. data/spec/units/test_invoker_spec.rb +14 -1
  375. data/spec/units/test_source_file_directive_resolver_spec.rb +38 -7
  376. data/spec/units/tool_executor_spec.rb +26 -0
  377. data/spec/units/yaml_wrapper_spec.rb +11 -0
  378. metadata +122 -33
  379. data/lib/ceedling/file_path_collection_utils.rb +0 -164
  380. data/site-local/assets/stylesheets/main.ec1eaa64.min.css +0 -1
  381. data/site-local/assets/stylesheets/main.ec1eaa64.min.css.map +0 -1
  382. data/site-local/assets/stylesheets/palette.ab4e12ef.min.css +0 -1
  383. data/site-local/assets/stylesheets/palette.ab4e12ef.min.css.map +0 -1
@@ -21,7 +21,7 @@
21
21
 
22
22
 
23
23
  <link rel="icon" href="../assets/images/favicon.png">
24
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
24
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.8.0">
25
25
 
26
26
 
27
27
 
@@ -29,10 +29,10 @@
29
29
 
30
30
 
31
31
 
32
- <link rel="stylesheet" href="../assets/stylesheets/main.ec1eaa64.min.css">
32
+ <link rel="stylesheet" href="../assets/stylesheets/main.57a0d79d.min.css">
33
33
 
34
34
 
35
- <link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
35
+ <link rel="stylesheet" href="../assets/stylesheets/palette.fb2fffe2.min.css">
36
36
 
37
37
 
38
38
 
@@ -89,30 +89,16 @@
89
89
  </div>
90
90
  <div data-md-component="announce">
91
91
 
92
- <aside class="md-banner">
93
- <div class="md-banner__inner md-grid md-typeset">
94
-
95
-
96
-
97
-
98
- </div>
99
-
100
- </aside>
101
-
102
92
  </div>
103
93
 
104
94
  <div data-md-color-scheme="default" data-md-component="outdated" hidden>
105
95
 
106
96
  <aside class="md-banner md-banner--warning">
107
97
  <div class="md-banner__inner md-grid md-typeset">
108
-
109
-
110
- You are not viewing the latest version.
98
+ You are not viewing the latest version.
111
99
  <a href="../..">
112
100
  <strong>Click here to go to latest.</strong>
113
101
  </a>
114
-
115
-
116
102
  </div>
117
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>
118
104
  </aside>
@@ -4458,7 +4444,10 @@ run on a TeamCity build server but not in your local development environment.</p
4458
4444
  underlying Java language in which TeamCity is written,
4459
4445
  <code>package_or_namespace.ClassName.TestName</code>.</p>
4460
4446
  <p>This plugin maps Ceedling conventions to TeamCity test service messages as
4461
- <code>context.TestFilepath.TestCaseName</code>.</p>
4447
+ <code>context.TestFilepath.TestCaseName</code>. Each test suite is named by its test file’s
4448
+ path from your project’s root, without its file extension (e.g.
4449
+ <code>test/TestUsartModel</code>), so same-named test files in different directories are
4450
+ distinct suites.</p>
4462
4451
  <ul>
4463
4452
  <li><code>context</code> Your build's context defaults to <code>test</code>. Certain other test build
4464
4453
  plugins (e.g. GCov) provide a different context (<code>gcov</code>) for test builds,
@@ -4469,16 +4458,16 @@ underlying Java language in which TeamCity is written,
4469
4458
  </ul>
4470
4459
  <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="w"> </span>&gt;<span class="w"> </span>ceedling<span class="w"> </span>test:UsartModel
4471
4460
  </code></pre></div>
4472
- <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>##teamcity[testSuiteStarted name=&#39;TestUsartModel&#39; flowId=&#39;15&#39;]
4473
- <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>##teamcity[testStarted name=&#39;test.test/TestUsartModel.testGetBaudRateRegisterSettingShouldReturnAppropriateBaudRateRegisterSetting&#39; flowId=&#39;15&#39;]
4474
- <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>##teamcity[testFinished name=&#39;test.test/TestUsartModel.testGetBaudRateRegisterSettingShouldReturnAppropriateBaudRateRegisterSetting&#39; duration=&#39;81&#39; flowId=&#39;15&#39;]
4475
- <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>##teamcity[testStarted name=&#39;test.test/TestUsartModel.testShouldReturnErrorMessageUponInvalidTemperatureValue&#39; flowId=&#39;15&#39;]
4476
- <a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>##teamcity[testFinished name=&#39;test.test/TestUsartModel.testShouldReturnErrorMessageUponInvalidTemperatureValue&#39; duration=&#39;81&#39; flowId=&#39;15&#39;]
4477
- <a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>##teamcity[testStarted name=&#39;test.test/TestUsartModel.testGetFormattedTemperatureFormatsTemperatureFromCalculatorAppropriately&#39; flowId=&#39;15&#39;]
4478
- <a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a>##teamcity[testFailed name=&#39;test.test/TestUsartModel.testGetFormattedTemperatureFormatsTemperatureFromCalculatorAppropriately&#39; message=&#39;Function TemperatureFilter_GetTemperatureInCelcius() called more times than expected.&#39; details=&#39;File: test/TestUsartModel.c Line: 25&#39; flowId=&#39;15&#39;]
4479
- <a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>##teamcity[testFinished name=&#39;test.test/TestUsartModel.testGetFormattedTemperatureFormatsTemperatureFromCalculatorAppropriately&#39; duration=&#39;81&#39; flowId=&#39;15&#39;]
4480
- <a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a>##teamcity[testIgnored name=&#39;test.test/TestUsartModel.testShouldReturnWakeupMessage&#39; flowId=&#39;15&#39;]
4481
- <a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a>##teamcity[testSuiteFinished name=&#39;TestUsartModel&#39; flowId=&#39;15&#39;]
4461
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>##teamcity[testSuiteStarted name='test/TestUsartModel' flowId='15']
4462
+ <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>##teamcity[testStarted name='test.test/TestUsartModel.testGetBaudRateRegisterSettingShouldReturnAppropriateBaudRateRegisterSetting' flowId='15']
4463
+ <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>##teamcity[testFinished name='test.test/TestUsartModel.testGetBaudRateRegisterSettingShouldReturnAppropriateBaudRateRegisterSetting' duration='81' flowId='15']
4464
+ <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>##teamcity[testStarted name='test.test/TestUsartModel.testShouldReturnErrorMessageUponInvalidTemperatureValue' flowId='15']
4465
+ <a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>##teamcity[testFinished name='test.test/TestUsartModel.testShouldReturnErrorMessageUponInvalidTemperatureValue' duration='81' flowId='15']
4466
+ <a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>##teamcity[testStarted name='test.test/TestUsartModel.testGetFormattedTemperatureFormatsTemperatureFromCalculatorAppropriately' flowId='15']
4467
+ <a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a>##teamcity[testFailed name='test.test/TestUsartModel.testGetFormattedTemperatureFormatsTemperatureFromCalculatorAppropriately' message='Function TemperatureFilter_GetTemperatureInCelcius() called more times than expected.' details='File: test/TestUsartModel.c Line: 25' flowId='15']
4468
+ <a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>##teamcity[testFinished name='test.test/TestUsartModel.testGetFormattedTemperatureFormatsTemperatureFromCalculatorAppropriately' duration='81' flowId='15']
4469
+ <a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a>##teamcity[testIgnored name='test.test/TestUsartModel.testShouldReturnWakeupMessage' flowId='15']
4470
+ <a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a>##teamcity[testSuiteFinished name='test/TestUsartModel' flowId='15']
4482
4471
  </code></pre></div>
4483
4472
  <p><br/><br/></p>
4484
4473
 
@@ -4548,10 +4537,10 @@ underlying Java language in which TeamCity is written,
4548
4537
 
4549
4538
 
4550
4539
 
4551
- <script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script>
4540
+ <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>
4552
4541
 
4553
4542
 
4554
- <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
4543
+ <script src="../assets/javascripts/bundle.c21346df.min.js"></script>
4555
4544
 
4556
4545
 
4557
4546
  </body>
@@ -21,7 +21,7 @@
21
21
 
22
22
 
23
23
  <link rel="icon" href="../assets/images/favicon.png">
24
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
24
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.8.0">
25
25
 
26
26
 
27
27
 
@@ -29,10 +29,10 @@
29
29
 
30
30
 
31
31
 
32
- <link rel="stylesheet" href="../assets/stylesheets/main.ec1eaa64.min.css">
32
+ <link rel="stylesheet" href="../assets/stylesheets/main.57a0d79d.min.css">
33
33
 
34
34
 
35
- <link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
35
+ <link rel="stylesheet" href="../assets/stylesheets/palette.fb2fffe2.min.css">
36
36
 
37
37
 
38
38
 
@@ -89,30 +89,16 @@
89
89
  </div>
90
90
  <div data-md-component="announce">
91
91
 
92
- <aside class="md-banner">
93
- <div class="md-banner__inner md-grid md-typeset">
94
-
95
-
96
-
97
-
98
- </div>
99
-
100
- </aside>
101
-
102
92
  </div>
103
93
 
104
94
  <div data-md-color-scheme="default" data-md-component="outdated" hidden>
105
95
 
106
96
  <aside class="md-banner md-banner--warning">
107
97
  <div class="md-banner__inner md-grid md-typeset">
108
-
109
-
110
- You are not viewing the latest version.
98
+ You are not viewing the latest version.
111
99
  <a href="../..">
112
100
  <strong>Click here to go to latest.</strong>
113
101
  </a>
114
-
115
-
116
102
  </div>
117
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>
118
104
  </aside>
@@ -5095,13 +5081,17 @@ Without its own entries for an operation, a <code>sanitize:</code> build uses <c
5095
5081
  <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>$<span class="w"> </span>ceedling<span class="w"> </span>sanitize:all
5096
5082
  </code></pre></div>
5097
5083
  <h3 id="run-sanitizers-for-a-single-test-file">Run sanitizers for a single test file</h3>
5098
- <p>Pass the test filename, no path:</p>
5084
+ <p>Pass the test filename:</p>
5099
5085
  <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>ceedling<span class="w"> </span>sanitize:test_my_module.c
5100
5086
  </code></pre></div>
5101
5087
  <p>You can also pass just the source filename. Ceedling locates the corresponding
5102
5088
  test file:</p>
5103
5089
  <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>$<span class="w"> </span>ceedling<span class="w"> </span>sanitize:my_module.c
5104
5090
  </code></pre></div>
5091
+ <p>As with <a href="../getting-started/command-line.html#ceedling-test"><code>test:</code> tasks</a>, add
5092
+ as much of the file’s path as needed to tell same-named test files apart:</p>
5093
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>$<span class="w"> </span>ceedling<span class="w"> </span>sanitize:unit/test_my_module.c
5094
+ </code></pre></div>
5105
5095
  <h2 id="how-findings-are-reported">How findings are reported</h2>
5106
5096
  <p>A sanitizer’s finding is reported where you would look for a test failure.</p>
5107
5097
  <ul>
@@ -5111,12 +5101,12 @@ test file:</p>
5111
5101
  its location, and the test’s log. It replaces Ceedling’s generic crash notice
5112
5102
  and its backtrace advice:</li>
5113
5103
  </ul>
5114
- <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>☠️ ERROR: Test executable `test_buffer.out` was stopped by a sanitizer finding.
5115
- <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>&gt; AddressSanitizer heap-buffer-overflow at test/test_buffer.c:21
5116
- <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>&gt; Boom log: build/artifacts/sanitize/sanitize/test_buffer.log
5104
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>☠️ ERROR: Test executable `test_buffer.out` was stopped by a sanitizer finding.
5105
+ <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>&gt; AddressSanitizer heap-buffer-overflow at test/test_buffer.c:21
5106
+ <a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>&gt; Boom log: build/artifacts/sanitize/sanitize/test/test_buffer.log
5117
5107
  </code></pre></div>
5118
5108
  <p>The test’s failure message carries the same on one line:</p>
5119
- <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>AddressSanitizer heap-buffer-overflow at test/test_buffer.c:21 (Boom log: build/artifacts/sanitize/sanitize/test_buffer.log)
5109
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>AddressSanitizer heap-buffer-overflow at test/test_buffer.c:21 (Boom log: build/artifacts/sanitize/sanitize/test/test_buffer.log)
5120
5110
  </code></pre></div>
5121
5111
  <ul>
5122
5112
  <li>
@@ -5131,54 +5121,54 @@ test file:</p>
5131
5121
  <p>Each finding is also logged as the test runs, except one a crash notice
5132
5122
  names. With <a href="#fail_build"><code>:fail_build:</code></a> enabled, the build failure summary
5133
5123
  counts the findings and names the reports written:</p>
5134
- <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a> • [SANITIZE] Sanitizers found 2 problems in 2 tests. See the reports in build/artifacts/sanitize/sanitize: sanitize.log, sanitize.json.
5124
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a> • [SANITIZE] Sanitizers found 2 problems in 2 tests. See the reports in build/artifacts/sanitize/sanitize: sanitize.log, sanitize.json.
5135
5125
  </code></pre></div>
5136
5126
  <h3 id="example-console-output">Example console output</h3>
5137
5127
  <p>These excerpts come from real runs. Build progress lines are left out.</p>
5138
5128
  <p>A halted test, with <code>:reports</code> set to <code>[:text, :json, :sarif]</code>:</p>
5139
- <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>☠️ ERROR: Test executable `test_nosanitize_heap_buffer_overflow.out` was stopped by a sanitizer finding.
5140
- <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a>&gt; AddressSanitizer heap-buffer-overflow at test/test_nosanitize_heap_buffer_overflow.c:29
5141
- <a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a>&gt; Boom log: build/artifacts/sanitize/sanitize/test_nosanitize_heap_buffer_overflow.log
5142
- <a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a>
5143
- <a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a>SANITIZE: FAILED TEST SUMMARY
5144
- <a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a>[test/test_nosanitize_heap_buffer_overflow.c]
5145
- <a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a> Test: test_writes_past_its_buffer
5146
- <a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a> At line (27): &quot;AddressSanitizer heap-buffer-overflow at test/test_nosanitize_heap_buffer_overflow.c:29 (Boom log: build/artifacts/sanitize/sanitize/test_nosanitize_heap_buffer_overflow.log)&quot;
5147
- <a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a>
5148
- <a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a>SANITIZE: ❌ OVERALL TEST SUMMARY
5149
- <a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a>TESTED: 2
5150
- <a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a>PASSED: 1
5151
- <a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a>FAILED: 1
5152
- <a id="__codelineno-15-14" name="__codelineno-15-14" href="#__codelineno-15-14"></a>IGNORED: 0
5153
- <a id="__codelineno-15-15" name="__codelineno-15-15" href="#__codelineno-15-15"></a>
5154
- <a id="__codelineno-15-16" name="__codelineno-15-16" href="#__codelineno-15-16"></a>❌ BUILD FAILURE SUMMARY
5155
- <a id="__codelineno-15-17" name="__codelineno-15-17" href="#__codelineno-15-17"></a> • [SANITIZE] Unit test failures
5156
- <a id="__codelineno-15-18" name="__codelineno-15-18" href="#__codelineno-15-18"></a> • [SANITIZE] Sanitizers found 1 problem in 1 test. See the reports in build/artifacts/sanitize/sanitize: sanitize.log, sanitize.json, sanitize.sarif.
5157
- </code></pre></div>
5158
- <p>A leak. Every test passes, and the leak alone fails the build. The test’s
5159
- own output section shows the sanitizer’s report:</p>
5160
- <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>🪲 ERROR: test_nosanitize_leak: LeakSanitizer memory-leak at test/test_nosanitize_leak.c:32 ➡️ see build/artifacts/sanitize/sanitize/test_nosanitize_leak.log
5161
- <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>
5162
- <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>SANITIZE: TEST OUTPUT
5163
- <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a>[test/test_nosanitize_leak.c]
5164
- <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> - &quot;==456==ERROR: LeakSanitizer: detected memory leaks&quot;
5165
- <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a> - &quot;Direct leak of 32 byte(s) in 1 object(s) allocated from:&quot;
5166
- <a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a> - &quot; #1 0x55f0b16d72e9 in test_loses_its_allocation test/test_nosanitize_leak.c:32&quot;
5167
- <a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a> - &quot;SUMMARY: AddressSanitizer: 32 byte(s) leaked in 1 allocation(s).&quot;
5129
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>☠️ ERROR: Test executable `test_nosanitize_heap_buffer_overflow.out` was stopped by a sanitizer finding.
5130
+ <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>&gt; AddressSanitizer heap-buffer-overflow at test/test_nosanitize_heap_buffer_overflow.c:29
5131
+ <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>&gt; Boom log: build/artifacts/sanitize/sanitize/test/test_nosanitize_heap_buffer_overflow.log
5132
+ <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a>
5133
+ <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a>SANITIZE: FAILED TEST SUMMARY
5134
+ <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a>[test/test_nosanitize_heap_buffer_overflow.c]
5135
+ <a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a> Test: test_writes_past_its_buffer
5136
+ <a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a> At line (27): "AddressSanitizer heap-buffer-overflow at test/test_nosanitize_heap_buffer_overflow.c:29 (Boom log: build/artifacts/sanitize/sanitize/test/test_nosanitize_heap_buffer_overflow.log)"
5168
5137
  <a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a>
5169
- <a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a>SANITIZE: ✅ OVERALL TEST SUMMARY
5138
+ <a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a>SANITIZE: ❌ OVERALL TEST SUMMARY
5170
5139
  <a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a>TESTED: 2
5171
- <a id="__codelineno-16-12" name="__codelineno-16-12" href="#__codelineno-16-12"></a>PASSED: 2
5172
- <a id="__codelineno-16-13" name="__codelineno-16-13" href="#__codelineno-16-13"></a>FAILED: 0
5140
+ <a id="__codelineno-16-12" name="__codelineno-16-12" href="#__codelineno-16-12"></a>PASSED: 1
5141
+ <a id="__codelineno-16-13" name="__codelineno-16-13" href="#__codelineno-16-13"></a>FAILED: 1
5173
5142
  <a id="__codelineno-16-14" name="__codelineno-16-14" href="#__codelineno-16-14"></a>IGNORED: 0
5174
5143
  <a id="__codelineno-16-15" name="__codelineno-16-15" href="#__codelineno-16-15"></a>
5175
5144
  <a id="__codelineno-16-16" name="__codelineno-16-16" href="#__codelineno-16-16"></a>❌ BUILD FAILURE SUMMARY
5176
- <a id="__codelineno-16-17" name="__codelineno-16-17" href="#__codelineno-16-17"></a> • [SANITIZE] Sanitizers found 1 problem in 1 test. See the reports in build/artifacts/sanitize/sanitize: sanitize.log.
5145
+ <a id="__codelineno-16-17" name="__codelineno-16-17" href="#__codelineno-16-17"></a> • [SANITIZE] Unit test failures
5146
+ <a id="__codelineno-16-18" name="__codelineno-16-18" href="#__codelineno-16-18"></a> • [SANITIZE] Sanitizers found 1 problem in 1 test. See the reports in build/artifacts/sanitize/sanitize: sanitize.log, sanitize.json, sanitize.sarif.
5147
+ </code></pre></div>
5148
+ <p>A leak. Every test passes, and the leak alone fails the build. The test’s
5149
+ own output section shows the sanitizer’s report:</p>
5150
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>🪲 ERROR: test/test_nosanitize_leak: LeakSanitizer memory-leak at test/test_nosanitize_leak.c:32 ➡️ see build/artifacts/sanitize/sanitize/test/test_nosanitize_leak.log
5151
+ <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>
5152
+ <a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a>SANITIZE: TEST OUTPUT
5153
+ <a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a>[test/test_nosanitize_leak.c]
5154
+ <a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> - "==456==ERROR: LeakSanitizer: detected memory leaks"
5155
+ <a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a> - "Direct leak of 32 byte(s) in 1 object(s) allocated from:"
5156
+ <a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a> - " #1 0x55f0b16d72e9 in test_loses_its_allocation test/test_nosanitize_leak.c:32"
5157
+ <a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a> - "SUMMARY: AddressSanitizer: 32 byte(s) leaked in 1 allocation(s)."
5158
+ <a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a>
5159
+ <a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a>SANITIZE: ✅ OVERALL TEST SUMMARY
5160
+ <a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a>TESTED: 2
5161
+ <a id="__codelineno-17-12" name="__codelineno-17-12" href="#__codelineno-17-12"></a>PASSED: 2
5162
+ <a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a>FAILED: 0
5163
+ <a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a>IGNORED: 0
5164
+ <a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a>
5165
+ <a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a>❌ BUILD FAILURE SUMMARY
5166
+ <a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a> • [SANITIZE] Sanitizers found 1 problem in 1 test. See the reports in build/artifacts/sanitize/sanitize: sanitize.log.
5177
5167
  </code></pre></div>
5178
5168
  <p>A clean build adds nothing to the test summary, even when JSON or SARIF
5179
5169
  reports are written.</p>
5180
5170
  <p>On macOS, a leak sanitizer or <code>:detect_leaks</code> logs this warning at startup:</p>
5181
- <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>⚠️ WARNING: Leak detection is not supported on macOS and has been disabled.
5171
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>⚠️ WARNING: Leak detection is not supported on macOS and has been disabled.
5182
5172
  </code></pre></div>
5183
5173
  <h3 id="backtraces">Backtraces</h3>
5184
5174
  <p>With <a href="../configuration/reference/project.html#use_backtrace"><code>:use_backtrace</code></a>
@@ -5189,13 +5179,14 @@ named by its own finding.</p>
5189
5179
  The leak sanitizer cannot run under a debugger, and a sanitizer’s own report
5190
5180
  already includes the stack.</p>
5191
5181
  <h2 id="artifacts">Artifacts</h2>
5192
- <p>Each test with findings has a log of its sanitizer reports:</p>
5193
- <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>build/artifacts/sanitize/sanitize/&lt;test_name&gt;.log
5182
+ <p>Each test with findings has a log of its sanitizer reports, placed by the
5183
+ <a href="../testing-guide/conventions.html#test-names-build-output">test’s name</a>, its path from your project’s root:</p>
5184
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>build/artifacts/sanitize/sanitize/&lt;test_name&gt;.log
5194
5185
  </code></pre></div>
5195
5186
  <p>The configured reports are written beside the logs:</p>
5196
- <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>build/artifacts/sanitize/sanitize/sanitize.log
5197
- <a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a>build/artifacts/sanitize/sanitize/sanitize.json
5198
- <a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a>build/artifacts/sanitize/sanitize/sanitize.sarif
5187
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>build/artifacts/sanitize/sanitize/sanitize.log
5188
+ <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a>build/artifacts/sanitize/sanitize/sanitize.json
5189
+ <a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a>build/artifacts/sanitize/sanitize/sanitize.sarif
5199
5190
  </code></pre></div>
5200
5191
  <p>With <code>:test_builds</code> enabled, an ordinary <code>test:</code> build writes its logs and
5201
5192
  reports to <code>build/artifacts/sanitize/test/</code>.</p>
@@ -5322,10 +5313,10 @@ kept apart in their own builds.</p>
5322
5313
 
5323
5314
 
5324
5315
 
5325
- <script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script>
5316
+ <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>
5326
5317
 
5327
5318
 
5328
- <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
5319
+ <script src="../assets/javascripts/bundle.c21346df.min.js"></script>
5329
5320
 
5330
5321
 
5331
5322
  </body>
@@ -21,7 +21,7 @@
21
21
 
22
22
 
23
23
  <link rel="icon" href="../assets/images/favicon.png">
24
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
24
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.8.0">
25
25
 
26
26
 
27
27
 
@@ -29,10 +29,10 @@
29
29
 
30
30
 
31
31
 
32
- <link rel="stylesheet" href="../assets/stylesheets/main.ec1eaa64.min.css">
32
+ <link rel="stylesheet" href="../assets/stylesheets/main.57a0d79d.min.css">
33
33
 
34
34
 
35
- <link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
35
+ <link rel="stylesheet" href="../assets/stylesheets/palette.fb2fffe2.min.css">
36
36
 
37
37
 
38
38
 
@@ -89,30 +89,16 @@
89
89
  </div>
90
90
  <div data-md-component="announce">
91
91
 
92
- <aside class="md-banner">
93
- <div class="md-banner__inner md-grid md-typeset">
94
-
95
-
96
-
97
-
98
- </div>
99
-
100
- </aside>
101
-
102
92
  </div>
103
93
 
104
94
  <div data-md-color-scheme="default" data-md-component="outdated" hidden>
105
95
 
106
96
  <aside class="md-banner md-banner--warning">
107
97
  <div class="md-banner__inner md-grid md-typeset">
108
-
109
-
110
- You are not viewing the latest version.
98
+ You are not viewing the latest version.
111
99
  <a href="../..">
112
100
  <strong>Click here to go to latest.</strong>
113
101
  </a>
114
-
115
-
116
102
  </div>
117
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>
118
104
  </aside>
@@ -4743,7 +4729,7 @@ building and then running test executables under Valgrind’s Memcheck tool.</p>
4743
4729
  <ul>
4744
4730
  <li><strong>Whole test suite</strong>: By running <code>ceedling valgrind:all</code>, all test
4745
4731
  executables are built and then each is run under Valgrind. A separate log
4746
- file is produced for each test executable in <code>build/artifacts/valgrind/</code>.</li>
4732
+ file is produced for each test executable beneath <code>build/artifacts/valgrind/</code>.</li>
4747
4733
  <li><strong>Single test file</strong>: By running <code>ceedling valgrind:&lt;filename&gt;</code>, a single
4748
4734
  test executable is built and run under Valgrind, producing one log file.</li>
4749
4735
  </ul>
@@ -4803,8 +4789,8 @@ defaults, redefine the argument list in your project configuration:</p>
4803
4789
  <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="nt">:valgrind</span><span class="p">:</span>
4804
4790
  <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="nt">:arguments</span><span class="p">:</span>
4805
4791
  <a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span><span class="c1"># A subset of the default arguments</span>
4806
- <a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;--leak-check=full&quot;</span>
4807
- <a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;--show-leak-kinds=all&quot;</span>
4792
+ <a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">"--leak-check=full"</span>
4793
+ <a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">"--show-leak-kinds=all"</span>
4808
4794
  </code></pre></div>
4809
4795
  <h3 id="fail_build"><code>:fail_build:</code></h3>
4810
4796
  <p>When <code>true</code> (the default), any memory errors are logged immediately after
@@ -4856,23 +4842,28 @@ text log. Useful for CI systems that consume Valgrind output directly.</p>
4856
4842
  <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>$<span class="w"> </span>ceedling<span class="w"> </span>valgrind:all
4857
4843
  </code></pre></div>
4858
4844
  <h3 id="run-valgrind-for-a-single-test-file">Run Valgrind for a single test file</h3>
4859
- <p>Build and run Valgrind for one test file (pass the filename, no path):</p>
4845
+ <p>Build and run Valgrind for one test file (pass the filename):</p>
4860
4846
  <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>$<span class="w"> </span>ceedling<span class="w"> </span>valgrind:test_my_module.c
4861
4847
  </code></pre></div>
4862
4848
  <p>You can also pass just the source filename; Ceedling will locate the
4863
4849
  corresponding test file automatically:</p>
4864
4850
  <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>$<span class="w"> </span>ceedling<span class="w"> </span>valgrind:my_module.c
4865
4851
  </code></pre></div>
4852
+ <p>As with <a href="../getting-started/command-line.html#ceedling-test"><code>test:</code> tasks</a>, add
4853
+ as much of the file’s path as needed to tell same-named test files apart:</p>
4854
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>$<span class="w"> </span>ceedling<span class="w"> </span>valgrind:unit/test_my_module.c
4855
+ </code></pre></div>
4866
4856
  <h2 id="artifacts">Artifacts</h2>
4867
4857
  <p>Each test executable produces a Valgrind log file at:</p>
4868
- <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>build/artifacts/valgrind/&lt;test_name&gt;.log
4858
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>build/artifacts/valgrind/&lt;test_name&gt;.log
4869
4859
  </code></pre></div>
4870
4860
  <p>With <a href="#xml_report"><code>:xml_report:</code></a> enabled, a machine-readable report is written
4871
4861
  beside it:</p>
4872
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>build/artifacts/valgrind/&lt;test_name&gt;.xml
4862
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>build/artifacts/valgrind/&lt;test_name&gt;.xml
4873
4863
  </code></pre></div>
4874
- <p>For example, running <code>ceedling valgrind:test_my_module.c</code> produces:</p>
4875
- <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>build/artifacts/valgrind/test_my_module.log
4864
+ <p>A <a href="../testing-guide/conventions.html#test-names-build-output">test’s name</a> is its path from your project’s root. For example,
4865
+ running <code>ceedling valgrind:test/test_my_module.c</code> produces:</p>
4866
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>build/artifacts/valgrind/test/test_my_module.log
4876
4867
  </code></pre></div>
4877
4868
  <p>These log files contain the full Valgrind Memcheck output, including any
4878
4869
  detected memory errors, leak summaries, and (with <code>--track-origins=yes</code>)
@@ -4881,49 +4872,49 @@ the origin of uninitialized values.</p>
4881
4872
  <h2 id="console-output">Console output</h2>
4882
4873
  <p>These excerpts come from real runs. Build progress lines are left out.</p>
4883
4874
  <p>A clean run adds one notice after the test summary:</p>
4884
- <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>VALGRIND: ✅ OVERALL TEST SUMMARY
4885
- <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>TESTED: 2
4886
- <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>PASSED: 1
4887
- <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>FAILED: 0
4888
- <a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a>IGNORED: 1
4889
- <a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a>
4890
- <a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a>ℹ️ NOTICE: Wrote 1 Valgrind report to build/artifacts/valgrind/
4875
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>VALGRIND: ✅ OVERALL TEST SUMMARY
4876
+ <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>TESTED: 2
4877
+ <a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>PASSED: 1
4878
+ <a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a>FAILED: 0
4879
+ <a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a>IGNORED: 1
4880
+ <a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a>
4881
+ <a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a>ℹ️ NOTICE: Wrote 1 Valgrind report to build/artifacts/valgrind/
4891
4882
  </code></pre></div>
4892
4883
  <p>A test that a memory error ends gets a notice naming the first error and its
4893
4884
  report. It replaces Ceedling’s generic crash notice:</p>
4894
- <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>☠️ ERROR: Test executable `test_nosanitize_crash_sigsegv.out` terminated with Valgrind memory errors.
4895
- <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>&gt; Invalid read of size 4 at test_nosanitize_crash_sigsegv.c:32
4896
- <a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>&gt; Boom log: build/artifacts/valgrind/test_nosanitize_crash_sigsegv.log
4897
- <a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a>
4898
- <a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a>VALGRIND: FAILED TEST SUMMARY
4899
- <a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a>[test/test_nosanitize_crash_sigsegv.c]
4900
- <a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a> Test: test_add_numbers_will_fail
4901
- <a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a> At line (28): &quot;Test case crashed &gt;&gt; Segmentation fault&quot;
4902
- <a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a>
4903
- <a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a>VALGRIND: ❌ OVERALL TEST SUMMARY
4904
- <a id="__codelineno-13-11" name="__codelineno-13-11" href="#__codelineno-13-11"></a>TESTED: 2
4905
- <a id="__codelineno-13-12" name="__codelineno-13-12" href="#__codelineno-13-12"></a>PASSED: 1
4906
- <a id="__codelineno-13-13" name="__codelineno-13-13" href="#__codelineno-13-13"></a>FAILED: 1
4907
- <a id="__codelineno-13-14" name="__codelineno-13-14" href="#__codelineno-13-14"></a>IGNORED: 0
4908
- <a id="__codelineno-13-15" name="__codelineno-13-15" href="#__codelineno-13-15"></a>
4909
- <a id="__codelineno-13-16" name="__codelineno-13-16" href="#__codelineno-13-16"></a>ℹ️ NOTICE: Wrote 1 Valgrind report to build/artifacts/valgrind/
4910
- <a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a>
4911
- <a id="__codelineno-13-18" name="__codelineno-13-18" href="#__codelineno-13-18"></a>❌ BUILD FAILURE SUMMARY
4912
- <a id="__codelineno-13-19" name="__codelineno-13-19" href="#__codelineno-13-19"></a> • [VALGRIND] Unit test failures
4913
- <a id="__codelineno-13-20" name="__codelineno-13-20" href="#__codelineno-13-20"></a> • [VALGRIND] Valgrind detected 2 memory errors across 1 test
4885
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>☠️ ERROR: Test executable `test_nosanitize_crash_sigsegv.out` terminated with Valgrind memory errors.
4886
+ <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>&gt; Invalid read of size 4 at test_nosanitize_crash_sigsegv.c:32
4887
+ <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>&gt; Boom log: build/artifacts/valgrind/test/test_nosanitize_crash_sigsegv.log
4888
+ <a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a>
4889
+ <a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a>VALGRIND: FAILED TEST SUMMARY
4890
+ <a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a>[test/test_nosanitize_crash_sigsegv.c]
4891
+ <a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a> Test: test_add_numbers_will_fail
4892
+ <a id="__codelineno-14-8" name="__codelineno-14-8" href="#__codelineno-14-8"></a> At line (28): "Test case crashed &gt;&gt; Segmentation fault"
4893
+ <a id="__codelineno-14-9" name="__codelineno-14-9" href="#__codelineno-14-9"></a>
4894
+ <a id="__codelineno-14-10" name="__codelineno-14-10" href="#__codelineno-14-10"></a>VALGRIND: ❌ OVERALL TEST SUMMARY
4895
+ <a id="__codelineno-14-11" name="__codelineno-14-11" href="#__codelineno-14-11"></a>TESTED: 2
4896
+ <a id="__codelineno-14-12" name="__codelineno-14-12" href="#__codelineno-14-12"></a>PASSED: 1
4897
+ <a id="__codelineno-14-13" name="__codelineno-14-13" href="#__codelineno-14-13"></a>FAILED: 1
4898
+ <a id="__codelineno-14-14" name="__codelineno-14-14" href="#__codelineno-14-14"></a>IGNORED: 0
4899
+ <a id="__codelineno-14-15" name="__codelineno-14-15" href="#__codelineno-14-15"></a>
4900
+ <a id="__codelineno-14-16" name="__codelineno-14-16" href="#__codelineno-14-16"></a>ℹ️ NOTICE: Wrote 1 Valgrind report to build/artifacts/valgrind/
4901
+ <a id="__codelineno-14-17" name="__codelineno-14-17" href="#__codelineno-14-17"></a>
4902
+ <a id="__codelineno-14-18" name="__codelineno-14-18" href="#__codelineno-14-18"></a>❌ BUILD FAILURE SUMMARY
4903
+ <a id="__codelineno-14-19" name="__codelineno-14-19" href="#__codelineno-14-19"></a> • [VALGRIND] Unit test failures
4904
+ <a id="__codelineno-14-20" name="__codelineno-14-20" href="#__codelineno-14-20"></a> • [VALGRIND] Valgrind detected 2 memory errors across 1 test
4914
4905
  </code></pre></div>
4915
4906
  <p>With <a href="#fail_build"><code>:fail_build:</code></a> set to <code>false</code>, the same run omits the last
4916
4907
  line. Only the test failure fails the build.</p>
4917
4908
  <p>A test that completes despite memory errors logs one line as it runs:</p>
4918
- <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>🪲 ERROR: Valgrind detected 2 memory errors in test_example ➡️ see build/artifacts/valgrind/test_example.log
4909
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>🪲 ERROR: Valgrind detected 2 memory errors in test/test_example ➡️ see build/artifacts/valgrind/test/test_example.log
4919
4910
  </code></pre></div>
4920
4911
  <p>A test whose report is missing logs a warning, since its memory error status
4921
4912
  is unknown:</p>
4922
- <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>⚠️ WARNING: Valgrind wrote no report for test_example at build/artifacts/valgrind/test_example.log. Memory error status is unknown.
4913
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>⚠️ WARNING: Valgrind wrote no report for test/test_example at build/artifacts/valgrind/test/test_example.log. Memory error status is unknown.
4923
4914
  </code></pre></div>
4924
4915
  <h2 id="interpreting-results">Interpreting results</h2>
4925
4916
  <p>To review the log for a specific test:</p>
4926
- <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>cat<span class="w"> </span>build/artifacts/valgrind/test_my_module.log
4917
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>cat<span class="w"> </span>build/artifacts/valgrind/test/test_my_module.log
4927
4918
  </code></pre></div>
4928
4919
  <p>Common Valgrind findings include:</p>
4929
4920
  <table>
@@ -5021,10 +5012,10 @@ is unknown:</p>
5021
5012
 
5022
5013
 
5023
5014
 
5024
- <script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script>
5015
+ <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>
5025
5016
 
5026
5017
 
5027
- <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
5018
+ <script src="../assets/javascripts/bundle.c21346df.min.js"></script>
5028
5019
 
5029
5020
 
5030
5021
  </body>