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
@@ -19,7 +19,7 @@
19
19
 
20
20
 
21
21
  <link rel="icon" href="../../assets/images/favicon.png">
22
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
22
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.8.0">
23
23
 
24
24
 
25
25
 
@@ -27,10 +27,10 @@
27
27
 
28
28
 
29
29
 
30
- <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css">
30
+ <link rel="stylesheet" href="../../assets/stylesheets/main.57a0d79d.min.css">
31
31
 
32
32
 
33
- <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
33
+ <link rel="stylesheet" href="../../assets/stylesheets/palette.fb2fffe2.min.css">
34
34
 
35
35
 
36
36
 
@@ -87,30 +87,16 @@
87
87
  </div>
88
88
  <div data-md-component="announce">
89
89
 
90
- <aside class="md-banner">
91
- <div class="md-banner__inner md-grid md-typeset">
92
-
93
-
94
-
95
-
96
- </div>
97
-
98
- </aside>
99
-
100
90
  </div>
101
91
 
102
92
  <div data-md-color-scheme="default" data-md-component="outdated" hidden>
103
93
 
104
94
  <aside class="md-banner md-banner--warning">
105
95
  <div class="md-banner__inner md-grid md-typeset">
106
-
107
-
108
- You are not viewing the latest version.
96
+ You are not viewing the latest version.
109
97
  <a href="../../..">
110
98
  <strong>Click here to go to latest.</strong>
111
99
  </a>
112
-
113
-
114
100
  </div>
115
101
  <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>
116
102
  </aside>
@@ -4416,9 +4402,9 @@
4416
4402
  </div>
4417
4403
  <h2 id="example-rake-task">Example Rake task</h2>
4418
4404
  <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1"># Only tasks with description are listed by `ceedling -T`</span>
4419
- <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="n">desc</span><span class="w"> </span><span class="s2">&quot;Print hello world to console&quot;</span>
4405
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="n">desc</span><span class="w"> </span><span class="s2">"Print hello world to console"</span>
4420
4406
  <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="n">task</span><span class="w"> </span><span class="ss">:hello_world</span><span class="w"> </span><span class="k">do</span>
4421
- <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="w"> </span><span class="n">sh</span><span class="w"> </span><span class="s2">&quot;echo Hello World!&quot;</span>
4407
+ <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="w"> </span><span class="n">sh</span><span class="w"> </span><span class="s2">"echo Hello World!"</span>
4422
4408
  <a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="k">end</span>
4423
4409
  </code></pre></div>
4424
4410
  <p>Resulting, example command line:</p>
@@ -4518,10 +4504,10 @@ See <a href="../../getting-started/builds.html">Delta Builds</a> for how this tr
4518
4504
 
4519
4505
 
4520
4506
 
4521
- <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>
4507
+ <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>
4522
4508
 
4523
4509
 
4524
- <script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
4510
+ <script src="../../assets/javascripts/bundle.c21346df.min.js"></script>
4525
4511
 
4526
4512
 
4527
4513
  </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>
@@ -4143,6 +4129,23 @@
4143
4129
  </span>
4144
4130
  </a>
4145
4131
 
4132
+ <nav class="md-nav" aria-label="Documentation deployment">
4133
+ <ul class="md-nav__list">
4134
+
4135
+ <li class="md-nav__item">
4136
+ <a href="#revising-an-earlier-versions-documentation" class="md-nav__link">
4137
+ <span class="md-ellipsis">
4138
+
4139
+ Revising an earlier version’s documentation
4140
+
4141
+ </span>
4142
+ </a>
4143
+
4144
+ </li>
4145
+
4146
+ </ul>
4147
+ </nav>
4148
+
4146
4149
  </li>
4147
4150
 
4148
4151
  </ul>
@@ -4453,6 +4456,23 @@
4453
4456
  </span>
4454
4457
  </a>
4455
4458
 
4459
+ <nav class="md-nav" aria-label="Documentation deployment">
4460
+ <ul class="md-nav__list">
4461
+
4462
+ <li class="md-nav__item">
4463
+ <a href="#revising-an-earlier-versions-documentation" class="md-nav__link">
4464
+ <span class="md-ellipsis">
4465
+
4466
+ Revising an earlier version’s documentation
4467
+
4468
+ </span>
4469
+ </a>
4470
+
4471
+ </li>
4472
+
4473
+ </ul>
4474
+ </nav>
4475
+
4456
4476
  </li>
4457
4477
 
4458
4478
  </ul>
@@ -4533,9 +4553,17 @@ release.</p>
4533
4553
  <li><code>master</code> holds the latest release and subsequent patch releases.</li>
4534
4554
  <li><code>next_version</code> holds the next minor or major release.</li>
4535
4555
  </ul>
4536
- <p>Both branches are protected. Changes reach them only through pull requests, and
4537
- only a maintainer merges a pull request, once CI passes. Direct pushes,
4538
- force-pushes, and branch deletion are blocked.</p>
4556
+ <p>Both branches are protected by a GitHub ruleset. Changes reach them only through
4557
+ pull requests, and a pull request merges only once the <strong>CI Gate</strong> check passes.
4558
+ Direct pushes, force-pushes, and branch deletion are blocked. Only a maintainer
4559
+ merges a pull request.</p>
4560
+ <p>CI Gate reduces every CI job to one result. A pull request that changes only
4561
+ documentation skips the test suites and still passes CI Gate, so it is ready to
4562
+ merge in minutes. The development workflow guide describes <a href="https://github.com/ThrowTheSwitch/Ceedling/blob/master/.github/WORKFLOWS.md">what counts as
4563
+ documentation</a>.</p>
4564
+ <p>Maintainers squash-merge community pull requests, so each lands as one commit
4565
+ attributed to its author. Maintainers may merge their own branches with a merge
4566
+ commit to keep their history.</p>
4539
4567
  <h3 id="patch-work">Patch work</h3>
4540
4568
  <p>Branch from <code>master</code> for a patch fix. Open the pull request against <code>master</code>.</p>
4541
4569
  <p>Short-lived topic branches are the norm. Delete the branch once the pull request
@@ -4546,13 +4574,16 @@ merges.</p>
4546
4574
  <p><code>rake lint:changed</code> assumes this. It compares against <code>next_version</code> unless you
4547
4575
  name another branch or revision.</p>
4548
4576
  <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>rake<span class="w"> </span>lint:changed
4549
- <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span><span class="s2">&quot;lint:changed[master]&quot;</span>
4577
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span><span class="s2">"lint:changed[master]"</span>
4550
4578
  </code></pre></div>
4551
4579
  <h2 id="tags-drive-releases">Tags drive releases</h2>
4552
4580
  <p>Pushing a tag publishes. Nothing else does.</p>
4553
4581
  <p>Full releases are tagged on <code>master</code>. Pre-releases are tagged on <code>next_version</code>.
4554
4582
  Neither workflow checks which branch a tag points at, so the convention is yours
4555
4583
  to keep.</p>
4584
+ <p>Only repository administrators can create, move, or delete <code>v</code> tags. A pushed
4585
+ release tag is left where it is, so a published version always points at the code
4586
+ it was built from.</p>
4556
4587
  <table>
4557
4588
  <thead>
4558
4589
  <tr>
@@ -4565,17 +4596,22 @@ to keep.</p>
4565
4596
  <tr>
4566
4597
  <td><code>v1.2.0</code></td>
4567
4598
  <td><code>release.yml</code></td>
4568
- <td>GitHub release</td>
4599
+ <td>GitHub release, and the gem published to RubyGems.org</td>
4569
4600
  </tr>
4570
4601
  <tr>
4571
4602
  <td><code>v1.2.0-pre.1</code></td>
4572
4603
  <td><code>prerelease.yml</code></td>
4573
- <td>GitHub pre-release</td>
4604
+ <td>GitHub pre-release only</td>
4574
4605
  </tr>
4575
4606
  </tbody>
4576
4607
  </table>
4577
4608
  <p>A hyphenated suffix becomes a dot in the gem version, which is RubyGems
4578
4609
  pre-release notation. Tag <code>v1.2.0-pre.1</code> builds <code>ceedling-1.2.0.pre.1.gem</code>.</p>
4610
+ <p>A full release reaches RubyGems.org through <a href="https://guides.rubygems.org/trusted-publishing/">trusted publishing</a>. The release
4611
+ workflow exchanges its own GitHub identity for a short-lived RubyGems credential
4612
+ and pushes the gem it built. No maintainer holds or handles an API key.
4613
+ Pre-release gems are attached to the GitHub pre-release and never pushed to
4614
+ RubyGems.org.</p>
4579
4615
  <div class="admonition warning">
4580
4616
  <p class="admonition-title">Warning</p>
4581
4617
  <p>Neither workflow runs the test suite. Both build and publish directly from the
@@ -4618,9 +4654,12 @@ release, then commit and continue development.</p>
4618
4654
  <li>Push <code>v1.2.0-pre.1</code> from <code>next_version</code>. CI creates a GitHub-available pre-release.</li>
4619
4655
  <li>Iterate with <code>-pre.2</code> and onward as needed.</li>
4620
4656
  <li>Bring the work onto <code>master</code> once the release is ready.</li>
4621
- <li>Push <code>v1.2.0</code> from <code>master</code>. CI creates the GitHub-available release.</li>
4622
- <li>A maintainer with RubyGems permissions downloads the Ceedling gem from (4) and manually pushes to RubyGems.org.</li>
4623
- <li>Bump <code>lib/version.rb</code> and continue development.</li>
4657
+ <li>Date the release’s sections in <code>docs/Changelog.md</code>, <code>docs/BreakingChanges.md</code>, and <code>docs/KnownIssues.md</code>.</li>
4658
+ <li>Push <code>v1.2.0</code> from <code>master</code>. CI creates the GitHub-available release and publishes the gem to RubyGems.org.</li>
4659
+ <li>Bump <code>lib/version.rb</code> and continue development. Open the next release’s sections:</li>
4660
+ <li><code>docs/Changelog.md</code>: a new, empty section.</li>
4661
+ <li><code>docs/KnownIssues.md</code>: a copy of the released section. Remove each issue the next release resolves, and close the released section by naming it.</li>
4662
+ <li><code>docs/BreakingChanges.md</code>: a section only once the next release breaks something.</li>
4624
4663
  </ol>
4625
4664
  <h2 id="documentation-deployment">Documentation deployment</h2>
4626
4665
  <p>Documentation versions are deployed by hand, separately from the gem. These tasks
@@ -4630,6 +4669,22 @@ take a bare version number rather than a tag.</p>
4630
4669
  </code></pre></div>
4631
4670
  <p>The full task list is in the <a href="workflow.html#documentation">documentation section</a> of the development
4632
4671
  workflow guide.</p>
4672
+ <h3 id="revising-an-earlier-versions-documentation">Revising an earlier version’s documentation</h3>
4673
+ <p>Once a newer release becomes <code>latest</code>, its <code>docs/mkdocs/</code> content is the primary
4674
+ source of the published site. An earlier version’s published documentation can
4675
+ still need an occasional revision. A <code>docs-</code> tag records the source of each such
4676
+ version’s published documentation.</p>
4677
+ <ol>
4678
+ <li>Branch from the version’s <code>docs-&lt;version&gt;</code> tag, or from its release tag if it
4679
+ has no <code>docs-</code> tag yet.</li>
4680
+ <li>Revise <code>docs/mkdocs/</code>.</li>
4681
+ <li>Deploy without changing <code>latest</code>, for example <code>rake docs:deploy:release[1.1.0]</code>.</li>
4682
+ <li>Point the annotated <code>docs-&lt;version&gt;</code> tag at the deployed commit, with a message
4683
+ naming what was deployed. <code>docs-1.1.0</code> is an example.</li>
4684
+ </ol>
4685
+ <p>The branch need not merge anywhere. The tag is the record of what the published
4686
+ documentation was built from. Only repository administrators can create, move, or
4687
+ delete <code>docs-</code> tags.</p>
4633
4688
  <p><br/><br/></p>
4634
4689
 
4635
4690
 
@@ -4698,10 +4753,10 @@ workflow guide.</p>
4698
4753
 
4699
4754
 
4700
4755
 
4701
- <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>
4756
+ <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>
4702
4757
 
4703
4758
 
4704
- <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
4759
+ <script src="../assets/javascripts/bundle.c21346df.min.js"></script>
4705
4760
 
4706
4761
 
4707
4762
  </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>
@@ -4026,6 +4012,23 @@
4026
4012
  </span>
4027
4013
  </a>
4028
4014
 
4015
+ <nav class="md-nav" aria-label="Code organization">
4016
+ <ul class="md-nav__list">
4017
+
4018
+ <li class="md-nav__item">
4019
+ <a href="#running-your-repository-with-which-ceedling" class="md-nav__link">
4020
+ <span class="md-ellipsis">
4021
+
4022
+ Running your repository with Which Ceedling
4023
+
4024
+ </span>
4025
+ </a>
4026
+
4027
+ </li>
4028
+
4029
+ </ul>
4030
+ </nav>
4031
+
4029
4032
  </li>
4030
4033
 
4031
4034
  <li class="md-nav__item">
@@ -4365,17 +4368,6 @@
4365
4368
  </ul>
4366
4369
  </nav>
4367
4370
 
4368
- </li>
4369
-
4370
- <li class="md-nav__item">
4371
- <a href="#bin-vs-lib" class="md-nav__link">
4372
- <span class="md-ellipsis">
4373
-
4374
- bin/ vs. lib/
4375
-
4376
- </span>
4377
- </a>
4378
-
4379
4371
  </li>
4380
4372
 
4381
4373
  </ul>
@@ -4625,6 +4617,23 @@
4625
4617
  </span>
4626
4618
  </a>
4627
4619
 
4620
+ <nav class="md-nav" aria-label="Code organization">
4621
+ <ul class="md-nav__list">
4622
+
4623
+ <li class="md-nav__item">
4624
+ <a href="#running-your-repository-with-which-ceedling" class="md-nav__link">
4625
+ <span class="md-ellipsis">
4626
+
4627
+ Running your repository with Which Ceedling
4628
+
4629
+ </span>
4630
+ </a>
4631
+
4632
+ </li>
4633
+
4634
+ </ul>
4635
+ </nav>
4636
+
4628
4637
  </li>
4629
4638
 
4630
4639
  <li class="md-nav__item">
@@ -4964,17 +4973,6 @@
4964
4973
  </ul>
4965
4974
  </nav>
4966
4975
 
4967
- </li>
4968
-
4969
- <li class="md-nav__item">
4970
- <a href="#bin-vs-lib" class="md-nav__link">
4971
- <span class="md-ellipsis">
4972
-
4973
- bin/ vs. lib/
4974
-
4975
- </span>
4976
- </a>
4977
-
4978
4976
  </li>
4979
4977
 
4980
4978
  </ul>
@@ -5063,6 +5061,20 @@
5063
5061
  processing, validation, and plugin loading.</li>
5064
5062
  <li>Triggering the build/plugin task named at the command line.</li>
5065
5063
  </ol>
5064
+ <h3 id="running-your-repository-with-which-ceedling">Running your repository with Which Ceedling</h3>
5065
+ <p>Depending on what you’re working on you may need to run Ceedling using
5066
+ a specialized approach.</p>
5067
+ <p>To run your local repository on a project, either:</p>
5068
+ <ol>
5069
+ <li>Point <code>:project</code> ↳ <code>:which_ceedling</code> or <code>WHICH_CEEDLING</code> at your
5070
+ repository, then run the <code>ceedling</code> command you already have installed. It hands
5071
+ each command off to your repository’s own <code>bin/ceedling</code>, so your changes
5072
+ in both <code>bin/</code> and <code>lib/</code> run.</li>
5073
+ <li>Run your repository’s <code>bin/ceedling</code> directly. Do this for a command or
5074
+ option only your repository knows, or to attach a debugger.</li>
5075
+ </ol>
5076
+ <p>See <a href="../configuration/which-ceedling.html#ceedling-development">Which Ceedling: Ceedling development</a> for the
5077
+ details and caveats.</p>
5066
5078
  <h2 id="installation-options">Installation options</h2>
5067
5079
  <h3 id="local-installation">Local installation</h3>
5068
5080
  <p>After installing Ruby…</p>
@@ -5202,7 +5214,7 @@ flag must be passed explicitly every time.</p>
5202
5214
  <p class="admonition-title">Tip</p>
5203
5215
  <p>If you'd rather not remember the <code>--prefer-local</code>, add a shell alias,
5204
5216
  e.g. in <code>~/.bashrc</code> / <code>~/.zshrc</code>:</p>
5205
- <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nb">alias</span><span class="w"> </span>bundle-install-local<span class="o">=</span><span class="s2">&quot;bundle install --prefer-local&quot;</span>
5217
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nb">alias</span><span class="w"> </span>bundle-install-local<span class="o">=</span><span class="s2">"bundle install --prefer-local"</span>
5206
5218
  </code></pre></div>
5207
5219
  </div>
5208
5220
  <h3 id="checking-your-environment-without-installing-anything">Checking your environment without installing anything</h3>
@@ -5232,10 +5244,10 @@ statements and conventions are often messy.</p>
5232
5244
  <p>Each curated entry records three things. The license is an SPDX identifier
5233
5245
  or expression. <code>verified_for</code> is the version the license was read against.
5234
5246
  <code>source</code> names where it was read.</p>
5235
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="s1">&#39;rake&#39;</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5236
- <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="ss">license</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;MIT&#39;</span><span class="p">,</span>
5237
- <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="ss">verified_for</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;13.2.1&#39;</span><span class="p">,</span>
5238
- <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="ss">source</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;the gem&#39;s own gemspec&quot;</span>
5247
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="s1">'rake'</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
5248
+ <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="ss">license</span><span class="p">:</span><span class="w"> </span><span class="s1">'MIT'</span><span class="p">,</span>
5249
+ <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="ss">verified_for</span><span class="p">:</span><span class="w"> </span><span class="s1">'13.2.1'</span><span class="p">,</span>
5250
+ <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="ss">source</span><span class="p">:</span><span class="w"> </span><span class="s2">"the gem's own gemspec"</span>
5239
5251
  <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="p">},</span>
5240
5252
  </code></pre></div>
5241
5253
  <p><code>rake sbom:build</code> refuses to run when the list and the resolved dependencies
@@ -5366,7 +5378,7 @@ once with the setup task.</p>
5366
5378
  <p>Then lint the whole project, or only the files your branch changed.</p>
5367
5379
  <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span>lint
5368
5380
  <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span>lint:changed
5369
- <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span><span class="s2">&quot;lint:changed[master]&quot;</span>
5381
+ <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span><span class="s2">"lint:changed[master]"</span>
5370
5382
  </code></pre></div>
5371
5383
  <p><code>lint:changed</code> is the faster loop while working on a branch. It compares against
5372
5384
  <code>next_version</code> unless you name another branch or revision. Quote the task name so
@@ -5409,8 +5421,8 @@ once with the setup task.</p>
5409
5421
  <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span>profile:setup
5410
5422
  </code></pre></div>
5411
5423
  <p>Then profile any example project against any Ceedling build task.</p>
5412
- <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span><span class="s2">&quot;profile:run[temp_sensor,test:all]&quot;</span>
5413
- <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span><span class="s2">&quot;profile:run[temp_sensor,clobber test:all]&quot;</span>
5424
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span><span class="s2">"profile:run[temp_sensor,test:all]"</span>
5425
+ <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="w"> </span>&gt;<span class="w"> </span>rake<span class="w"> </span><span class="s2">"profile:run[temp_sensor,clobber test:all]"</span>
5414
5426
  </code></pre></div>
5415
5427
  <p>The first argument names a project under <code>examples/</code>. The choices are
5416
5428
  <code>cipher_quest</code>, <code>temp_sensor</code>, and <code>wondrous_forest</code>. The second argument is
@@ -5574,27 +5586,6 @@ configuration is in <code>mkdocs.yml</code> while the local site bundle configur
5574
5586
  port 8000, VS Code detects it and shows a notification. The <strong>Ports</strong> panel also
5575
5587
  provides an <strong>Open in Browser</strong> button.</p>
5576
5588
  <p><strong>Hosted site:</strong> <a href="https://docs.throwtheswitch.org/Ceedling/">https://docs.throwtheswitch.org/Ceedling/</a></p>
5577
- <h2 id="bin-vs-lib"><code>bin/</code> vs. <code>lib/</code></h2>
5578
- <p>Most of Ceedling’s functionality is contained in the application code residing
5579
- in <code>lib/</code>. Ceedling’s command line handling, startup configuration, project
5580
- file loading, and mixin handling are contained in a “bootloader” in <code>bin/</code>.
5581
- The code in <code>bin/</code> is the source of the <code>ceedling</code> command line tool and
5582
- launches the application from <code>lib/</code>.</p>
5583
- <p>Depending on what you’re working on you may need to run Ceedling using
5584
- a specialized approach.</p>
5585
- <p>If you are only working in <code>lib/</code>, you can:</p>
5586
- <ol>
5587
- <li>Run Ceedling using the <code>ceedling</code> command line utility you already have
5588
- installed. The code in <code>bin/</code> will run from your locally installed gem or
5589
- from within your Docker container and launch the Ceedling application for
5590
- you.</li>
5591
- <li>Modify a project file by setting a path value for <code>:project</code> ↳ <code>:which_ceedling</code>
5592
- that points to the local copy of Ceedling you cloned from the Git repository.</li>
5593
- </ol>
5594
- <p>If you are working in <code>bin/</code>, running <code>ceedling</code> at the command line will not
5595
- call your modified code. Instead, you must execute the path to the executable
5596
- <code>ceedling</code> in the <code>bin/</code> folder of the local Ceedling repository you are
5597
- working on.</p>
5598
5589
  <p><br/><br/></p>
5599
5590
 
5600
5591
 
@@ -5663,10 +5654,10 @@ working on.</p>
5663
5654
 
5664
5655
 
5665
5656
 
5666
- <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>
5657
+ <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>
5667
5658
 
5668
5659
 
5669
- <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
5660
+ <script src="../assets/javascripts/bundle.c21346df.min.js"></script>
5670
5661
 
5671
5662
 
5672
5663
  </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>
@@ -4466,6 +4452,8 @@
4466
4452
  </ol>
4467
4453
  <p>Where a C file change ripples out only along that file’s dependency chain, a shared configuration change ripples out across every target that reads that piece of configuration — often the whole project. File changes tend to trigger depth-oriented rebuilds while configuration changes tend to trigger breadth-oriented rebuilds.</p>
4468
4454
  <h2 id="delta-build-special-cases">Delta build special cases</h2>
4455
+ <p>An upgrade that changes where Ceedling organizes build output rebuilds everything once. The first build after upgrading logs a warning saying so. Run <code>ceedling clobber</code> to remove the output left in the old layout, which coverage reports in particular would otherwise still read.</p>
4456
+ <p>A link artifact is relinked when a dependent library changes. Ceedling finds library files <a href="../configuration/reference/libraries.html"><code>:libraries</code></a> among <code>:paths</code> ↳ <code>:libraries</code>, and tracks the libraries the <a href="../plugins/dependencies.html">Dependencies plugin</a> builds. A library found only on your toolchain’s own search paths, or through a <code>-L</code> written into <code>:flags</code>, is not tracked. Run <code>ceedling clobber</code> after any such “untracked” library changes.</p>
4469
4457
  <p>Add the <a href="command-line.html#ceedling-build-tasks"><code>--force-test-rerun</code></a> flag to test build tasks to bypass the checks for only running changed test fixture executables. This command line flag forces those executables to run and produce fresh test results.</p>
4470
4458
  <p>When <a href="../configuration/reference/unity.html#shuffle_tests">Unity’s test shuffling feature</a> is enabled, delta builds automatically rerun test fixture executables to randomize test case order regardless of change or lack thereof in a test’s dependency tree. That is, since the feature requires test executables to run in order to shuffle test case order, effectively, delta builds are disabled for test fixture executables.</p>
4471
4459
  <h2 id="delta-build-examples">Delta build examples</h2>
@@ -4597,10 +4585,10 @@ object’s own source changed.</p>
4597
4585
 
4598
4586
 
4599
4587
 
4600
- <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>
4588
+ <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>
4601
4589
 
4602
4590
 
4603
- <script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
4591
+ <script src="../assets/javascripts/bundle.c21346df.min.js"></script>
4604
4592
 
4605
4593
 
4606
4594
  </body>