ceedling 1.1.9 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1130) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -0
  3. data/.simplecov +73 -0
  4. data/GIT_COMMIT_SHA +1 -1
  5. data/Gemfile +84 -8
  6. data/Gemfile.lock +38 -8
  7. data/README.md +53 -30
  8. data/Rakefile +768 -16
  9. data/assets/{project.yml → features/project.yml} +4 -1
  10. data/assets/fixtures/bullseye_branch_coverage/src/branchy.c +24 -0
  11. data/assets/fixtures/bullseye_branch_coverage/src/branchy.h +14 -0
  12. data/assets/fixtures/bullseye_branch_coverage/test/test_branchy.c +18 -0
  13. data/assets/fixtures/cppcheck_findings/findings.c +23 -0
  14. data/assets/fixtures/cppcheck_findings/findings.h +13 -0
  15. data/assets/fixtures/header_include_path_validation/alt_drivers/foo.h +6 -0
  16. data/assets/fixtures/header_include_path_validation/bar.h +6 -0
  17. data/assets/fixtures/header_include_path_validation/drivers/foo.h +6 -0
  18. data/assets/fixtures/header_include_path_validation/dup.h +6 -0
  19. data/assets/fixtures/header_include_path_validation/other_inc/dup.h +6 -0
  20. data/assets/fixtures/header_include_path_validation/test_ambiguous_mock.c +15 -0
  21. data/assets/fixtures/header_include_path_validation/test_bare_mock.c +11 -0
  22. data/assets/fixtures/header_include_path_validation/test_bogus_mock_path.c +11 -0
  23. data/assets/fixtures/header_include_path_validation/test_bogus_vanilla_path.c +10 -0
  24. data/assets/fixtures/header_include_path_validation/test_include_outranks_test_include_path.c +16 -0
  25. data/assets/fixtures/header_include_path_validation/test_pathed_mock.c +11 -0
  26. data/assets/fixtures/header_include_path_validation/test_pathed_mock_ambiguous.c +14 -0
  27. data/assets/fixtures/header_include_path_validation/test_test_include_path_outranks_include.c +17 -0
  28. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.c +6 -0
  29. data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.h +6 -0
  30. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.c +6 -0
  31. data/assets/fixtures/implicit_source_header_correspondence/beta/dup.h +6 -0
  32. data/assets/fixtures/implicit_source_header_correspondence/gamma/dup_gamma.c +6 -0
  33. data/assets/fixtures/implicit_source_header_correspondence/test_dup_alpha.c +10 -0
  34. data/assets/fixtures/implicit_source_header_correspondence/test_dup_bare.c +10 -0
  35. data/assets/fixtures/implicit_source_header_correspondence/test_dup_beta.c +10 -0
  36. data/assets/fixtures/implicit_source_header_correspondence/test_dup_override.c +19 -0
  37. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive.c +19 -0
  38. data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive_noop.c +16 -0
  39. data/assets/fixtures/parent_directory_references/alpha/extra.c +4 -0
  40. data/assets/fixtures/parent_directory_references/common/helper.c +6 -0
  41. data/assets/fixtures/parent_directory_references/common/helper.h +6 -0
  42. data/assets/fixtures/parent_directory_references/unit/test_dotdot_include.c +10 -0
  43. data/assets/fixtures/parent_directory_references/unit/test_dotdot_source.c +16 -0
  44. data/assets/fixtures/plain_inline_module.h +9 -0
  45. data/assets/fixtures/same_named_modules/include/drivers/spi/config.h +6 -0
  46. data/assets/fixtures/same_named_modules/include/drivers/uart/config.h +6 -0
  47. data/assets/fixtures/same_named_modules/src/drivers/spi/config.c +8 -0
  48. data/assets/fixtures/same_named_modules/src/drivers/uart/config.c +10 -0
  49. data/assets/fixtures/same_named_modules/test/test_both_configs.c +26 -0
  50. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked.c +20 -0
  51. data/assets/fixtures/same_named_modules/test/test_both_configs_mocked_traditional.c +19 -0
  52. data/assets/fixtures/same_named_modules/test/test_both_modules.c +19 -0
  53. data/assets/fixtures/same_named_modules/test/test_uart_config_bare.c +19 -0
  54. data/assets/fixtures/same_named_modules/test/test_uart_config_partial_only.c +20 -0
  55. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.c +6 -0
  56. data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.h +6 -0
  57. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.c +6 -0
  58. data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.h +6 -0
  59. data/assets/fixtures/sources_with_duplicate_basenames/main.c +11 -0
  60. data/assets/fixtures/sources_with_duplicate_basenames/test_baz_bar.c +10 -0
  61. data/assets/fixtures/sources_with_duplicate_basenames/test_both_bars.c +12 -0
  62. data/assets/fixtures/sources_with_duplicate_basenames/test_foo_bar.c +10 -0
  63. data/assets/{test_example_file_boom.c → fixtures/test_nosanitize_boom.c} +9 -0
  64. data/assets/{test_example_file_crash_assert.c → fixtures/test_nosanitize_crash_assert.c} +8 -0
  65. data/assets/{test_example_file_crash_sigsegv.c → fixtures/test_nosanitize_crash_sigsegv.c} +8 -0
  66. data/assets/{test_example_file_crash_sigsegv_with_param.c → fixtures/test_nosanitize_crash_sigsegv_with_param.c} +8 -0
  67. data/assets/fixtures/test_nosanitize_heap_buffer_overflow.c +31 -0
  68. data/assets/fixtures/test_nosanitize_leak.c +34 -0
  69. data/assets/fixtures/test_nosanitize_two_findings.c +36 -0
  70. data/assets/{test_example_file_ub_shift_overflow.c → fixtures/test_nosanitize_ub_shift_overflow.c} +9 -0
  71. data/assets/fixtures/test_plain_inline_module.c +15 -0
  72. data/assets/fixtures/test_source_file_duplicate_basenames/alpha/calc.c +4 -0
  73. data/assets/fixtures/test_source_file_duplicate_basenames/beta/calc.c +4 -0
  74. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_alpha.c +15 -0
  75. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_ambiguous.c +15 -0
  76. data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_beta.c +15 -0
  77. data/assets/fixtures/tests_with_conditional_includes/src/feature_extra2.h +13 -0
  78. data/assets/fixtures/tests_with_conditional_includes/src/macro_target_extra.h +13 -0
  79. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.c +19 -3
  80. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.h +1 -0
  81. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.c +17 -1
  82. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget.c +12 -4
  83. data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget_feature.c +8 -5
  84. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.c +7 -0
  85. data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.h +6 -0
  86. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.c +16 -0
  87. data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.h +6 -0
  88. data/assets/fixtures/tests_with_conditional_mocks/src/FeatureConfig.h +6 -0
  89. data/assets/fixtures/tests_with_conditional_mocks/src/Gpt.h +6 -0
  90. data/assets/fixtures/tests_with_conditional_mocks/src/MyModuleConfig.h +17 -0
  91. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart1.h +6 -0
  92. data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart2.h +6 -0
  93. data/assets/fixtures/tests_with_conditional_mocks/src/drivers/widget.h +6 -0
  94. data/assets/fixtures/tests_with_conditional_mocks/src/reader.c +7 -0
  95. data/assets/fixtures/tests_with_conditional_mocks/src/reader.h +6 -0
  96. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01.c +21 -0
  97. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01_legacy.c +16 -0
  98. data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_02.c +31 -0
  99. data/assets/fixtures/tests_with_conditional_mocks/test/test_FeatureConfig.c +15 -0
  100. data/assets/fixtures/tests_with_conditional_mocks/test/test_reader.c +13 -0
  101. data/assets/fixtures/tests_with_duplicate_test_names/integration/test_foo.c +21 -0
  102. data/assets/fixtures/tests_with_duplicate_test_names/unit/test_foo.c +21 -0
  103. data/assets/fixtures/tests_with_fallback_conditionals/src/conditional_module.c +28 -0
  104. data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/test/test_conditionals.c +8 -1
  105. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_lower.s +2 -0
  106. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_upper.S +13 -0
  107. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.c +13 -0
  108. data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.h +13 -0
  109. data/assets/fixtures/tests_with_multiple_assembly_extensions/test/test_counter_module.c +27 -0
  110. data/assets/fixtures/tests_with_subdir_includes/src/module/app/config.h +13 -0
  111. data/assets/fixtures/tests_with_subdir_includes/src/module/drivers/config.h +13 -0
  112. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.c +30 -0
  113. data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.h +13 -0
  114. data/assets/fixtures/tests_with_subdir_includes/src/shared/config.h +13 -0
  115. data/assets/fixtures/tests_with_subdir_includes/test/test_sensor.c +32 -0
  116. data/bin/actionator.rb +234 -0
  117. data/bin/app_cfg.rb +7 -0
  118. data/bin/cli.rb +78 -47
  119. data/bin/cli_handler.rb +89 -57
  120. data/bin/cli_helper.rb +90 -49
  121. data/bin/cli_options_transform.rb +22 -0
  122. data/bin/{configinator.rb → composinator.rb} +39 -32
  123. data/bin/mixin_resolvinator.rb +124 -0
  124. data/bin/mixin_standardizer.rb +31 -61
  125. data/bin/mixinator.rb +27 -29
  126. data/bin/mixins.rb +0 -5
  127. data/bin/objects.yml +20 -7
  128. data/bin/path_validator.rb +6 -5
  129. data/bin/projectinator.rb +51 -142
  130. data/bin/rake_patches.rb +36 -2
  131. data/bin/recursive_merger.rb +7 -1
  132. data/bin/versionator.rb +2 -3
  133. data/ceedling.gemspec +83 -12
  134. data/docs/BreakingChanges.md +46 -2
  135. data/docs/CONTRIBUTING.md +45 -29
  136. data/docs/CeedlingPullRequestChecklist.md +10 -9
  137. data/docs/Changelog.md +337 -37
  138. data/docs/KnownIssues.md +39 -4
  139. data/docs/ReleaseNotes.md +288 -12
  140. data/docs/SECURITY.md +86 -4
  141. data/docs/ThrowTheSwitchCodingStandard.md +21 -3
  142. data/docs/overrides/main.html +32 -0
  143. data/examples/temp_sensor/mixin/add_bullseye.yml +19 -0
  144. data/examples/wondrous_forest/README.md +3 -0
  145. data/examples/wondrous_forest/src/sensors/light/Calibration.c +21 -0
  146. data/examples/wondrous_forest/src/sensors/light/Calibration.h +14 -0
  147. data/examples/wondrous_forest/src/sensors/soil/Calibration.c +23 -0
  148. data/examples/wondrous_forest/src/sensors/soil/Calibration.h +14 -0
  149. data/examples/wondrous_forest/test/TestCalibration.c +39 -0
  150. data/lib/ceedling/batchinator.rb +81 -22
  151. data/lib/ceedling/c_extractor/README.md +61 -0
  152. data/lib/ceedling/c_extractor/c_extractor.rb +33 -2
  153. data/lib/ceedling/c_extractor/c_extractor_code_text.rb +18 -10
  154. data/lib/ceedling/c_extractor/c_extractor_constants.rb +10 -10
  155. data/lib/ceedling/c_extractor/c_extractor_declarations.rb +14 -14
  156. data/lib/ceedling/c_extractor/c_extractor_functions.rb +10 -13
  157. data/lib/ceedling/c_extractor/c_extractor_preprocessing.rb +77 -0
  158. data/lib/ceedling/c_extractor/c_extractor_types.rb +8 -5
  159. data/lib/ceedling/ceedling.h +33 -0
  160. data/lib/ceedling/config/config_matchinator.rb +36 -13
  161. data/lib/ceedling/config/configurator.rb +366 -530
  162. data/lib/ceedling/config/configurator_builder.rb +253 -365
  163. data/lib/ceedling/config/configurator_plugins.rb +68 -102
  164. data/lib/ceedling/config/configurator_setup.rb +343 -610
  165. data/lib/ceedling/config/configurator_validator.rb +114 -142
  166. data/lib/ceedling/config/line_marker_suppressors.rb +67 -0
  167. data/lib/ceedling/constants.rb +60 -6
  168. data/lib/ceedling/defaults.rb +28 -14
  169. data/lib/ceedling/defineinator.rb +9 -4
  170. data/lib/ceedling/dependencies/README.md +69 -0
  171. data/lib/ceedling/dependencies/dependency_cache_store.rb +160 -0
  172. data/lib/ceedling/dependencies/dependency_debug_tree.rb +129 -0
  173. data/lib/ceedling/dependencies/dependency_differ.rb +127 -0
  174. data/lib/ceedling/dependencies/dependency_hasher.rb +94 -0
  175. data/lib/ceedling/dependencies/dependency_path_normalizer.rb +80 -0
  176. data/lib/ceedling/dependencies/dependency_tracker.rb +405 -0
  177. data/lib/ceedling/dependencies/dependinator.rb +65 -0
  178. data/lib/ceedling/dependencies/gcc_dependency_parser.rb +86 -0
  179. data/lib/ceedling/encodinator.rb +23 -11
  180. data/lib/ceedling/file_finder.rb +373 -89
  181. data/lib/ceedling/file_finder_helper.rb +44 -33
  182. data/lib/ceedling/file_path_collection_utils.rb +17 -4
  183. data/lib/ceedling/file_path_utils.rb +310 -52
  184. data/lib/ceedling/file_wrapper.rb +245 -8
  185. data/lib/ceedling/filename_extension.rb +91 -0
  186. data/lib/ceedling/flaginator.rb +6 -2
  187. data/lib/ceedling/generators/generator.rb +202 -75
  188. data/lib/ceedling/generators/generator_helper.rb +116 -69
  189. data/lib/ceedling/generators/generator_mocks.rb +13 -8
  190. data/lib/ceedling/generators/generator_partials.rb +93 -25
  191. data/lib/ceedling/generators/generator_test_results.rb +29 -17
  192. data/lib/ceedling/generators/generator_test_results_backtrace.rb +199 -107
  193. data/lib/ceedling/generators/generator_test_results_sanity_checker.rb +1 -1
  194. data/lib/ceedling/includes/include_factory.rb +21 -6
  195. data/lib/ceedling/includes/include_pathinator.rb +40 -4
  196. data/lib/ceedling/includes/includes.rb +215 -61
  197. data/lib/ceedling/loginator.rb +13 -4
  198. data/lib/ceedling/objects.yml +218 -33
  199. data/lib/ceedling/parsing_parcels.rb +39 -13
  200. data/lib/ceedling/partials/README.md +53 -0
  201. data/lib/ceedling/partials/partializer.rb +272 -117
  202. data/lib/ceedling/partials/partializer_config.rb +141 -8
  203. data/lib/ceedling/partials/partializer_helper.rb +88 -2
  204. data/lib/ceedling/partials/partializer_utils.rb +1 -1
  205. data/lib/ceedling/partials/partials.rb +4 -4
  206. data/lib/ceedling/path_matcher.rb +163 -0
  207. data/lib/ceedling/path_mirror.rb +73 -0
  208. data/lib/ceedling/plugins/plugin.rb +1 -1
  209. data/lib/ceedling/plugins/plugin_manager.rb +31 -15
  210. data/lib/ceedling/plugins/plugin_manager_helper.rb +5 -1
  211. data/lib/ceedling/plugins/plugin_reportinator.rb +36 -7
  212. data/lib/ceedling/plugins/plugin_reportinator_helper.rb +3 -3
  213. data/lib/ceedling/plugins/report_log_writer_plugin.rb +66 -0
  214. data/lib/ceedling/plugins/report_tests_stdout_plugin.rb +18 -5
  215. data/lib/ceedling/preprocess/README.md +135 -120
  216. data/lib/ceedling/preprocess/c_comment_scanner.rb +9 -7
  217. data/lib/ceedling/preprocess/c_preprocessor_conditionals.rb +27 -10
  218. data/lib/ceedling/preprocess/preprocessinator.rb +253 -217
  219. data/lib/ceedling/preprocess/preprocessinator_bare_includes_extractor.rb +7 -10
  220. data/lib/ceedling/preprocess/preprocessinator_code_finder.rb +8 -6
  221. data/lib/ceedling/preprocess/preprocessinator_comment_stripper.rb +5 -3
  222. data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +86 -82
  223. data/lib/ceedling/preprocess/preprocessinator_includes_handler.rb +182 -163
  224. data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +174 -8
  225. data/lib/ceedling/preprocess/preprocessinator_reconstructor.rb +41 -20
  226. data/lib/ceedling/quote_include_isolator.rb +129 -0
  227. data/lib/ceedling/rake_app/rake_task_registry.rb +9 -9
  228. data/lib/ceedling/rake_app/rake_wrapper.rb +0 -13
  229. data/lib/ceedling/rake_app/rakefile_component_resolver.rb +24 -12
  230. data/lib/ceedling/rakefile.rb +2 -1
  231. data/lib/ceedling/{tasks_base.rake → rakefiles/base/tasks_base.rake} +1 -1
  232. data/lib/ceedling/{tasks_filesystem.rake → rakefiles/base/tasks_filesystem.rake} +3 -0
  233. data/lib/ceedling/rakefiles/release/rules_release.rake +52 -0
  234. data/lib/ceedling/{erb_wrapper.rb → rakefiles/release/tasks_release.rake} +5 -8
  235. data/lib/ceedling/rakefiles/tests/rules_tests.rake +43 -0
  236. data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +80 -0
  237. data/lib/ceedling/{tasks_tests.rake → rakefiles/tests/tasks_tests.rake} +11 -20
  238. data/lib/ceedling/rakefiles/tests/tasks_tests_generate.rake +55 -0
  239. data/lib/ceedling/release_invoker/README.md +35 -0
  240. data/lib/ceedling/release_invoker/release_build_executor.rb +263 -0
  241. data/lib/ceedling/release_invoker/release_build_planner.rb +80 -0
  242. data/lib/ceedling/release_invoker/release_invoker.rb +78 -0
  243. data/lib/ceedling/release_invoker/release_invoker_types.rb +40 -0
  244. data/lib/ceedling/reportinator.rb +18 -2
  245. data/lib/ceedling/ruby_expandinator.rb +40 -1
  246. data/lib/ceedling/setupinator.rb +9 -3
  247. data/lib/ceedling/system_wrapper.rb +17 -0
  248. data/lib/ceedling/templateinator.rb +146 -0
  249. data/lib/ceedling/test_context_extractor.rb +59 -28
  250. data/lib/ceedling/test_invoker/HEADER_COLLISIONS.md +41 -0
  251. data/lib/ceedling/test_invoker/PIPELINE.md +142 -0
  252. data/lib/ceedling/test_invoker/README.md +6 -0
  253. data/lib/ceedling/test_invoker/mock_locator.rb +49 -0
  254. data/lib/ceedling/test_invoker/partials_manager.rb +426 -0
  255. data/lib/ceedling/test_invoker/standin_headerinator.rb +136 -0
  256. data/lib/ceedling/test_invoker/test_bare_includes_extractinator.rb +117 -0
  257. data/lib/ceedling/test_invoker/test_build_executor.rb +783 -415
  258. data/lib/ceedling/test_invoker/test_build_planner.rb +175 -70
  259. data/lib/ceedling/test_invoker/test_build_setup.rb +132 -241
  260. data/lib/ceedling/test_invoker/test_build_validations.rb +102 -0
  261. data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +148 -0
  262. data/lib/ceedling/test_invoker/test_includes_extractinator.rb +34 -0
  263. data/lib/ceedling/test_invoker/test_includes_preprocessinator.rb +118 -0
  264. data/lib/ceedling/test_invoker/test_includes_reconcilinator.rb +149 -0
  265. data/lib/ceedling/test_invoker/test_invoker.rb +16 -183
  266. data/lib/ceedling/test_invoker/test_invoker_types.rb +85 -16
  267. data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +121 -0
  268. data/lib/ceedling/test_invoker/test_pipeline_manager.rb +303 -0
  269. data/lib/ceedling/test_invoker/test_runner_generatinator.rb +105 -0
  270. data/lib/ceedling/test_invoker/test_search_paths.rb +73 -0
  271. data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +78 -0
  272. data/lib/ceedling/tool_executor.rb +42 -13
  273. data/lib/ceedling/tool_executor_helper.rb +1 -1
  274. data/lib/ceedling/tool_validator.rb +124 -123
  275. data/lib/ceedling/yaml_wrapper.rb +5 -3
  276. data/lib/version.rb +19 -2
  277. data/mkdocs.prerelease.yml +42 -0
  278. data/mkdocs.yml +10 -2
  279. data/plugins/bullseye/bullseye.rake +70 -107
  280. data/plugins/bullseye/config/defaults.yml +12 -54
  281. data/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  282. data/plugins/bullseye/lib/bullseye.rb +511 -120
  283. data/plugins/bullseye/lib/bullseye_constants.rb +100 -0
  284. data/plugins/command_hooks/lib/command_hooks.rb +117 -199
  285. data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +72 -27
  286. data/plugins/cppcheck/config/defaults.yml +6 -1
  287. data/plugins/cppcheck/config/defaults_cppcheck.rb +5 -1
  288. data/plugins/cppcheck/cppcheck.rake +7 -1
  289. data/plugins/cppcheck/lib/cppcheck.rb +175 -26
  290. data/plugins/cppcheck/lib/cppcheck_constants.rb +12 -0
  291. data/plugins/cppcheck/lib/cppcheck_reports.rb +5 -1
  292. data/plugins/dependencies/Rakefile +14 -2
  293. data/plugins/dependencies/config/defaults.yml +9 -6
  294. data/plugins/dependencies/dependencies.rake +46 -76
  295. data/plugins/dependencies/example/boss/project.yml +1 -1
  296. data/plugins/dependencies/example/supervisor/project.yml +1 -1
  297. data/plugins/dependencies/example/version.tar.gzip +0 -0
  298. data/plugins/dependencies/lib/dependencies.rb +232 -427
  299. data/plugins/dependencies/lib/dependency_commands.rb +72 -0
  300. data/plugins/dependencies/lib/dependency_environment.rb +57 -0
  301. data/plugins/dependencies/lib/dependency_spec.rb +145 -0
  302. data/plugins/fff/.rspec +1 -0
  303. data/plugins/fff/Rakefile +14 -2
  304. data/plugins/fff/examples/fff_example/project.yml +1 -1
  305. data/plugins/fff/lib/fff.rb +30 -9
  306. data/plugins/fff/lib/fff_mock_generator.rb +142 -128
  307. data/plugins/fff/spec/fff_mock_header_generator_spec.rb +15 -0
  308. data/plugins/fff/spec/fff_mock_source_generator_spec.rb +14 -0
  309. data/plugins/fff/spec/spec_helper.rb +45 -0
  310. data/plugins/fff/src/fff_unity_helper.h +5 -0
  311. data/plugins/fff/vendor/fff/fakegen.rb +5 -4
  312. data/plugins/fff/vendor/fff/fff.h +4 -4
  313. data/plugins/gcov/config/defaults.yml +5 -0
  314. data/plugins/gcov/gcov.rake +12 -8
  315. data/plugins/gcov/lib/console_reportinator.rb +140 -20
  316. data/plugins/gcov/lib/gcov.rb +155 -60
  317. data/plugins/gcov/lib/gcov_constants.rb +4 -7
  318. data/plugins/gcov/lib/gcov_reportinator.rb +90 -0
  319. data/plugins/gcov/lib/gcov_types.rb +62 -1
  320. data/plugins/gcov/lib/gcovr_reportinator.rb +255 -213
  321. data/plugins/gcov/lib/reportgenerator_reportinator.rb +122 -44
  322. data/plugins/module_generator/Rakefile +4 -4
  323. data/plugins/module_generator/config/module_generator.yml +0 -1
  324. data/plugins/module_generator/example/project.yml +1 -1
  325. data/plugins/module_generator/lib/module_generator.rb +117 -87
  326. data/plugins/module_generator/lib/module_generator_options.rb +150 -0
  327. data/plugins/module_generator/lib/module_generator_project.rb +45 -0
  328. data/plugins/module_generator/lib/module_generator_request.rb +83 -0
  329. data/plugins/module_generator/lib/module_generator_test_file.rb +68 -0
  330. data/plugins/module_generator/lib/module_generator_unity.rb +24 -0
  331. data/plugins/module_generator/module_generator.rake +24 -46
  332. data/plugins/report_build_warnings_log/config/defaults.yml +4 -1
  333. data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +47 -55
  334. data/plugins/report_build_warnings_log/lib/warning_collector.rb +140 -0
  335. data/plugins/report_build_warnings_log/lib/warning_reports.rb +135 -0
  336. data/plugins/report_tests_gtestlike_stdout/assets/test_results.template +3 -0
  337. data/{spec/units/configurator_builder_spec.rb → plugins/report_tests_gtestlike_stdout/config/defaults.yml} +6 -10
  338. data/plugins/report_tests_gtestlike_stdout/lib/gtestlike_report.rb +168 -0
  339. data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +25 -1
  340. data/plugins/report_tests_ide_stdout/assets/test_results.template +50 -0
  341. data/plugins/report_tests_ide_stdout/config/defaults.yml +13 -0
  342. data/plugins/report_tests_ide_stdout/lib/ide_report_lines.rb +103 -0
  343. data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +12 -4
  344. data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +33 -51
  345. data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +286 -295
  346. data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +22 -35
  347. data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +91 -133
  348. data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +72 -86
  349. data/plugins/report_tests_log_factory/lib/tests_reporter.rb +31 -12
  350. data/plugins/report_tests_pretty_stdout/assets/{template.erb → test_results.template} +8 -8
  351. data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +18 -48
  352. data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +13 -2
  353. data/plugins/sanitize/config/defaults.yml +44 -0
  354. data/plugins/sanitize/config/defaults_sanitize.rb +20 -0
  355. data/plugins/sanitize/lib/sanitize.rb +174 -0
  356. data/plugins/sanitize/lib/sanitize_config.rb +110 -0
  357. data/plugins/sanitize/lib/sanitize_constants.rb +13 -0
  358. data/plugins/sanitize/lib/sanitize_findings.rb +85 -0
  359. data/plugins/sanitize/lib/sanitize_records.rb +115 -0
  360. data/plugins/sanitize/lib/sanitize_reports.rb +135 -0
  361. data/plugins/sanitize/sanitize.rake +108 -0
  362. data/plugins/valgrind/config/defaults.yml +7 -1
  363. data/plugins/valgrind/config/defaults_valgrind.rb +6 -1
  364. data/plugins/valgrind/lib/valgrind.rb +202 -39
  365. data/plugins/valgrind/lib/valgrind_constants.rb +4 -0
  366. data/plugins/valgrind/lib/valgrind_report.rb +52 -0
  367. data/plugins/valgrind/valgrind.rake +33 -11
  368. data/site-local/404.html +248 -14
  369. data/site-local/configuration/environment-vars.html +248 -14
  370. data/site-local/configuration/global-collections.html +248 -19
  371. data/site-local/configuration/index.html +249 -15
  372. data/site-local/configuration/loading.html +260 -22
  373. data/site-local/configuration/mixins.html +252 -17
  374. data/site-local/configuration/parallel-builds.html +248 -14
  375. data/site-local/configuration/project-file.html +275 -30
  376. data/site-local/configuration/reference/cexception.html +255 -20
  377. data/site-local/configuration/reference/cmock.html +281 -14
  378. data/site-local/configuration/reference/defines.html +262 -19
  379. data/site-local/configuration/reference/environment.html +251 -17
  380. data/site-local/configuration/reference/extension.html +361 -16
  381. data/site-local/configuration/reference/files.html +262 -14
  382. data/site-local/configuration/reference/flags.html +270 -19
  383. data/site-local/configuration/reference/index.html +248 -14
  384. data/site-local/configuration/reference/libraries.html +248 -14
  385. data/site-local/configuration/reference/mixins.html +248 -14
  386. data/site-local/configuration/reference/partials.html +249 -19
  387. data/site-local/configuration/reference/paths.html +275 -15
  388. data/site-local/configuration/reference/plugins.html +248 -14
  389. data/site-local/configuration/reference/project.html +291 -14
  390. data/site-local/configuration/reference/release-build.html +256 -14
  391. data/site-local/configuration/reference/test-build.html +290 -24
  392. data/site-local/configuration/reference/test-runner.html +288 -17
  393. data/site-local/configuration/reference/tools.html +254 -14
  394. data/site-local/configuration/reference/unity.html +280 -15
  395. data/site-local/configuration/which-ceedling.html +248 -14
  396. data/site-local/development/index.html +261 -14
  397. data/site-local/development/plugins/configuration.html +269 -17
  398. data/site-local/development/plugins/index.html +267 -15
  399. data/site-local/development/plugins/plugin-subclass.html +906 -154
  400. data/site-local/development/plugins/rake-tasks.html +276 -14
  401. data/site-local/development/releases.html +4708 -0
  402. data/site-local/development/workflow.html +1030 -51
  403. data/site-local/getting-started/builds.html +4607 -0
  404. data/site-local/getting-started/command-line.html +418 -34
  405. data/site-local/getting-started/example-projects/cipher-quest.html +248 -14
  406. data/site-local/getting-started/example-projects/index.html +249 -15
  407. data/site-local/getting-started/example-projects/temp-sensor.html +248 -14
  408. data/site-local/getting-started/example-projects/wondrous-forest.html +248 -14
  409. data/site-local/getting-started/index.html +255 -14
  410. data/site-local/getting-started/installation.html +258 -22
  411. data/site-local/getting-started/quick-start.html +251 -15
  412. data/site-local/help.html +255 -14
  413. data/site-local/index.html +292 -22
  414. data/site-local/overview/build-system.html +249 -15
  415. data/site-local/overview/index.html +248 -14
  416. data/site-local/overview/test-environments.html +257 -14
  417. data/site-local/overview/tools-and-frameworks.html +248 -14
  418. data/site-local/plugins/beep.html +251 -14
  419. data/site-local/plugins/bullseye/index.html +5079 -0
  420. data/site-local/plugins/bullseye/licensing.html +4840 -0
  421. data/site-local/plugins/command-hooks.html +265 -27
  422. data/site-local/plugins/compile-commands-json-db.html +256 -17
  423. data/site-local/plugins/cppcheck.html +1081 -262
  424. data/site-local/plugins/dependencies.html +934 -242
  425. data/site-local/plugins/fff.html +297 -16
  426. data/site-local/plugins/gcov/examples.html +251 -14
  427. data/site-local/plugins/gcov/gcovr.html +686 -31
  428. data/site-local/plugins/gcov/index.html +251 -14
  429. data/site-local/plugins/gcov/overview.html +259 -18
  430. data/site-local/plugins/gcov/reportgenerator.html +563 -28
  431. data/site-local/plugins/gcov/reporting.html +348 -100
  432. data/site-local/plugins/gcov/setup.html +253 -15
  433. data/site-local/plugins/gcov/tool-versions.html +301 -19
  434. data/site-local/plugins/gcov/troubleshooting.html +273 -36
  435. data/site-local/plugins/index.html +294 -36
  436. data/site-local/plugins/module-generator.html +779 -195
  437. data/site-local/plugins/report-build-warnings-log.html +578 -33
  438. data/site-local/plugins/report-tests-gtestlike-stdout.html +467 -84
  439. data/site-local/plugins/report-tests-ide-stdout.html +654 -51
  440. data/site-local/plugins/report-tests-log-factory.html +337 -70
  441. data/site-local/plugins/report-tests-pretty-stdout.html +251 -14
  442. data/site-local/plugins/report-tests-raw-output-log.html +251 -14
  443. data/site-local/plugins/report-tests-teamcity-stdout.html +251 -14
  444. data/site-local/plugins/sanitize.html +5332 -0
  445. data/site-local/plugins/valgrind.html +416 -26
  446. data/site-local/{plugins/bullseye.html → project/index.html} +297 -217
  447. data/site-local/project/release-history.html +251 -17
  448. data/site-local/project/sbom.html +4726 -0
  449. data/site-local/project/upgrade.html +250 -16
  450. data/site-local/reference/build-directives.html +257 -14
  451. data/site-local/reference/command-line.html +373 -16
  452. data/site-local/reference/environment-vars.html +248 -14
  453. data/site-local/reference/gcov-plugin.html +492 -18
  454. data/site-local/reference/global-collections.html +249 -15
  455. data/site-local/reference/index.html +248 -14
  456. data/site-local/reference/partials-macros.html +258 -14
  457. data/site-local/reference/project-configuration.html +248 -14
  458. data/site-local/sitemap.xml.gz +0 -0
  459. data/site-local/snapshot/assets/{project.yml → features/project.yml} +4 -1
  460. data/site-local/snapshot/examples/cipher_quest/index.html +248 -14
  461. data/site-local/snapshot/examples/temp_sensor/index.html +248 -14
  462. data/site-local/snapshot/examples/wondrous_forest/index.html +265 -25
  463. data/site-local/snapshot/plugins/bullseye/config/defaults.yml +24 -0
  464. data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +182 -0
  465. data/site-local/snapshot/plugins/gcov/config/defaults.yml +5 -0
  466. data/site-local/testing-guide/build-directives.html +332 -22
  467. data/site-local/testing-guide/conventions.html +678 -153
  468. data/site-local/testing-guide/frameworks.html +248 -14
  469. data/site-local/testing-guide/index.html +248 -21
  470. data/site-local/testing-guide/partials/configuration.html +248 -14
  471. data/site-local/testing-guide/partials/conventions.html +316 -17
  472. data/site-local/testing-guide/partials/directives.html +456 -48
  473. data/site-local/testing-guide/partials/example.html +248 -14
  474. data/site-local/testing-guide/partials/index.html +255 -14
  475. data/site-local/testing-guide/partials/overview.html +248 -14
  476. data/site-local/testing-guide/partials/variables.html +248 -14
  477. data/site-local/testing-guide/test-cases.html +248 -14
  478. data/site-local/testing-guide/test-sample.html +248 -14
  479. data/site-local/testing-guide/test-suite-anatomy.html +248 -14
  480. data/spec/integration/actionator_file_operations_spec.rb +287 -0
  481. data/spec/integration/analysis_tool_output_spec.rb +204 -0
  482. data/spec/{units/c_extractor/c_extractor_integration_spec.rb → integration/c_extractor_composition_spec.rb} +196 -17
  483. data/spec/integration/command_hooks_plugin_spec.rb +152 -0
  484. data/spec/integration/compile_commands_json_db_spec.rb +76 -0
  485. data/spec/integration/configurator_pipeline_spec.rb +180 -0
  486. data/spec/integration/configurator_plugins_spec.rb +122 -0
  487. data/spec/integration/configurator_validation_spec.rb +98 -0
  488. data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +396 -0
  489. data/spec/integration/dependencies/dependency_tracker_core_spec.rb +244 -0
  490. data/spec/integration/dependencies/dependency_tracker_diagnose_spec.rb +224 -0
  491. data/spec/integration/dependencies/dependency_tracker_filename_handling_spec.rb +118 -0
  492. data/spec/integration/dependencies/dependency_tracker_gcc_deps_spec.rb +199 -0
  493. data/spec/integration/dependencies/dependency_tracker_pruning_spec.rb +167 -0
  494. data/spec/integration/dependencies_plugin_spec.rb +473 -0
  495. data/spec/integration/erb_dependency_removed_spec.rb +167 -0
  496. data/spec/integration/includes_extraction_spec.rb +612 -0
  497. data/spec/integration/mixin_loading_spec.rb +414 -0
  498. data/spec/integration/module_generator_spec.rb +436 -0
  499. data/spec/integration/partials_fallback_preprocessing_spec.rb +316 -0
  500. data/spec/integration/partials_header_composition_spec.rb +889 -0
  501. data/spec/integration/partials_module_resolution_spec.rb +372 -0
  502. data/spec/integration/partials_symbol_linkage_spec.rb +371 -0
  503. data/spec/integration/preprocessing_transient_io_retry_spec.rb +135 -0
  504. data/spec/integration/quote_include_isolator_spec.rb +167 -0
  505. data/spec/integration/report_build_warnings_log_spec.rb +170 -0
  506. data/spec/integration/report_tests_log_factory_spec.rb +100 -0
  507. data/spec/integration/sanitizer_exclusions_spec.rb +126 -0
  508. data/spec/integration/system_harness_sanitizers_spec.rb +104 -0
  509. data/spec/integration/test_build_parallel_barrier_spec.rb +89 -0
  510. data/spec/integration/test_executable_manifest_spec.rb +118 -0
  511. data/spec/integration/test_includes_extractinator_spec.rb +293 -0
  512. data/spec/integration/tool_executor_spec.rb +224 -0
  513. data/spec/integration/tool_validator_spec.rb +133 -0
  514. data/spec/integration/vendor_copy_transient_io_retry_spec.rb +130 -0
  515. data/spec/manual/stress_test.rb +1 -1
  516. data/spec/support/config_yaml_helper.rb +17 -0
  517. data/spec/support/fixtures/sanitizer_reports/clang_asan_heap.txt +45 -0
  518. data/spec/support/fixtures/sanitizer_reports/clang_ubsan_shift.txt +5 -0
  519. data/spec/support/fixtures/sanitizer_reports/gcc_heap.txt +47 -0
  520. data/spec/support/fixtures/sanitizer_reports/gcc_leak.txt +10 -0
  521. data/spec/support/fixtures/sanitizer_reports/gcc_segv.txt +6 -0
  522. data/spec/support/fixtures/sanitizer_reports/gcc_ubsan_shift.txt +6 -0
  523. data/spec/support/fixtures/templates/bullseye__all_pass.txt +6 -0
  524. data/spec/support/fixtures/templates/bullseye__coverage_branches_only.txt +6 -0
  525. data/spec/support/fixtures/templates/bullseye__coverage_functions_only.txt +6 -0
  526. data/spec/support/fixtures/templates/bullseye__coverage_none.txt +6 -0
  527. data/spec/support/fixtures/templates/bullseye__empty.txt +6 -0
  528. data/spec/support/fixtures/templates/bullseye__gcov_context.txt +6 -0
  529. data/spec/support/fixtures/templates/bullseye__mixed_all.txt +6 -0
  530. data/spec/support/fixtures/templates/bullseye__one_failure_matching.txt +6 -0
  531. data/spec/support/fixtures/templates/bullseye__one_failure_multiline.txt +6 -0
  532. data/spec/support/fixtures/templates/bullseye__one_failure_no_message.txt +6 -0
  533. data/spec/support/fixtures/templates/bullseye__one_failure_nonmatching.txt +6 -0
  534. data/spec/support/fixtures/templates/bullseye__one_ignore_no_message.txt +6 -0
  535. data/spec/support/fixtures/templates/bullseye__one_ignore_with_message.txt +6 -0
  536. data/spec/support/fixtures/templates/bullseye__stdout_only.txt +6 -0
  537. data/spec/support/fixtures/templates/ide__all_pass.txt +10 -0
  538. data/spec/support/fixtures/templates/ide__coverage_branches_only.txt +10 -0
  539. data/spec/support/fixtures/templates/ide__coverage_functions_only.txt +10 -0
  540. data/spec/support/fixtures/templates/ide__coverage_none.txt +10 -0
  541. data/spec/support/fixtures/templates/ide__empty.txt +8 -0
  542. data/spec/support/fixtures/templates/ide__gcov_context.txt +28 -0
  543. data/spec/support/fixtures/templates/ide__mixed_all.txt +29 -0
  544. data/spec/support/fixtures/templates/ide__one_failure_matching.txt +15 -0
  545. data/spec/support/fixtures/templates/ide__one_failure_multiline.txt +17 -0
  546. data/spec/support/fixtures/templates/ide__one_failure_no_message.txt +15 -0
  547. data/spec/support/fixtures/templates/ide__one_failure_nonmatching.txt +15 -0
  548. data/spec/support/fixtures/templates/ide__one_ignore_no_message.txt +15 -0
  549. data/spec/support/fixtures/templates/ide__one_ignore_with_message.txt +15 -0
  550. data/spec/support/fixtures/templates/ide__stdout_only.txt +16 -0
  551. data/spec/support/fixtures/templates/pretty__all_pass.txt +8 -0
  552. data/spec/support/fixtures/templates/pretty__coverage_branches_only.txt +8 -0
  553. data/spec/support/fixtures/templates/pretty__coverage_functions_only.txt +8 -0
  554. data/spec/support/fixtures/templates/pretty__coverage_none.txt +8 -0
  555. data/spec/support/fixtures/templates/pretty__empty.txt +6 -0
  556. data/spec/support/fixtures/templates/pretty__gcov_context.txt +31 -0
  557. data/spec/support/fixtures/templates/pretty__mixed_all.txt +35 -0
  558. data/spec/support/fixtures/templates/pretty__one_failure_matching.txt +15 -0
  559. data/spec/support/fixtures/templates/pretty__one_failure_multiline.txt +17 -0
  560. data/spec/support/fixtures/templates/pretty__one_failure_no_message.txt +15 -0
  561. data/spec/support/fixtures/templates/pretty__one_failure_nonmatching.txt +15 -0
  562. data/spec/support/fixtures/templates/pretty__one_ignore_no_message.txt +15 -0
  563. data/spec/support/fixtures/templates/pretty__one_ignore_with_message.txt +15 -0
  564. data/spec/support/fixtures/templates/pretty__stdout_only.txt +15 -0
  565. data/spec/support/fixtures/valgrind_reports/sigsegv.log +51 -0
  566. data/spec/support/fixtures/valgrind_reports/sigsegv.xml +182 -0
  567. data/spec/support/include_guard_helper.rb +20 -0
  568. data/spec/support/integration/configurator_integration_helper.rb +159 -0
  569. data/spec/support/integration/dependency_tracker_integration_helper.rb +136 -0
  570. data/spec/support/integration/partials_generation_integration_helper.rb +726 -0
  571. data/spec/support/integration/spec_integration_helper.rb +285 -0
  572. data/spec/support/integration/test_includes_harness.rb +259 -0
  573. data/spec/support/integration/tool_executor_integration_helper.rb +55 -0
  574. data/spec/support/spec_helper.rb +41 -0
  575. data/spec/support/system/sanitizers/asan_ubsan.yml +82 -0
  576. data/spec/support/system/sanitizers/asan_ubsan_leaks.yml +57 -0
  577. data/spec/support/system/simplecov_boot.rb +66 -0
  578. data/spec/support/system/spec_system_helper.rb +376 -16
  579. data/spec/support/system/system_context.rb +181 -59
  580. data/spec/support/template_render_cases.rb +166 -0
  581. data/spec/system/bracket_path_handling_spec.rb +175 -0
  582. data/spec/system/build_output_mirroring_spec.rb +89 -0
  583. data/spec/system/build_recovery_spec.rb +382 -0
  584. data/spec/system/bullseye_deployment_spec.rb +102 -0
  585. data/spec/system/cli_surface_spec.rb +245 -0
  586. data/spec/system/command_hooks_spec.rb +117 -0
  587. data/spec/system/conditional_include_macro_visibility_spec.rb +32 -124
  588. data/spec/system/conditional_mock_includes_spec.rb +181 -0
  589. data/spec/system/cppcheck_deployment_spec.rb +26 -8
  590. data/spec/system/delta_builds_spec.rb +751 -0
  591. data/spec/system/deployment_as_gem_spec.rb +7 -0
  592. data/spec/system/deployment_as_vendor_spec.rb +29 -145
  593. data/spec/system/dumpconfig_spec.rb +137 -0
  594. data/spec/system/encoding_stress_spec.rb +7 -4
  595. data/spec/system/example_cipher_quest_spec.rb +25 -100
  596. data/spec/system/example_temp_sensor_spec.rb +30 -172
  597. data/spec/system/example_wondrous_forest_spec.rb +25 -62
  598. data/spec/system/extension_multiple_values_spec.rb +75 -0
  599. data/spec/system/files_paths_reporting_spec.rb +154 -0
  600. data/spec/system/gcov_deployment_spec.rb +72 -3
  601. data/spec/system/header_include_path_validation_spec.rb +222 -0
  602. data/spec/system/implicit_source_header_correspondence_disambiguation_spec.rb +100 -0
  603. data/spec/system/include_path_reconciliation_spec.rb +64 -0
  604. data/spec/system/mixin_ordering_spec.rb +30 -415
  605. data/spec/system/mocks_partials_configuration_validation_spec.rb +126 -0
  606. data/spec/system/parent_directory_reference_spec.rb +114 -0
  607. data/spec/system/partials_module_disambiguation_spec.rb +143 -0
  608. data/spec/system/pinned_thread_count_spec.rb +102 -0
  609. data/spec/system/plugin_delta_builds_spec.rb +179 -0
  610. data/spec/system/preprocessing_encoding_spec.rb +87 -4
  611. data/spec/system/preprocessing_fallback_conditionals_spec.rb +19 -25
  612. data/spec/system/preprocessing_parameterized_tests_spec.rb +2 -2
  613. data/spec/system/rake_release_task_path_disambiguation_spec.rb +97 -0
  614. data/spec/system/rake_test_task_path_disambiguation_spec.rb +118 -0
  615. data/spec/system/report_and_tooling_plugins_spec.rb +327 -0
  616. data/spec/system/ruby_replacement_spec.rb +1 -1
  617. data/spec/system/same_named_modules_spec.rb +115 -0
  618. data/spec/system/sanitize_deployment_spec.rb +64 -0
  619. data/spec/system/shuffle_tests_spec.rb +139 -0
  620. data/spec/system/sibling_header_collision_spec.rb +620 -0
  621. data/spec/system/subdir_include_preservation_spec.rb +63 -0
  622. data/spec/system/support/bullseye_common_test_cases.rb +369 -0
  623. data/spec/system/support/bullseye_helpers.rb +70 -0
  624. data/spec/system/support/common_test_cases.rb +167 -43
  625. data/spec/system/support/cppcheck_common_test_cases.rb +80 -0
  626. data/spec/system/support/cppcheck_helpers.rb +10 -8
  627. data/spec/system/support/gcov_common_test_cases.rb +173 -37
  628. data/spec/system/support/gcov_helpers.rb +3 -3
  629. data/spec/system/support/gcov_partials_test_cases.rb +48 -2
  630. data/spec/system/support/sanitize_common_test_cases.rb +222 -0
  631. data/spec/system/support/sanitize_helpers.rb +27 -0
  632. data/spec/system/support/valgrind_common_test_cases.rb +116 -16
  633. data/spec/system/support/valgrind_helpers.rb +3 -4
  634. data/spec/system/test_pipeline_stop_points_spec.rb +160 -0
  635. data/spec/system/test_runner_system_include_spec.rb +19 -41
  636. data/spec/system/test_source_file_directive_spec.rb +235 -0
  637. data/spec/system/upgrade_as_vendor_spec.rb +25 -46
  638. data/spec/system/valgrind_deployment_spec.rb +41 -0
  639. data/spec/units/batchinator_spec.rb +314 -0
  640. data/spec/units/bin/actionator_spec.rb +412 -0
  641. data/spec/units/bin/app_cfg_spec.rb +90 -0
  642. data/spec/units/bin/cli_handler_spec.rb +204 -0
  643. data/spec/units/bin/cli_helper_spec.rb +238 -10
  644. data/spec/units/bin/cli_options_transform_spec.rb +49 -0
  645. data/spec/units/bin/composinator_spec.rb +236 -0
  646. data/spec/units/bin/{projectinator_mixin_spec.rb → mixin_resolvinator_spec.rb} +122 -83
  647. data/spec/units/bin/mixin_standardizer_spec.rb +4 -3
  648. data/spec/units/bin/mixinator_spec.rb +58 -22
  649. data/spec/units/bin/path_validator_spec.rb +112 -0
  650. data/spec/units/bin/projectinator_spec.rb +223 -0
  651. data/spec/units/bin/rake_patches_spec.rb +52 -0
  652. data/spec/units/bin/recursive_merger_spec.rb +22 -0
  653. data/spec/units/bin/versionator_spec.rb +104 -0
  654. data/spec/units/c_extractor/c_extractor_code_text_spec.rb +4 -4
  655. data/spec/units/c_extractor/c_extractor_declarations_spec.rb +70 -0
  656. data/spec/units/c_extractor/c_extractor_functions_spec.rb +75 -1
  657. data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +158 -0
  658. data/spec/units/c_extractor/c_extractor_spec.rb +236 -6
  659. data/spec/units/ceedling/templateinator_golden_spec.rb +84 -0
  660. data/spec/units/ceedling/templateinator_spec.rb +188 -0
  661. data/spec/units/config/configurator_builder_spec.rb +444 -0
  662. data/spec/units/config/configurator_plugins_spec.rb +160 -0
  663. data/spec/units/config/configurator_setup_spec.rb +706 -6
  664. data/spec/units/config/configurator_spec.rb +952 -0
  665. data/spec/units/config/configurator_validator_spec.rb +259 -0
  666. data/spec/units/config/line_marker_suppressors_spec.rb +89 -0
  667. data/spec/units/config_matchinator_spec.rb +103 -0
  668. data/spec/units/defineinator_spec.rb +158 -0
  669. data/spec/units/dependencies/dependency_cache_store_spec.rb +364 -0
  670. data/spec/units/dependencies/dependency_debug_tree_spec.rb +189 -0
  671. data/spec/units/dependencies/dependency_differ_spec.rb +139 -0
  672. data/spec/units/dependencies/dependency_hasher_spec.rb +141 -0
  673. data/spec/units/dependencies/dependency_path_normalizer_spec.rb +111 -0
  674. data/spec/units/dependencies/dependency_tracker_spec.rb +905 -0
  675. data/spec/units/dependencies/dependinator_spec.rb +99 -0
  676. data/spec/units/dependencies/gcc_dependency_parser_spec.rb +152 -0
  677. data/spec/units/encodinator_spec.rb +92 -0
  678. data/spec/units/file_finder_helper_spec.rb +99 -15
  679. data/spec/units/file_finder_spec.rb +495 -0
  680. data/spec/units/file_path_collection_utils_spec.rb +9 -0
  681. data/spec/units/file_path_utils_spec.rb +736 -0
  682. data/spec/units/file_wrapper_spec.rb +447 -0
  683. data/spec/units/filename_extension_spec.rb +120 -0
  684. data/spec/units/flaginator_spec.rb +114 -0
  685. data/spec/units/generators/generator_helper_spec.rb +113 -0
  686. data/spec/units/generators/generator_mocks_spec.rb +131 -0
  687. data/spec/units/generators/generator_partials_spec.rb +366 -77
  688. data/spec/units/generators/generator_spec.rb +317 -0
  689. data/spec/units/generators/generator_test_results_backtrace_spec.rb +169 -9
  690. data/spec/units/generators/generator_test_results_sanity_checker_spec.rb +14 -6
  691. data/spec/units/generators/generator_test_results_spec.rb +65 -8
  692. data/spec/units/generators/generator_test_runner_spec.rb +1 -1
  693. data/spec/units/includes/include_factory_spec.rb +53 -0
  694. data/spec/units/includes/include_pathinator_spec.rb +269 -0
  695. data/spec/units/includes/include_spec.rb +8 -4
  696. data/spec/units/includes/includes_spec.rb +326 -18
  697. data/spec/units/mock_locator_spec.rb +74 -0
  698. data/spec/units/parsing_parcels_spec.rb +65 -0
  699. data/spec/units/partials/partializer_config_spec.rb +284 -18
  700. data/spec/units/partials/partializer_helper_spec.rb +122 -0
  701. data/spec/units/partials/partializer_spec.rb +474 -36
  702. data/spec/units/partials/partializer_utils_spec.rb +4 -4
  703. data/spec/units/partials_manager_spec.rb +539 -0
  704. data/spec/units/path_matcher_spec.rb +193 -0
  705. data/spec/units/path_mirror_spec.rb +103 -0
  706. data/spec/units/plugin_manager_spec.rb +77 -0
  707. data/spec/units/plugin_reportinator_spec.rb +78 -3
  708. data/spec/units/plugins/bullseye_spec.rb +1068 -0
  709. data/spec/units/plugins/command_hooks_spec.rb +157 -0
  710. data/spec/units/plugins/compile_commands_json_db_spec.rb +145 -0
  711. data/spec/units/plugins/console_reportinator_spec.rb +370 -0
  712. data/spec/units/plugins/cppcheck_spec.rb +330 -4
  713. data/spec/units/plugins/cppunit_tests_reporter_spec.rb +118 -0
  714. data/spec/units/plugins/dependencies_spec.rb +295 -0
  715. data/spec/units/plugins/dependency_commands_spec.rb +83 -0
  716. data/spec/units/plugins/dependency_environment_spec.rb +64 -0
  717. data/spec/units/plugins/dependency_spec_spec.rb +170 -0
  718. data/spec/units/plugins/gcov_reportinator_spec.rb +272 -0
  719. data/spec/units/plugins/gcov_spec.rb +521 -0
  720. data/spec/units/plugins/gcovr_reportinator_spec.rb +795 -0
  721. data/spec/units/plugins/gtestlike_report_spec.rb +363 -0
  722. data/spec/units/plugins/html_tests_reporter_spec.rb +158 -0
  723. data/spec/units/plugins/ide_report_lines_spec.rb +229 -0
  724. data/spec/units/plugins/json_tests_reporter_spec.rb +87 -0
  725. data/spec/units/plugins/junit_tests_reporter_spec.rb +237 -0
  726. data/spec/units/plugins/module_generator_options_spec.rb +185 -0
  727. data/spec/units/plugins/module_generator_project_spec.rb +55 -0
  728. data/spec/units/plugins/module_generator_request_spec.rb +107 -0
  729. data/spec/units/plugins/module_generator_spec.rb +214 -0
  730. data/spec/units/plugins/module_generator_test_file_spec.rb +102 -0
  731. data/spec/units/plugins/module_generator_unity_spec.rb +37 -0
  732. data/spec/units/plugins/report_build_warnings_log_spec.rb +199 -0
  733. data/spec/units/plugins/report_log_writer_plugin_spec.rb +94 -0
  734. data/spec/units/plugins/report_tests_gtestlike_stdout_spec.rb +274 -0
  735. data/spec/units/plugins/report_tests_ide_stdout_spec.rb +140 -0
  736. data/spec/units/plugins/report_tests_log_factory_spec.rb +210 -0
  737. data/spec/units/plugins/report_tests_pretty_stdout_spec.rb +83 -0
  738. data/spec/units/plugins/report_tests_raw_output_log_spec.rb +98 -0
  739. data/spec/units/plugins/report_tests_stdout_plugin_spec.rb +145 -0
  740. data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +121 -0
  741. data/spec/units/plugins/reportgenerator_reportinator_spec.rb +410 -0
  742. data/spec/units/plugins/sanitize_config_spec.rb +119 -0
  743. data/spec/units/plugins/sanitize_findings_spec.rb +69 -0
  744. data/spec/units/plugins/sanitize_records_spec.rb +114 -0
  745. data/spec/units/plugins/sanitize_reports_spec.rb +84 -0
  746. data/spec/units/plugins/sanitize_spec.rb +300 -0
  747. data/spec/units/plugins/tests_reporter_spec.rb +89 -0
  748. data/spec/units/plugins/valgrind_spec.rb +560 -0
  749. data/spec/units/plugins/warning_collector_spec.rb +185 -0
  750. data/spec/units/plugins/warning_reports_spec.rb +150 -0
  751. data/spec/units/preprocess/c_comment_scanner_spec.rb +17 -17
  752. data/spec/units/preprocess/c_preprocessor_conditionals_spec.rb +94 -0
  753. data/spec/units/preprocess/preprocessinator_bare_includes_extractor_spec.rb +73 -0
  754. data/spec/units/preprocess/preprocessinator_code_finder_spec.rb +35 -16
  755. data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +129 -48
  756. data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +292 -9
  757. data/spec/units/preprocess/preprocessinator_includes_handler_spec.rb +294 -16
  758. data/spec/units/preprocess/preprocessinator_line_marker_includes_extractor_spec.rb +356 -6
  759. data/spec/units/preprocess/preprocessinator_reconstructor_spec.rb +58 -4
  760. data/spec/units/preprocess/preprocessinator_spec.rb +693 -5
  761. data/spec/units/quote_include_isolator_spec.rb +176 -0
  762. data/spec/units/rake_app/rake_invocation_tracker_spec.rb +94 -0
  763. data/spec/units/rake_app/rake_task_registry_spec.rb +263 -0
  764. data/spec/units/rake_app/rake_utils_spec.rb +54 -0
  765. data/spec/units/rake_app/rake_wrapper_spec.rb +64 -0
  766. data/spec/units/rake_app/rakefile_component_resolver_spec.rb +182 -0
  767. data/spec/units/release_build_executor_spec.rb +404 -0
  768. data/spec/units/release_build_planner_spec.rb +144 -0
  769. data/spec/units/release_invoker_spec.rb +127 -0
  770. data/spec/units/reportinator_spec.rb +35 -0
  771. data/spec/units/ruby_expandinator_spec.rb +36 -0
  772. data/spec/units/standin_headerinator_spec.rb +168 -0
  773. data/spec/units/system_wrapper_spec.rb +16 -0
  774. data/spec/units/test_build_executor_spec.rb +1653 -8
  775. data/spec/units/test_build_planner_spec.rb +878 -0
  776. data/spec/units/test_build_setup_spec.rb +583 -0
  777. data/spec/units/test_context_extractor_spec.rb +51 -3
  778. data/spec/units/test_file_preprocessinator_spec.rb +206 -0
  779. data/spec/units/test_includes_extractinator_spec.rb +764 -0
  780. data/spec/units/test_invoker/objects_wiring_spec.rb +31 -0
  781. data/spec/units/test_invoker_spec.rb +147 -0
  782. data/spec/units/test_invoker_types_spec.rb +182 -0
  783. data/spec/units/test_pipeline_helpers_spec.rb +100 -0
  784. data/spec/units/test_pipeline_manager_spec.rb +415 -0
  785. data/spec/units/test_runner_generatinator_spec.rb +215 -0
  786. data/spec/units/test_runner_manager_spec.rb +70 -0
  787. data/spec/units/test_search_paths_spec.rb +84 -0
  788. data/spec/units/test_source_file_directive_resolver_spec.rb +239 -0
  789. data/spec/units/tool_executor_helper_spec.rb +1 -1
  790. data/spec/units/tool_executor_spec.rb +571 -2
  791. data/spec/units/tool_validator_spec.rb +303 -24
  792. data/spec/units/version_spec.rb +74 -0
  793. data/spec/units/yaml_wrapper_spec.rb +4 -1
  794. data/vendor/cmock/docs/CMock_Summary.md +11 -0
  795. data/vendor/cmock/lib/cmock_config.rb +1 -0
  796. data/vendor/cmock/lib/cmock_generator.rb +5 -1
  797. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +31 -0
  798. data/vendor/cmock/vendor/unity/auto/generate_module.rb +4 -4
  799. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +8 -2
  800. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +2 -2
  801. data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +7 -0
  802. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +4 -0
  803. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  804. data/vendor/cmock/vendor/unity/src/unity_internals.h +21 -7
  805. data/vendor/cmock/vendor/unity/test/Makefile +9 -2
  806. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -0
  807. data/vendor/cmock/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  808. data/vendor/cmock/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  809. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  810. data/vendor/cmock/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  811. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +78 -0
  812. data/vendor/cmock/vendor/unity/test/tests/test_unity_test_summary.rb +58 -0
  813. data/vendor/diy/lib/diy/factory.rb +5 -4
  814. data/vendor/diy/lib/diy.rb +5 -4
  815. data/vendor/diy/sample_code/car.rb +5 -4
  816. data/vendor/diy/sample_code/chassis.rb +5 -4
  817. data/vendor/diy/sample_code/diy_example.rb +5 -4
  818. data/vendor/diy/sample_code/engine.rb +5 -4
  819. data/vendor/diy/sample_code/objects.yml +5 -4
  820. data/vendor/diy/test/constructor.rb +5 -4
  821. data/vendor/diy/test/diy_test.rb +5 -4
  822. data/vendor/diy/test/factory_test.rb +5 -4
  823. data/vendor/diy/test/files/broken_construction.yml +5 -4
  824. data/vendor/diy/test/files/cat/cat.rb +5 -4
  825. data/vendor/diy/test/files/cat/extra_conflict.yml +5 -4
  826. data/vendor/diy/test/files/cat/heritage.rb +5 -4
  827. data/vendor/diy/test/files/cat/needs_input.yml +5 -4
  828. data/vendor/diy/test/files/cat/the_cat_lineage.rb +5 -4
  829. data/vendor/diy/test/files/dog/dog_model.rb +5 -4
  830. data/vendor/diy/test/files/dog/dog_presenter.rb +5 -4
  831. data/vendor/diy/test/files/dog/dog_view.rb +5 -4
  832. data/vendor/diy/test/files/dog/file_resolver.rb +5 -4
  833. data/vendor/diy/test/files/dog/other_thing.rb +5 -4
  834. data/vendor/diy/test/files/dog/simple.yml +5 -4
  835. data/vendor/diy/test/files/donkey/foo/bar/qux.rb +5 -4
  836. data/vendor/diy/test/files/donkey/foo.rb +5 -4
  837. data/vendor/diy/test/files/factory/beef.rb +5 -4
  838. data/vendor/diy/test/files/factory/dog.rb +5 -4
  839. data/vendor/diy/test/files/factory/factory.yml +5 -4
  840. data/vendor/diy/test/files/factory/farm/llama.rb +5 -4
  841. data/vendor/diy/test/files/factory/farm/pork.rb +5 -4
  842. data/vendor/diy/test/files/factory/kitten.rb +5 -4
  843. data/vendor/diy/test/files/fud/objects.yml +5 -4
  844. data/vendor/diy/test/files/fud/toy.rb +5 -4
  845. data/vendor/diy/test/files/functions/attached_things_builder.rb +5 -4
  846. data/vendor/diy/test/files/functions/invalid_method.yml +5 -4
  847. data/vendor/diy/test/files/functions/method_extractor.rb +5 -4
  848. data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -4
  849. data/vendor/diy/test/files/functions/objects.yml +5 -4
  850. data/vendor/diy/test/files/functions/thing.rb +5 -4
  851. data/vendor/diy/test/files/functions/thing_builder.rb +5 -4
  852. data/vendor/diy/test/files/functions/things_builder.rb +5 -4
  853. data/vendor/diy/test/files/gnu/objects.yml +5 -4
  854. data/vendor/diy/test/files/gnu/thinger.rb +5 -4
  855. data/vendor/diy/test/files/goat/base.rb +5 -4
  856. data/vendor/diy/test/files/goat/can.rb +5 -4
  857. data/vendor/diy/test/files/goat/goat.rb +5 -4
  858. data/vendor/diy/test/files/goat/objects.yml +5 -4
  859. data/vendor/diy/test/files/goat/paper.rb +5 -4
  860. data/vendor/diy/test/files/goat/plane.rb +5 -4
  861. data/vendor/diy/test/files/goat/shirt.rb +5 -4
  862. data/vendor/diy/test/files/goat/wings.rb +5 -4
  863. data/vendor/diy/test/files/horse/holder_thing.rb +5 -4
  864. data/vendor/diy/test/files/horse/objects.yml +5 -4
  865. data/vendor/diy/test/files/namespace/animal/bird.rb +5 -4
  866. data/vendor/diy/test/files/namespace/animal/cat.rb +5 -4
  867. data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +5 -4
  868. data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +5 -4
  869. data/vendor/diy/test/files/namespace/bad_module_specified.yml +5 -4
  870. data/vendor/diy/test/files/namespace/class_name_combine.yml +5 -4
  871. data/vendor/diy/test/files/namespace/no_module_specified.yml +5 -4
  872. data/vendor/diy/test/files/namespace/objects.yml +5 -4
  873. data/vendor/diy/test/files/namespace/road.rb +5 -4
  874. data/vendor/diy/test/files/namespace/sky.rb +5 -4
  875. data/vendor/diy/test/files/namespace/subcontext.yml +5 -4
  876. data/vendor/diy/test/files/non_singleton/air.rb +5 -4
  877. data/vendor/diy/test/files/non_singleton/fat_cat.rb +5 -4
  878. data/vendor/diy/test/files/non_singleton/objects.yml +5 -4
  879. data/vendor/diy/test/files/non_singleton/pig.rb +5 -4
  880. data/vendor/diy/test/files/non_singleton/thread_spinner.rb +5 -4
  881. data/vendor/diy/test/files/non_singleton/tick.rb +5 -4
  882. data/vendor/diy/test/files/non_singleton/yard.rb +5 -4
  883. data/vendor/diy/test/files/yak/core_model.rb +5 -4
  884. data/vendor/diy/test/files/yak/core_presenter.rb +5 -4
  885. data/vendor/diy/test/files/yak/core_view.rb +5 -4
  886. data/vendor/diy/test/files/yak/data_source.rb +5 -4
  887. data/vendor/diy/test/files/yak/fringe_model.rb +5 -4
  888. data/vendor/diy/test/files/yak/fringe_presenter.rb +5 -4
  889. data/vendor/diy/test/files/yak/fringe_view.rb +5 -4
  890. data/vendor/diy/test/files/yak/giant_squid.rb +5 -4
  891. data/vendor/diy/test/files/yak/krill.rb +5 -4
  892. data/vendor/diy/test/files/yak/my_objects.yml +5 -4
  893. data/vendor/diy/test/files/yak/sub_sub_context_test.yml +5 -4
  894. data/vendor/diy/test/test_helper.rb +5 -4
  895. data/vendor/unity/auto/generate_module.rb +4 -4
  896. data/vendor/unity/auto/generate_test_runner.rb +5 -1
  897. data/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
  898. data/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
  899. data/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
  900. data/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
  901. data/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
  902. data/vendor/unity/test/tests/test_generate_test_runner.rb +29 -0
  903. metadata +770 -285
  904. data/assets/tests_with_fallback_conditionals/src/conditional_module.c +0 -18
  905. data/bin/actions_wrapper.rb +0 -51
  906. data/docs/mkdocs/assets/images/ceedling-logo-circle.png +0 -0
  907. data/docs/mkdocs/assets/images/ceedling.svg +0 -90
  908. data/docs/mkdocs/assets/images/favicon.png +0 -0
  909. data/docs/mkdocs/assets/stylesheets/admonitions.css +0 -152
  910. data/docs/mkdocs/assets/stylesheets/fixes-local.css +0 -15
  911. data/docs/mkdocs/assets/stylesheets/styling.css +0 -102
  912. data/docs/mkdocs/configuration/environment-vars.md +0 -14
  913. data/docs/mkdocs/configuration/global-collections.md +0 -156
  914. data/docs/mkdocs/configuration/index.md +0 -75
  915. data/docs/mkdocs/configuration/loading.md +0 -89
  916. data/docs/mkdocs/configuration/mixins.md +0 -607
  917. data/docs/mkdocs/configuration/parallel-builds.md +0 -97
  918. data/docs/mkdocs/configuration/project-file.md +0 -216
  919. data/docs/mkdocs/configuration/reference/cexception.md +0 -35
  920. data/docs/mkdocs/configuration/reference/cmock.md +0 -106
  921. data/docs/mkdocs/configuration/reference/defines.md +0 -352
  922. data/docs/mkdocs/configuration/reference/environment.md +0 -55
  923. data/docs/mkdocs/configuration/reference/extension.md +0 -63
  924. data/docs/mkdocs/configuration/reference/files.md +0 -154
  925. data/docs/mkdocs/configuration/reference/flags.md +0 -296
  926. data/docs/mkdocs/configuration/reference/index.md +0 -176
  927. data/docs/mkdocs/configuration/reference/libraries.md +0 -82
  928. data/docs/mkdocs/configuration/reference/mixins.md +0 -24
  929. data/docs/mkdocs/configuration/reference/partials.md +0 -38
  930. data/docs/mkdocs/configuration/reference/paths.md +0 -276
  931. data/docs/mkdocs/configuration/reference/plugins.md +0 -60
  932. data/docs/mkdocs/configuration/reference/project.md +0 -333
  933. data/docs/mkdocs/configuration/reference/release-build.md +0 -62
  934. data/docs/mkdocs/configuration/reference/test-build.md +0 -55
  935. data/docs/mkdocs/configuration/reference/test-runner.md +0 -61
  936. data/docs/mkdocs/configuration/reference/tools.md +0 -457
  937. data/docs/mkdocs/configuration/reference/unity.md +0 -49
  938. data/docs/mkdocs/configuration/which-ceedling.md +0 -77
  939. data/docs/mkdocs/development/index.md +0 -50
  940. data/docs/mkdocs/development/plugins/configuration.md +0 -164
  941. data/docs/mkdocs/development/plugins/index.md +0 -84
  942. data/docs/mkdocs/development/plugins/plugin-subclass.md +0 -513
  943. data/docs/mkdocs/development/plugins/rake-tasks.md +0 -54
  944. data/docs/mkdocs/development/workflow.md +0 -284
  945. data/docs/mkdocs/getting-started/command-line.md +0 -477
  946. data/docs/mkdocs/getting-started/example-projects/cipher-quest.md +0 -65
  947. data/docs/mkdocs/getting-started/example-projects/index.md +0 -49
  948. data/docs/mkdocs/getting-started/example-projects/temp-sensor.md +0 -60
  949. data/docs/mkdocs/getting-started/example-projects/wondrous-forest.md +0 -45
  950. data/docs/mkdocs/getting-started/index.md +0 -41
  951. data/docs/mkdocs/getting-started/installation.md +0 -179
  952. data/docs/mkdocs/getting-started/quick-start.md +0 -86
  953. data/docs/mkdocs/help.md +0 -49
  954. data/docs/mkdocs/index.md +0 -222
  955. data/docs/mkdocs/overview/build-system.md +0 -115
  956. data/docs/mkdocs/overview/index.md +0 -29
  957. data/docs/mkdocs/overview/test-environments.md +0 -33
  958. data/docs/mkdocs/overview/tools-and-frameworks.md +0 -115
  959. data/docs/mkdocs/plugins/beep.md +0 -134
  960. data/docs/mkdocs/plugins/bullseye.md +0 -83
  961. data/docs/mkdocs/plugins/command-hooks.md +0 -268
  962. data/docs/mkdocs/plugins/compile-commands-json-db.md +0 -42
  963. data/docs/mkdocs/plugins/cppcheck.md +0 -377
  964. data/docs/mkdocs/plugins/dependencies.md +0 -310
  965. data/docs/mkdocs/plugins/fff.md +0 -247
  966. data/docs/mkdocs/plugins/gcov/examples.md +0 -92
  967. data/docs/mkdocs/plugins/gcov/gcovr.md +0 -412
  968. data/docs/mkdocs/plugins/gcov/index.md +0 -74
  969. data/docs/mkdocs/plugins/gcov/overview.md +0 -145
  970. data/docs/mkdocs/plugins/gcov/reportgenerator.md +0 -140
  971. data/docs/mkdocs/plugins/gcov/reporting.md +0 -147
  972. data/docs/mkdocs/plugins/gcov/setup.md +0 -232
  973. data/docs/mkdocs/plugins/gcov/tool-versions.md +0 -60
  974. data/docs/mkdocs/plugins/gcov/troubleshooting.md +0 -78
  975. data/docs/mkdocs/plugins/index.md +0 -261
  976. data/docs/mkdocs/plugins/module-generator.md +0 -267
  977. data/docs/mkdocs/plugins/report-build-warnings-log.md +0 -42
  978. data/docs/mkdocs/plugins/report-tests-gtestlike-stdout.md +0 -98
  979. data/docs/mkdocs/plugins/report-tests-ide-stdout.md +0 -63
  980. data/docs/mkdocs/plugins/report-tests-log-factory.md +0 -454
  981. data/docs/mkdocs/plugins/report-tests-pretty-stdout.md +0 -56
  982. data/docs/mkdocs/plugins/report-tests-raw-output-log.md +0 -52
  983. data/docs/mkdocs/plugins/report-tests-teamcity-stdout.md +0 -96
  984. data/docs/mkdocs/plugins/sample_html_report.png +0 -0
  985. data/docs/mkdocs/plugins/valgrind.md +0 -198
  986. data/docs/mkdocs/project/release-history.md +0 -61
  987. data/docs/mkdocs/project/upgrade.md +0 -85
  988. data/docs/mkdocs/reference/build-directives.md +0 -37
  989. data/docs/mkdocs/reference/command-line.md +0 -323
  990. data/docs/mkdocs/reference/environment-vars.md +0 -60
  991. data/docs/mkdocs/reference/gcov-plugin.md +0 -600
  992. data/docs/mkdocs/reference/global-collections.md +0 -160
  993. data/docs/mkdocs/reference/index.md +0 -65
  994. data/docs/mkdocs/reference/partials-macros.md +0 -79
  995. data/docs/mkdocs/reference/project-configuration.md +0 -46
  996. data/docs/mkdocs/snapshot/assets/project.yml +0 -404
  997. data/docs/mkdocs/snapshot/examples/cipher_quest/README.md +0 -210
  998. data/docs/mkdocs/snapshot/examples/temp_sensor/README.md +0 -283
  999. data/docs/mkdocs/snapshot/examples/wondrous_forest/README.md +0 -92
  1000. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +0 -32
  1001. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults_gcov.rb +0 -136
  1002. data/docs/mkdocs/snapshot.yml +0 -20
  1003. data/docs/mkdocs/testing-guide/build-directives.md +0 -153
  1004. data/docs/mkdocs/testing-guide/conventions.md +0 -616
  1005. data/docs/mkdocs/testing-guide/frameworks.md +0 -192
  1006. data/docs/mkdocs/testing-guide/index.md +0 -80
  1007. data/docs/mkdocs/testing-guide/partials/configuration.md +0 -67
  1008. data/docs/mkdocs/testing-guide/partials/conventions.md +0 -68
  1009. data/docs/mkdocs/testing-guide/partials/directives.md +0 -212
  1010. data/docs/mkdocs/testing-guide/partials/example.md +0 -149
  1011. data/docs/mkdocs/testing-guide/partials/index.md +0 -88
  1012. data/docs/mkdocs/testing-guide/partials/overview.md +0 -81
  1013. data/docs/mkdocs/testing-guide/partials/variables.md +0 -244
  1014. data/docs/mkdocs/testing-guide/test-cases.md +0 -194
  1015. data/docs/mkdocs/testing-guide/test-sample.md +0 -94
  1016. data/docs/mkdocs/testing-guide/test-suite-anatomy.md +0 -58
  1017. data/lib/ceedling/cacheinator.rb +0 -53
  1018. data/lib/ceedling/cacheinator_helper.rb +0 -60
  1019. data/lib/ceedling/dependinator.rb +0 -31
  1020. data/lib/ceedling/makefile.rb +0 -52
  1021. data/lib/ceedling/release_invoker.rb +0 -112
  1022. data/lib/ceedling/rules_release.rake +0 -109
  1023. data/lib/ceedling/rules_tests.rake +0 -40
  1024. data/lib/ceedling/tasks_release.rake +0 -36
  1025. data/plugins/fff/vendor/fff/Makefile +0 -10
  1026. data/plugins/fff/vendor/fff/buildandtest +0 -15
  1027. data/plugins/fff/vendor/fff/examples/Makefile +0 -7
  1028. data/plugins/fff/vendor/fff/examples/driver_testing/Makefile +0 -64
  1029. data/plugins/fff/vendor/fff/examples/driver_testing/driver.c +0 -32
  1030. data/plugins/fff/vendor/fff/examples/driver_testing/driver.h +0 -21
  1031. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.cpp +0 -58
  1032. data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.fff.cpp +0 -70
  1033. data/plugins/fff/vendor/fff/examples/driver_testing/hardware_abstraction.h +0 -25
  1034. data/plugins/fff/vendor/fff/examples/driver_testing/registers.h +0 -23
  1035. data/plugins/fff/vendor/fff/examples/embedded_ui/DISPLAY.h +0 -27
  1036. data/plugins/fff/vendor/fff/examples/embedded_ui/Kata.txt +0 -25
  1037. data/plugins/fff/vendor/fff/examples/embedded_ui/Makefile +0 -67
  1038. data/plugins/fff/vendor/fff/examples/embedded_ui/SYSTEM.h +0 -31
  1039. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.c +0 -56
  1040. data/plugins/fff/vendor/fff/examples/embedded_ui/UI.h +0 -22
  1041. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_ansic.c +0 -191
  1042. data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_cpp.cpp +0 -144
  1043. data/plugins/fff/vendor/fff/examples/embedded_ui/test_suite_template.c +0 -42
  1044. data/plugins/fff/vendor/fff/gtest/Makefile +0 -22
  1045. data/plugins/fff/vendor/fff/gtest/gtest-all.cc +0 -9118
  1046. data/plugins/fff/vendor/fff/gtest/gtest-main.cc +0 -6
  1047. data/plugins/fff/vendor/fff/gtest/gtest.h +0 -19547
  1048. data/plugins/fff/vendor/fff/test/Makefile +0 -81
  1049. data/plugins/fff/vendor/fff/test/c_test_framework.h +0 -25
  1050. data/plugins/fff/vendor/fff/test/fff_test_c.c +0 -116
  1051. data/plugins/fff/vendor/fff/test/fff_test_cpp.cpp +0 -53
  1052. data/plugins/fff/vendor/fff/test/fff_test_global_c.c +0 -84
  1053. data/plugins/fff/vendor/fff/test/fff_test_global_cpp.cpp +0 -31
  1054. data/plugins/fff/vendor/fff/test/global_fakes.c +0 -21
  1055. data/plugins/fff/vendor/fff/test/global_fakes.h +0 -47
  1056. data/plugins/fff/vendor/fff/test/test_cases.include +0 -276
  1057. data/plugins/report_tests_gtestlike_stdout/assets/template.erb +0 -83
  1058. data/spec/units/configurator_spec.rb +0 -232
  1059. /data/assets/{ceedling → features/ceedling} +0 -0
  1060. /data/assets/{ceedling.cmd → features/ceedling.cmd} +0 -0
  1061. /data/assets/{default_gitignore → features/default_gitignore} +0 -0
  1062. /data/assets/{broken_uncovered_file.c → fixtures/broken_uncovered_file.c} +0 -0
  1063. /data/assets/{example_file.c → fixtures/example_file.c} +0 -0
  1064. /data/assets/{example_file.h → fixtures/example_file.h} +0 -0
  1065. /data/assets/{example_file_call.c → fixtures/example_file_call.c} +0 -0
  1066. /data/assets/{example_file_call.h → fixtures/example_file_call.h} +0 -0
  1067. /data/assets/{example_file_with_statics.c → fixtures/example_file_with_statics.c} +0 -0
  1068. /data/assets/{example_file_with_stdio.c → fixtures/example_file_with_stdio.c} +0 -0
  1069. /data/assets/{example_file_with_stdio.h → fixtures/example_file_with_stdio.h} +0 -0
  1070. /data/assets/{fake_crash_test_fixture.rb → fixtures/fake_crash_test_fixture.rb} +0 -0
  1071. /data/assets/{partial_all_module.h → fixtures/partial_all_module.h} +0 -0
  1072. /data/assets/{run_with_ubsan.rb → fixtures/run_with_ubsan.rb} +0 -0
  1073. /data/assets/{same_dir_pairing_module.c → fixtures/same_dir_pairing_module.c} +0 -0
  1074. /data/assets/{same_dir_pairing_module.h → fixtures/same_dir_pairing_module.h} +0 -0
  1075. /data/assets/{same_dir_pairing_module_func.h → fixtures/same_dir_pairing_module_func.h} +0 -0
  1076. /data/assets/{same_dir_pairing_other.c → fixtures/same_dir_pairing_other.c} +0 -0
  1077. /data/assets/{same_dir_pairing_other.h → fixtures/same_dir_pairing_other.h} +0 -0
  1078. /data/assets/{test_example_file.c → fixtures/test_example_file.c} +0 -0
  1079. /data/assets/{test_example_file_2.c → fixtures/test_example_file_2.c} +0 -0
  1080. /data/assets/{test_example_file_source_include.c → fixtures/test_example_file_source_include.c} +0 -0
  1081. /data/assets/{test_example_file_success.c → fixtures/test_example_file_success.c} +0 -0
  1082. /data/assets/{test_example_file_unity_printf.c → fixtures/test_example_file_unity_printf.c} +0 -0
  1083. /data/assets/{test_example_file_verbose.c → fixtures/test_example_file_verbose.c} +0 -0
  1084. /data/assets/{test_example_file_with_mock.c → fixtures/test_example_file_with_mock.c} +0 -0
  1085. /data/assets/{test_example_file_with_stdio.c → fixtures/test_example_file_with_stdio.c} +0 -0
  1086. /data/assets/{test_example_with_parameterized_tests.c → fixtures/test_example_with_parameterized_tests.c} +0 -0
  1087. /data/assets/{test_partial_all_module.c → fixtures/test_partial_all_module.c} +0 -0
  1088. /data/assets/{test_same_dir_pairing.c → fixtures/test_same_dir_pairing.c} +0 -0
  1089. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_config.h +0 -0
  1090. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_extra.h +0 -0
  1091. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/local_flag_extra.h +0 -0
  1092. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_extra.h +0 -0
  1093. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_wrapper.h +0 -0
  1094. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/project_flag_extra.h +0 -0
  1095. /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.h +0 -0
  1096. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.c +0 -0
  1097. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.h +0 -0
  1098. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.c +0 -0
  1099. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.h +0 -0
  1100. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware.c +0 -0
  1101. /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware_special.c +0 -0
  1102. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.c +0 -0
  1103. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.h +0 -0
  1104. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder.c +0 -0
  1105. /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder_partial.c +0 -0
  1106. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/conditional_module.h +0 -0
  1107. /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/optional_dep.h +0 -0
  1108. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.c +0 -0
  1109. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.h +0 -0
  1110. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.c +0 -0
  1111. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.h +0 -0
  1112. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.c +0 -0
  1113. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.h +0 -0
  1114. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_blanks.c +0 -0
  1115. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_counter.c +0 -0
  1116. /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_decorators.c +0 -0
  1117. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.c +0 -0
  1118. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.h +0 -0
  1119. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.c +0 -0
  1120. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.h +0 -0
  1121. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.c +0 -0
  1122. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.h +0 -0
  1123. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorA.h +0 -0
  1124. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorB.h +0 -0
  1125. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorC.h +0 -0
  1126. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareA.c +0 -0
  1127. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareB.c +0 -0
  1128. /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareC.c +0 -0
  1129. /data/assets/{uncovered_example_file.c → fixtures/uncovered_example_file.c} +0 -0
  1130. /data/plugins/bullseye/assets/{template.erb → coverage.template} +0 -0
@@ -89,10 +89,34 @@
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
+
92
102
  </div>
93
103
 
94
104
  <div data-md-color-scheme="default" data-md-component="outdated" hidden>
95
105
 
106
+ <aside class="md-banner md-banner--warning">
107
+ <div class="md-banner__inner md-grid md-typeset">
108
+
109
+
110
+ You are not viewing the latest version.
111
+ <a href="../..">
112
+ <strong>Click here to go to latest.</strong>
113
+ </a>
114
+
115
+
116
+ </div>
117
+ <script>var el=document.querySelector("[data-md-component=outdated]"),base=new URL(".."),outdated=__md_get("__outdated",sessionStorage,base);!0===outdated&&el&&(el.hidden=!1)</script>
118
+ </aside>
119
+
96
120
  </div>
97
121
 
98
122
 
@@ -332,7 +356,7 @@
332
356
 
333
357
 
334
358
  <li class="md-tabs__item">
335
- <a href="../project/release-history.html" class="md-tabs__link">
359
+ <a href="../project/index.html" class="md-tabs__link">
336
360
 
337
361
 
338
362
 
@@ -641,6 +665,8 @@
641
665
 
642
666
 
643
667
 
668
+
669
+
644
670
 
645
671
 
646
672
 
@@ -788,6 +814,34 @@
788
814
 
789
815
 
790
816
 
817
+ <li class="md-nav__item">
818
+ <a href="../getting-started/builds.html" class="md-nav__link">
819
+
820
+
821
+
822
+ <span class="md-ellipsis">
823
+
824
+
825
+ Builds
826
+
827
+
828
+
829
+ </span>
830
+
831
+
832
+
833
+ </a>
834
+ </li>
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
791
845
 
792
846
 
793
847
 
@@ -814,7 +868,7 @@
814
868
 
815
869
 
816
870
 
817
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
871
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
818
872
 
819
873
 
820
874
  <div class="md-nav__link md-nav__container">
@@ -836,14 +890,14 @@
836
890
  </a>
837
891
 
838
892
 
839
- <label class="md-nav__link " for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
893
+ <label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
840
894
  <span class="md-nav__icon md-icon"></span>
841
895
  </label>
842
896
 
843
897
  </div>
844
898
 
845
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
846
- <label class="md-nav__title" for="__nav_3_5">
899
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
900
+ <label class="md-nav__title" for="__nav_3_6">
847
901
  <span class="md-nav__icon md-icon"></span>
848
902
 
849
903
 
@@ -2412,6 +2466,8 @@
2412
2466
 
2413
2467
 
2414
2468
 
2469
+
2470
+
2415
2471
 
2416
2472
 
2417
2473
 
@@ -3049,8 +3105,64 @@
3049
3105
 
3050
3106
 
3051
3107
  <li class="md-nav__item">
3052
- <a href="bullseye.html" class="md-nav__link">
3108
+ <a href="sanitize.html" class="md-nav__link">
3109
+
3110
+
3111
+
3112
+ <span class="md-ellipsis">
3113
+
3114
+
3115
+ Sanitize (ASan, UBSan & Leaks)
3116
+
3117
+
3118
+
3119
+ </span>
3120
+
3121
+
3122
+
3123
+ </a>
3124
+ </li>
3125
+
3126
+
3127
+
3128
+
3129
+
3130
+
3131
+
3132
+
3133
+
3134
+
3135
+
3136
+
3137
+
3138
+
3139
+
3140
+
3141
+
3142
+
3143
+
3144
+
3145
+
3146
+
3147
+
3148
+
3149
+
3150
+
3151
+
3152
+
3153
+
3154
+
3155
+
3156
+ <li class="md-nav__item md-nav__item--section md-nav__item--nested">
3157
+
3158
+
3159
+
3160
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_13" >
3053
3161
 
3162
+
3163
+ <div class="md-nav__link md-nav__container">
3164
+ <a href="bullseye/index.html" class="md-nav__link ">
3165
+
3054
3166
 
3055
3167
 
3056
3168
  <span class="md-ellipsis">
@@ -3060,6 +3172,50 @@
3060
3172
 
3061
3173
 
3062
3174
 
3175
+ </span>
3176
+
3177
+
3178
+
3179
+ </a>
3180
+
3181
+
3182
+ <label class="md-nav__link " for="__nav_6_13" id="__nav_6_13_label" tabindex="">
3183
+ <span class="md-nav__icon md-icon"></span>
3184
+ </label>
3185
+
3186
+ </div>
3187
+
3188
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_13_label" aria-expanded="false">
3189
+ <label class="md-nav__title" for="__nav_6_13">
3190
+ <span class="md-nav__icon md-icon"></span>
3191
+
3192
+
3193
+ Bullseye (Coverage)
3194
+
3195
+
3196
+ </label>
3197
+ <ul class="md-nav__list" data-md-scrollfix>
3198
+
3199
+
3200
+
3201
+
3202
+
3203
+
3204
+
3205
+
3206
+
3207
+ <li class="md-nav__item">
3208
+ <a href="bullseye/licensing.html" class="md-nav__link">
3209
+
3210
+
3211
+
3212
+ <span class="md-ellipsis">
3213
+
3214
+
3215
+ Licensing
3216
+
3217
+
3218
+
3063
3219
  </span>
3064
3220
 
3065
3221
 
@@ -3070,6 +3226,14 @@
3070
3226
 
3071
3227
 
3072
3228
 
3229
+ </ul>
3230
+ </nav>
3231
+
3232
+ </li>
3233
+
3234
+
3235
+
3236
+
3073
3237
 
3074
3238
 
3075
3239
 
@@ -3282,11 +3446,33 @@
3282
3446
  <nav class="md-nav" aria-label="Paths">
3283
3447
  <ul class="md-nav__list">
3284
3448
 
3449
+ <li class="md-nav__item">
3450
+ <a href="#path-hints" class="md-nav__link">
3451
+ <span class="md-ellipsis">
3452
+
3453
+ Path hints
3454
+
3455
+ </span>
3456
+ </a>
3457
+
3458
+ </li>
3459
+
3285
3460
  <li class="md-nav__item">
3286
3461
  <a href="#adding-to-paths" class="md-nav__link">
3287
3462
  <span class="md-ellipsis">
3288
3463
 
3289
- Adding to Paths
3464
+ Adding to paths
3465
+
3466
+ </span>
3467
+ </a>
3468
+
3469
+ </li>
3470
+
3471
+ <li class="md-nav__item">
3472
+ <a href="#same-named-files" class="md-nav__link">
3473
+ <span class="md-ellipsis">
3474
+
3475
+ Same-named files
3290
3476
 
3291
3477
  </span>
3292
3478
  </a>
@@ -3307,6 +3493,28 @@
3307
3493
  </span>
3308
3494
  </a>
3309
3495
 
3496
+ </li>
3497
+
3498
+ <li class="md-nav__item">
3499
+ <a href="#testing-from-headers" class="md-nav__link">
3500
+ <span class="md-ellipsis">
3501
+
3502
+ Testing from headers
3503
+
3504
+ </span>
3505
+ </a>
3506
+
3507
+ </li>
3508
+
3509
+ <li class="md-nav__item">
3510
+ <a href="#destroying" class="md-nav__link">
3511
+ <span class="md-ellipsis">
3512
+
3513
+ Destroying
3514
+
3515
+ </span>
3516
+ </a>
3517
+
3310
3518
  </li>
3311
3519
 
3312
3520
  <li class="md-nav__item">
@@ -3321,6 +3529,28 @@
3321
3529
  <nav class="md-nav" aria-label="Configuration">
3322
3530
  <ul class="md-nav__list">
3323
3531
 
3532
+ <li class="md-nav__item">
3533
+ <a href="#naming-convention" class="md-nav__link">
3534
+ <span class="md-ellipsis">
3535
+
3536
+ Naming convention
3537
+
3538
+ </span>
3539
+ </a>
3540
+
3541
+ </li>
3542
+
3543
+ <li class="md-nav__item">
3544
+ <a href="#default-paths" class="md-nav__link">
3545
+ <span class="md-ellipsis">
3546
+
3547
+ Default paths
3548
+
3549
+ </span>
3550
+ </a>
3551
+
3552
+ </li>
3553
+
3324
3554
  <li class="md-nav__item">
3325
3555
  <a href="#includes" class="md-nav__link">
3326
3556
  <span class="md-ellipsis">
@@ -3341,13 +3571,24 @@
3341
3571
  </span>
3342
3572
  </a>
3343
3573
 
3574
+ </li>
3575
+
3576
+ <li class="md-nav__item">
3577
+ <a href="#boilerplate-files" class="md-nav__link">
3578
+ <span class="md-ellipsis">
3579
+
3580
+ Boilerplate files
3581
+
3582
+ </span>
3583
+ </a>
3584
+
3344
3585
  </li>
3345
3586
 
3346
3587
  <li class="md-nav__item">
3347
3588
  <a href="#test-defines" class="md-nav__link">
3348
3589
  <span class="md-ellipsis">
3349
3590
 
3350
- Test Defines
3591
+ Test defines
3351
3592
 
3352
3593
  </span>
3353
3594
  </a>
@@ -3355,10 +3596,10 @@
3355
3596
  </li>
3356
3597
 
3357
3598
  <li class="md-nav__item">
3358
- <a href="#naming-convention" class="md-nav__link">
3599
+ <a href="#test-guards" class="md-nav__link">
3359
3600
  <span class="md-ellipsis">
3360
3601
 
3361
- Naming Convention
3602
+ Test guards
3362
3603
 
3363
3604
  </span>
3364
3605
  </a>
@@ -3708,6 +3949,12 @@
3708
3949
 
3709
3950
 
3710
3951
 
3952
+
3953
+
3954
+
3955
+
3956
+
3957
+
3711
3958
 
3712
3959
 
3713
3960
 
@@ -3727,8 +3974,9 @@
3727
3974
  <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
3728
3975
 
3729
3976
 
3730
- <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
3731
-
3977
+ <div class="md-nav__link md-nav__container">
3978
+ <a href="../project/index.html" class="md-nav__link ">
3979
+
3732
3980
 
3733
3981
 
3734
3982
  <span class="md-ellipsis">
@@ -3742,8 +3990,14 @@
3742
3990
 
3743
3991
 
3744
3992
 
3745
- <span class="md-nav__icon md-icon"></span>
3746
- </label>
3993
+ </a>
3994
+
3995
+
3996
+ <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0">
3997
+ <span class="md-nav__icon md-icon"></span>
3998
+ </label>
3999
+
4000
+ </div>
3747
4001
 
3748
4002
  <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
3749
4003
  <label class="md-nav__title" for="__nav_8">
@@ -3757,6 +4011,8 @@
3757
4011
  <ul class="md-nav__list" data-md-scrollfix>
3758
4012
 
3759
4013
 
4014
+
4015
+
3760
4016
 
3761
4017
 
3762
4018
 
@@ -3790,6 +4046,34 @@
3790
4046
 
3791
4047
 
3792
4048
 
4049
+ <li class="md-nav__item">
4050
+ <a href="../project/sbom.html" class="md-nav__link">
4051
+
4052
+
4053
+
4054
+ <span class="md-ellipsis">
4055
+
4056
+
4057
+ Software Bill of Materials
4058
+
4059
+
4060
+
4061
+ </span>
4062
+
4063
+
4064
+
4065
+ </a>
4066
+ </li>
4067
+
4068
+
4069
+
4070
+
4071
+
4072
+
4073
+
4074
+
4075
+
4076
+
3793
4077
  <li class="md-nav__item">
3794
4078
  <a href="../project/upgrade.html" class="md-nav__link">
3795
4079
 
@@ -3861,6 +4145,8 @@
3861
4145
 
3862
4146
 
3863
4147
 
4148
+
4149
+
3864
4150
 
3865
4151
 
3866
4152
 
@@ -3951,6 +4237,34 @@
3951
4237
 
3952
4238
 
3953
4239
 
4240
+ <li class="md-nav__item">
4241
+ <a href="../development/releases.html" class="md-nav__link">
4242
+
4243
+
4244
+
4245
+ <span class="md-ellipsis">
4246
+
4247
+
4248
+ Branching & Releases
4249
+
4250
+
4251
+
4252
+ </span>
4253
+
4254
+
4255
+
4256
+ </a>
4257
+ </li>
4258
+
4259
+
4260
+
4261
+
4262
+
4263
+
4264
+
4265
+
4266
+
4267
+
3954
4268
 
3955
4269
 
3956
4270
 
@@ -3977,7 +4291,7 @@
3977
4291
 
3978
4292
 
3979
4293
 
3980
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_3" >
4294
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_4" >
3981
4295
 
3982
4296
 
3983
4297
  <div class="md-nav__link md-nav__container">
@@ -3999,14 +4313,14 @@
3999
4313
  </a>
4000
4314
 
4001
4315
 
4002
- <label class="md-nav__link " for="__nav_10_3" id="__nav_10_3_label" tabindex="0">
4316
+ <label class="md-nav__link " for="__nav_10_4" id="__nav_10_4_label" tabindex="0">
4003
4317
  <span class="md-nav__icon md-icon"></span>
4004
4318
  </label>
4005
4319
 
4006
4320
  </div>
4007
4321
 
4008
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_3_label" aria-expanded="false">
4009
- <label class="md-nav__title" for="__nav_10_3">
4322
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_4_label" aria-expanded="false">
4323
+ <label class="md-nav__title" for="__nav_10_4">
4010
4324
  <span class="md-nav__icon md-icon"></span>
4011
4325
 
4012
4326
 
@@ -4177,11 +4491,33 @@
4177
4491
  <nav class="md-nav" aria-label="Paths">
4178
4492
  <ul class="md-nav__list">
4179
4493
 
4494
+ <li class="md-nav__item">
4495
+ <a href="#path-hints" class="md-nav__link">
4496
+ <span class="md-ellipsis">
4497
+
4498
+ Path hints
4499
+
4500
+ </span>
4501
+ </a>
4502
+
4503
+ </li>
4504
+
4180
4505
  <li class="md-nav__item">
4181
4506
  <a href="#adding-to-paths" class="md-nav__link">
4182
4507
  <span class="md-ellipsis">
4183
4508
 
4184
- Adding to Paths
4509
+ Adding to paths
4510
+
4511
+ </span>
4512
+ </a>
4513
+
4514
+ </li>
4515
+
4516
+ <li class="md-nav__item">
4517
+ <a href="#same-named-files" class="md-nav__link">
4518
+ <span class="md-ellipsis">
4519
+
4520
+ Same-named files
4185
4521
 
4186
4522
  </span>
4187
4523
  </a>
@@ -4202,6 +4538,28 @@
4202
4538
  </span>
4203
4539
  </a>
4204
4540
 
4541
+ </li>
4542
+
4543
+ <li class="md-nav__item">
4544
+ <a href="#testing-from-headers" class="md-nav__link">
4545
+ <span class="md-ellipsis">
4546
+
4547
+ Testing from headers
4548
+
4549
+ </span>
4550
+ </a>
4551
+
4552
+ </li>
4553
+
4554
+ <li class="md-nav__item">
4555
+ <a href="#destroying" class="md-nav__link">
4556
+ <span class="md-ellipsis">
4557
+
4558
+ Destroying
4559
+
4560
+ </span>
4561
+ </a>
4562
+
4205
4563
  </li>
4206
4564
 
4207
4565
  <li class="md-nav__item">
@@ -4216,6 +4574,28 @@
4216
4574
  <nav class="md-nav" aria-label="Configuration">
4217
4575
  <ul class="md-nav__list">
4218
4576
 
4577
+ <li class="md-nav__item">
4578
+ <a href="#naming-convention" class="md-nav__link">
4579
+ <span class="md-ellipsis">
4580
+
4581
+ Naming convention
4582
+
4583
+ </span>
4584
+ </a>
4585
+
4586
+ </li>
4587
+
4588
+ <li class="md-nav__item">
4589
+ <a href="#default-paths" class="md-nav__link">
4590
+ <span class="md-ellipsis">
4591
+
4592
+ Default paths
4593
+
4594
+ </span>
4595
+ </a>
4596
+
4597
+ </li>
4598
+
4219
4599
  <li class="md-nav__item">
4220
4600
  <a href="#includes" class="md-nav__link">
4221
4601
  <span class="md-ellipsis">
@@ -4236,13 +4616,24 @@
4236
4616
  </span>
4237
4617
  </a>
4238
4618
 
4619
+ </li>
4620
+
4621
+ <li class="md-nav__item">
4622
+ <a href="#boilerplate-files" class="md-nav__link">
4623
+ <span class="md-ellipsis">
4624
+
4625
+ Boilerplate files
4626
+
4627
+ </span>
4628
+ </a>
4629
+
4239
4630
  </li>
4240
4631
 
4241
4632
  <li class="md-nav__item">
4242
4633
  <a href="#test-defines" class="md-nav__link">
4243
4634
  <span class="md-ellipsis">
4244
4635
 
4245
- Test Defines
4636
+ Test defines
4246
4637
 
4247
4638
  </span>
4248
4639
  </a>
@@ -4250,10 +4641,10 @@
4250
4641
  </li>
4251
4642
 
4252
4643
  <li class="md-nav__item">
4253
- <a href="#naming-convention" class="md-nav__link">
4644
+ <a href="#test-guards" class="md-nav__link">
4254
4645
  <span class="md-ellipsis">
4255
4646
 
4256
- Naming Convention
4647
+ Test guards
4257
4648
 
4258
4649
  </span>
4259
4650
  </a>
@@ -4334,212 +4725,405 @@
4334
4725
 
4335
4726
 
4336
4727
  <h1 id="module-generator">Module Generator</h1>
4337
- <p>This plugin adds a pair of new commands to Ceedling allowing you to generate or remove
4338
- module skeletons according to predefined templates.</p>
4728
+ <p>This plugin adds commands to Ceedling that create a module’s source, header, and test
4729
+ files from templates; remove them again; and stub a source file from its header. Files
4730
+ land in your project’s <a href="../configuration/reference/paths.html"><code>:paths</code></a>, guided by optional hints.</p>
4339
4731
  <h2 id="overview">Overview</h2>
4340
- <p>With a single call, Ceedling can generate a source, header, and test file for a new
4341
- module. If given a pattern, it can even create a series of submodules to support
4342
- specific design patterns. Finally, it can just as easily remove related modules,
4343
- avoiding the need to delete each individually.</p>
4344
- <p>Let's say, for example, that you want to create a single module named <code>MadScience</code>.</p>
4345
- <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>ceedling<span class="w"> </span>module:create<span class="o">[</span>MadScience<span class="o">]</span>
4732
+ <p>Enable the plugin by adding <code>module_generator</code> to the enabled <a href="../configuration/reference/plugins.html">plugins</a> list in
4733
+ your project configuration:</p>
4734
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nt">:plugins</span><span class="p">:</span>
4735
+ <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
4736
+ <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">module_generator</span>
4737
+ </code></pre></div>
4738
+ <p>Then a single call creates a new module:</p>
4739
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[MadScience]&quot;</span>
4740
+ </code></pre></div>
4741
+ <p>This creates <code>MadScience.c</code>, <code>MadScience.h</code>, and <code>test_MadScience.c</code>. The test file
4742
+ carries your project’s <a href="../configuration/reference/project.html#test_file_prefix"><code>:test_file_prefix</code></a>. Names keep the case you type unless you
4743
+ configure a <a href="#naming-convention">naming convention</a>.</p>
4744
+ <p>Several modules can be named in one call, separated by commas. Leave no spaces between
4745
+ the brackets or rely on surrounding quotes; your shell would otherwise split the command.</p>
4746
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[MadScience,EvilGenius,SecretLair]&quot;</span>
4346
4747
  </code></pre></div>
4347
- <p>It says we're speaking to the module plugin, and we want to create a new module. The
4348
- name of that module is between the brackets. It will keep this case, unless you have
4349
- specified a different default (see configuration). It will create three files:
4350
- <code>MadScience.c</code>, <code>MadScience.h</code>, and <code>TestMadScience.c</code>. <em>NOTE</em> that it is important that
4351
- there are no spaces between the brackets. We know, it's annoying... but it's the rules.</p>
4748
+ <p>The plugin’s three commands take the same arguments:</p>
4749
+ <table>
4750
+ <thead>
4751
+ <tr>
4752
+ <th>Command</th>
4753
+ <th>Does</th>
4754
+ </tr>
4755
+ </thead>
4756
+ <tbody>
4757
+ <tr>
4758
+ <td><code>module:create[...]</code></td>
4759
+ <td>Creates each module’s files, skipping any that already exist and stopping when all of them do</td>
4760
+ </tr>
4761
+ <tr>
4762
+ <td><code>module:destroy[...]</code></td>
4763
+ <td>Removes each module’s files</td>
4764
+ </tr>
4765
+ <tr>
4766
+ <td><code>module:stub[...]</code></td>
4767
+ <td>Writes a source file of function stubs from each module’s header</td>
4768
+ </tr>
4769
+ <tr>
4770
+ <td><code>module:test[...]</code></td>
4771
+ <td>Writes a test file with a test for each function in each module’s header</td>
4772
+ </tr>
4773
+ </tbody>
4774
+ </table>
4775
+ <p>A name that begins with your test file prefix asks for a test file alone.
4776
+ <code>"module:create[test_MadScience]"</code> creates only <code>test_MadScience.c</code>. When the prefix ends
4777
+ in a letter or digit, as a prefix of <code>Test</code> does, the character after the prefix must
4778
+ not be a lowercase letter or digit. An uppercase letter starts the module name, so
4779
+ <code>TestMadScience</code> is a test file for <code>MadScience</code>, while <code>Testimony</code> and <code>Test2Widget</code>
4780
+ are modules. A prefix ending in a separator, like the default <code>test_</code>,
4781
+ needs no such check.</p>
4352
4782
  <h2 id="patterns">Patterns</h2>
4353
- <p>You can also create an entire pattern of files. To do that, just add a second argument
4354
- to the pattern ID. Something like this:</p>
4355
- <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>ceedling<span class="w"> </span>module:create<span class="o">[</span>SecretLair,mch<span class="o">]</span>
4783
+ <p>A pattern creates a set of related modules at once. Name it after the module:</p>
4784
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[SecretLair,mch]&quot;</span>
4356
4785
  </code></pre></div>
4357
- <p>In this example, we'd create 9 files total: 3 headers, 3 source files, and 3 test files. These
4358
- files would be named <code>SecretLairModel</code>, <code>SecretLairConductor</code>, and <code>SecretLairHardware</code>. Isn't
4359
- that nice?</p>
4786
+ <p>This creates nine files: a source, header, and test file each for <code>SecretLair_Model</code>,
4787
+ <code>SecretLair_Conductor</code>, and <code>SecretLair_Hardware</code>. With <code>:naming</code> set to <code>:bumpy</code>, the
4788
+ same call creates <code>SecretLairModel</code>, <code>SecretLairConductor</code>, and <code>SecretLairHardware</code>.
4789
+ Each generated module includes the headers its role depends on, and each test includes
4790
+ the mocks of those headers.</p>
4360
4791
  <p>The module generator understands the following patterns:</p>
4361
4792
  <ul>
4362
- <li><code>src</code> -- generate only a source file</li>
4363
- <li><code>test</code> -- generate only a test file</li>
4364
- <li><code>dh</code> -- generate 6 files for the driver-hardware pattern</li>
4365
- <li><code>dih</code> -- generate 9 files for the driver-interrupt-hardware pattern</li>
4366
- <li><code>mch</code> -- generate 9 files for the model-conductor-hardware pattern</li>
4367
- <li><code>mvp</code> -- generate 9 files for the model-view-presenter pattern</li>
4793
+ <li><code>src</code> — a source, header, and test file (the default)</li>
4794
+ <li><code>test</code> — only a test file</li>
4795
+ <li><code>mch</code> — 9 files for the <a href="https://cdn.prod.website-files.com/628fcc1631ad0b25b32f223e/62e43a26764867e95fe5a138_ESC-413Paper_KarleskyWilliams.pdf">model-conductor-hardware (pdf)</a> pattern (<a href="https://www.methodsandtools.com/archive/archive.php?id=59">html</a>)</li>
4796
+ <li><code>mvp</code> — 9 files for the <a href="https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter">model-view-presenter</a> pattern</li>
4797
+ <li><code>dh</code> — 6 files for the driver-hardware pattern</li>
4798
+ <li><code>dih</code> — 9 files for the driver-interrupt-hardware pattern</li>
4368
4799
  </ul>
4800
+ <p>The <code>dh</code> and <code>dih</code> patterns are alternate namings and conceptual organizations of the
4801
+ model-conductor-hardware pattern.</p>
4802
+ <p>A pattern applies to every module in the call, and a call takes one pattern. The first
4803
+ argument is always a module name, even one spelled like a pattern.</p>
4369
4804
  <h2 id="paths">Paths</h2>
4370
- <p>The directories found in the project <code>:paths:</code> are reused. You can also specify an alternative default generation path using: </p>
4371
- <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
4372
- <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="nt">:path_src</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">src/</span>
4373
- <a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span><span class="nt">:path_inc</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">src/</span>
4374
- <a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="nt">:path_tst</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test/</span>
4805
+ <p>Without any hint, each kind of file goes to the first path listed for it under
4806
+ <a href="../configuration/reference/paths.html"><code>:paths</code></a>. Source files go to the first <code>:source</code> path, headers to the first <code>:include</code>
4807
+ path, and tests to the first <code>:test</code> path. Headers go with the source when your project
4808
+ lists no include paths. To choose other default locations, configure them:</p>
4809
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
4810
+ <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="nt">:path_src</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">src/</span>
4811
+ <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="nt">:path_inc</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">include/</span>
4812
+ <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span><span class="nt">:path_tst</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test/</span>
4375
4813
  </code></pre></div>
4376
- <p>But what if I don't want it to place my new files in the default location?</p>
4377
- <p>It can do that too! You can give it a hint as to where to find your files. The pattern matching
4378
- here is fairly basic, but it is usually sufficient. It works perfectly if your directory structure
4379
- matches a common pattern. For example, let's say you issue this command:</p>
4380
- <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>ceedling<span class="w"> </span>module:create<span class="o">[</span>lab:SecretLair,mch<span class="o">]</span>
4814
+ <h3 id="path-hints">Path hints</h3>
4815
+ <p>A hint before a colon steers a module toward matching paths:</p>
4816
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[lab:SecretLair,mch]&quot;</span>
4381
4817
  </code></pre></div>
4382
- <p>Say your directory structure looks like this:</p>
4383
- <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="nt">:paths</span><span class="p">:</span>
4384
- <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="nt">:source</span><span class="p">:</span>
4385
- <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lab/src</span>
4386
- <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lair/src</span>
4387
- <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">other/src</span>
4388
- <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="w"> </span><span class="nt">:test</span><span class="p">:</span>
4389
- <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lab/test</span>
4390
- <a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lair/test</span>
4391
- <a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">other/test</span>
4818
+ <p>The hint is matched separately against your source, include, and test paths, and each
4819
+ kind of file goes to the path the hint matches best. A path matches best when its
4820
+ trailing folders match the hint. When the hint matches nothing among one kind of path,
4821
+ those files go to the first path of that kind. When it matches nothing at all, the
4822
+ command stops with an error and creates nothing.</p>
4823
+ <p>Say your project lists these paths:</p>
4824
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="nt">:paths</span><span class="p">:</span>
4825
+ <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="nt">:source</span><span class="p">:</span>
4826
+ <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lab/src</span>
4827
+ <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lair/src</span>
4828
+ <a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">other/src</span>
4829
+ <a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="w"> </span><span class="nt">:test</span><span class="p">:</span>
4830
+ <a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lab/test</span>
4831
+ <a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lair/test</span>
4832
+ <a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">other/test</span>
4392
4833
  </code></pre></div>
4393
- <p>In this case, the <code>lab:</code> hint would make the module generator guess you want your files here:</p>
4834
+ <p>The <code>lab:</code> hint places files here:</p>
4394
4835
  <ul>
4395
- <li>source files: <code>lab/src</code> (because it's a close match)</li>
4396
- <li>include files: <code>lab/src</code> (because no include paths were listed)</li>
4397
- <li>test files: <code>lab/test</code> (because it's a close match)</li>
4836
+ <li>source files: <code>lab/src</code> (a close match)</li>
4837
+ <li>include files: <code>lab/src</code> (no include paths are listed, so headers go with the source)</li>
4838
+ <li>test files: <code>lab/test</code> (a close match)</li>
4398
4839
  </ul>
4399
- <p>Instead, if your directory structure looks like this:</p>
4400
- <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="nt">:paths</span><span class="p">:</span>
4401
- <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span><span class="nt">:source</span><span class="p">:</span>
4402
- <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">src/**</span><span class="w"> </span><span class="c1">#this might contain subfolders lab, lair, and other</span>
4403
- <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="w"> </span><span class="nt">:include</span><span class="p">:</span>
4404
- <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">inc/**</span><span class="w"> </span><span class="c1">#again, this might contain subfolders lab, lair, other, and shared</span>
4405
- <a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="w"> </span><span class="nt">:test</span><span class="p">:</span>
4406
- <a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test</span>
4840
+ <p>Instead, say your paths look like this:</p>
4841
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nt">:paths</span><span class="p">:</span>
4842
+ <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="w"> </span><span class="nt">:source</span><span class="p">:</span>
4843
+ <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">src/**</span><span class="w"> </span><span class="c1"># might contain subfolders lab, lair, and other</span>
4844
+ <a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a><span class="w"> </span><span class="nt">:include</span><span class="p">:</span>
4845
+ <a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">inc/**</span><span class="w"> </span><span class="c1"># might contain subfolders lab, lair, other, and shared</span>
4846
+ <a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a><span class="w"> </span><span class="nt">:test</span><span class="p">:</span>
4847
+ <a id="__codelineno-7-7" name="__codelineno-7-7" href="#__codelineno-7-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test</span>
4407
4848
  </code></pre></div>
4408
- <p>In this case, the <code>lab:</code> hint would make the module generator guess you want your files here:</p>
4849
+ <p>Now the <code>lab:</code> hint places files here:</p>
4409
4850
  <ul>
4410
- <li>source files: <code>src/lab</code> (because it's a close match)</li>
4411
- <li>include files: <code>inc/lab</code> (because it's a close match)</li>
4412
- <li>test files: <code>test</code> (because there wasn't a close match, and this was the first entry on our list)</li>
4851
+ <li>source files: <code>src/lab</code> (a close match)</li>
4852
+ <li>include files: <code>inc/lab</code> (a close match)</li>
4853
+ <li>test files: <code>test</code> (no close match, so the first test path)</li>
4413
4854
  </ul>
4414
- <p>You can see that more complicated structures will have files placed in the wrong place from time to
4415
- time... no worries... you can move the file after it's created... but if your project has any kind of
4416
- consistent structure, the guessing engine does a good job of making it work.</p>
4417
- <p>A few more quick notes about the path-matching:</p>
4855
+ <p>A few more notes about hints:</p>
4418
4856
  <ol>
4419
- <li>
4420
- <p>You can give multiple ordered hints that map roughly to folder nesting! <code>lab:secret:lair</code> will
4421
- happily match to put <code>lair.c</code> in a folder like <code>my/lab/secret/</code>.</p>
4422
- </li>
4423
- <li>
4424
- <p>If the matcher isn't given any path information or it finds multiple equally good candidates,
4425
- it will always guess in the order you have the paths listed in your project.yml file</p>
4426
- </li>
4427
- <li>
4428
- <p>If the matcher completely fails to find a good candidate, it will return an error, allowing you
4429
- to rectify the situation.</p>
4430
- </li>
4431
- <li>
4432
- <p>What path is "first" when you're using <code>**</code> pattern in your <code>:paths:</code> specifications? The parent
4433
- folder is used first, then its children alphabetically, and so on. This is important when
4434
- considering where files (or especially subfolders... see below) will be generated.</p>
4435
- </li>
4857
+ <li>Several hints narrow the match through nested folders. <code>lab:secret:lair</code> places
4858
+ <code>lair.c</code> in a folder like <code>my/lab/secret/</code>.</li>
4859
+ <li>Among equally good matches, and without any hint, the order of your paths in the
4860
+ project file decides.</li>
4861
+ <li>With a <code>**</code> glob under <code>:paths</code>, the parent folder comes first, then its
4862
+ subfolders alphabetically, and so on.</li>
4863
+ <li>A hint may be an absolute path, including one with a Windows drive letter, as in
4864
+ <code>C:/project/lab:SecretLair</code>.</li>
4436
4865
  </ol>
4437
- <h3 id="adding-to-paths">Adding to Paths</h3>
4438
- <p>In addition to the pattern matching above, you can add slashes (<code>/</code>) to your filename specification.
4439
- When a slash is used instead of a colon (<code>:</code>), it will stop using pattern matching and assume the
4440
- subdirectory is supposed to be there. If the subdir is NOT there, it will automatically add it.</p>
4441
- <p>Let's try an example with our previous path specification:</p>
4442
- <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="nt">:paths</span><span class="p">:</span>
4443
- <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="nt">:source</span><span class="p">:</span>
4444
- <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">src/**</span><span class="w"> </span><span class="c1">#this might contain subfolders lab, lair, and other</span>
4445
- <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="w"> </span><span class="nt">:include</span><span class="p">:</span>
4446
- <a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">inc/**</span><span class="w"> </span><span class="c1">#again, this might contain subfolders lab, lair, other, and shared</span>
4447
- <a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="w"> </span><span class="nt">:test</span><span class="p">:</span>
4448
- <a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test</span>
4449
- </code></pre></div>
4450
- <p>Then, use the following command:</p>
4451
- <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>ceedling<span class="w"> </span>module:create<span class="o">[</span>newlab/SecretLair<span class="o">]</span>
4866
+ <p>More complicated structures will sometimes place a file in the wrong folder, and you
4867
+ can move it afterward. A project with a consistent structure gets good placement.</p>
4868
+ <h3 id="adding-to-paths">Adding to paths</h3>
4869
+ <p>A slash in the name, rather than a colon, names a subdirectory to use as given. The
4870
+ module generator creates it if it does not exist. With the second set of paths above,
4871
+ this call:</p>
4872
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[newlab/SecretLair]&quot;</span>
4452
4873
  </code></pre></div>
4453
- <p>This will create the following 3 files:</p>
4874
+ <p>creates these files:</p>
4454
4875
  <ul>
4455
4876
  <li><code>src/newlab/SecretLair.c</code></li>
4456
4877
  <li><code>inc/newlab/SecretLair.h</code></li>
4457
- <li><code>test/newlab/TestSecretLair.c</code></li>
4878
+ <li><code>test/newlab/test_SecretLair.c</code></li>
4458
4879
  </ul>
4459
- <p>Technically, you can start with a colon and specify part of a path, then use a slash
4460
- to specify the remainder of the path to use. In most circumstances, this should work... however
4461
- it suffers from the same potential issues as the matcher above, with the added joy of creating
4462
- new subdirectories for you without asking. </p>
4463
- <p>It's important to note the module generator doesn't care if these new subdirectories are covered
4464
- by the current path specification. This allows you to create the files before updating the
4465
- <code>project.yml</code> file if desired, but it also means you might accidentally think you've created
4466
- a file that Ceedling can see, when it can't. </p>
4880
+ <p>A hint and a slash can combine, as in <code>lab:newlab/SecretLair</code>. A hint picks among
4881
+ existing paths, and the slash then adds a subdirectory below the chosen path.</p>
4882
+ <p>The module generator does not check whether a new subdirectory is covered by your
4883
+ <code>:paths</code>. You can create files before updating your project file. You might also create
4884
+ a file Ceedling does not see until you add its folder to <code>:paths</code>.</p>
4885
+ <h3 id="same-named-files">Same-named files</h3>
4886
+ <p><code>module:create</code> warns about each existing source, header, or test file elsewhere in your
4887
+ project that shares a name with a file it is about to create, then creates the module.
4888
+ Ceedling distinguishes same-named files by their paths, so this is allowed. The warning
4889
+ catches the case where you meant to work with the existing module instead.</p>
4467
4890
  <h2 id="stubbing">Stubbing</h2>
4468
- <p>Similarly, you can create stubs for all functions in a header file just by making a single call
4469
- to your handy <code>stub</code> feature, like this:</p>
4470
- <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>ceedling<span class="w"> </span>module:stub<span class="o">[</span>SecretLair<span class="o">]</span>
4891
+ <p><code>module:stub</code> writes a source file containing a stub for each function its header
4892
+ declares:</p>
4893
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:stub[SecretLair]&quot;</span>
4471
4894
  </code></pre></div>
4472
- <p>This call will look in <code>SecretLair.h</code> and will generate a file <code>SecretLair.c</code> that contains a stub
4473
- for each function declared in the header! Even better, if <code>SecretLair.c</code> already exists, it will
4474
- add only new functions, leaving your existing calls alone so that it doesn't cause any problems.</p>
4895
+ <p>This reads <code>SecretLair.h</code> from your include path and writes <code>SecretLair.c</code> to your
4896
+ source path. If <code>SecretLair.c</code> already exists, only stubs for newly declared functions
4897
+ are added, and your existing code is left alone.</p>
4898
+ <p>Hints and slashes work as they do for <code>module:create</code>. <code>"module:stub[lab:rev/SecretLair]"</code>
4899
+ reads <code>rev/SecretLair.h</code> below the include path <code>lab:</code> matches and writes
4900
+ <code>rev/SecretLair.c</code> below the matching source path.</p>
4901
+ <p>Headers are parsed with your project’s <a href="../configuration/reference/cmock.html"><code>:cmock</code></a> settings, the same ones that generate
4902
+ your mocks, so options like <code>:strippables</code> and <code>:treat_as</code> apply to stubs too.</p>
4903
+ <h2 id="testing-from-headers">Testing from headers</h2>
4904
+ <p><code>module:test</code> writes a test file containing an ignored test for each function its
4905
+ module’s header declares, a starting point for testing a module that already exists:</p>
4906
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:test[SecretLair]&quot;</span>
4907
+ </code></pre></div>
4908
+ <p>This reads <code>SecretLair.h</code> from your include path and writes <code>test_SecretLair.c</code> to your
4909
+ test path, with a <code>test_&lt;function&gt;_NeedToImplement</code> test for each function. Each test
4910
+ calls <code>TEST_IGNORE_MESSAGE()</code> until you fill it in.</p>
4911
+ <p>Run it again after adding functions to the header, and only tests for the new functions
4912
+ are added, ahead of the file’s closing <code>#endif</code>. A function already counts as tested by
4913
+ any test named <code>test_&lt;function&gt;</code> or <code>test_&lt;function&gt;_&lt;anything&gt;</code>, so your own
4914
+ descriptive test names are respected and your existing tests are left alone.</p>
4915
+ <p>Hints and slashes work as they do for <code>module:create</code>. The test file uses your
4916
+ configured <a href="#includes">includes</a>, <a href="#boilerplates">boilerplate</a>,
4917
+ <a href="#test-defines">test define</a>, and <a href="#test-guards">test guard</a>. Headers are parsed with
4918
+ your project’s <a href="../configuration/reference/cmock.html"><code>:cmock</code></a> settings, as for <a href="#stubbing">stubbing</a>.</p>
4919
+ <h2 id="destroying">Destroying</h2>
4920
+ <p><code>module:destroy</code> removes the files <code>module:create</code> would make for the same arguments,
4921
+ pattern and hints included:</p>
4922
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:destroy[lab:SecretLair,mch]&quot;</span>
4923
+ </code></pre></div>
4924
+ <p>A file that does not exist is reported and skipped.</p>
4475
4925
  <h2 id="configuration">Configuration</h2>
4476
- <p>Enable the plugin in your project.yml by adding <code>module_generator</code>
4477
- to the list of enabled plugins.</p>
4478
- <p>Then, like much of Ceedling, you can just run as-is with the defaults, or you can override those
4479
- defaults for your own needs. For example, new source and header files will be automatically
4480
- placed in the <code>src/</code> folder while tests will go in the <code>test/</code> folder. That's great if your project
4481
- follows the default ceedling structure... but what if you have a different structure?</p>
4482
- <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
4483
- <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="w"> </span><span class="nt">:naming</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:bumpy</span>
4484
- <a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="w"> </span><span class="nt">:includes</span><span class="p">:</span><span class="w"> </span>
4485
- <a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">:src</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[]</span>
4486
- <a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">:inc</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[]</span>
4487
- <a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">:tst</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[]</span>
4488
- <a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a><span class="w"> </span><span class="nt">:boilerplates</span><span class="p">:</span>
4489
- <a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">:src</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;&quot;</span>
4490
- <a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">:inc</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;&quot;</span>
4491
- <a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">:tst</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;&quot;</span>
4926
+ <p>The module generator runs as-is with its defaults. Every setting lives under
4927
+ <code>:module_generator</code> in your project file:</p>
4928
+ <table>
4929
+ <thead>
4930
+ <tr>
4931
+ <th>Setting</th>
4932
+ <th>Purpose</th>
4933
+ <th>Default</th>
4934
+ </tr>
4935
+ </thead>
4936
+ <tbody>
4937
+ <tr>
4938
+ <td><code>:naming</code></td>
4939
+ <td>File <a href="#naming-convention">naming convention</a></td>
4940
+ <td>none (names keep their case)</td>
4941
+ </tr>
4942
+ <tr>
4943
+ <td><code>:path_src</code>, <code>:path_inc</code>, <code>:path_tst</code></td>
4944
+ <td><a href="#default-paths">Default locations when no hint is given</a></td>
4945
+ <td>first path of each <code>:paths</code> list</td>
4946
+ </tr>
4947
+ <tr>
4948
+ <td><code>:includes</code></td>
4949
+ <td><a href="#includes">Headers every generated file includes</a></td>
4950
+ <td>none</td>
4951
+ </tr>
4952
+ <tr>
4953
+ <td><code>:boilerplates</code></td>
4954
+ <td><a href="#boilerplates">Text at the top of every generated file</a></td>
4955
+ <td>none</td>
4956
+ </tr>
4957
+ <tr>
4958
+ <td><code>:boilerplate_files</code></td>
4959
+ <td><a href="#boilerplate-files">Files holding that text instead</a></td>
4960
+ <td>none</td>
4961
+ </tr>
4962
+ <tr>
4963
+ <td><code>:test_define</code></td>
4964
+ <td><a href="#test-defines">Symbol guarding each test file</a></td>
4965
+ <td><code>TEST</code></td>
4966
+ </tr>
4967
+ <tr>
4968
+ <td><code>:test_guard</code></td>
4969
+ <td><a href="#test-guards"><code>#ifdef</code> or <code>#if</code> around each test file</a></td>
4970
+ <td><code>:ifdef</code></td>
4971
+ </tr>
4972
+ </tbody>
4973
+ </table>
4974
+ <h3 id="naming-convention">Naming convention</h3>
4975
+ <p>A naming convention keeps everyone’s file names consistent, whatever case a name is
4976
+ typed in. Words are found at underscores, spaces, and changes of case, so
4977
+ <code>mad_science</code> and <code>MadScience</code> name the same module.</p>
4978
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
4979
+ <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="w"> </span><span class="nt">:naming</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:bumpy</span>
4492
4980
  </code></pre></div>
4493
- <p>Now I've redirected the location where modules are going to be generated.</p>
4981
+ <p>The options for <code>:naming</code>, and the source file each creates for this command:</p>
4982
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[mad_science]&quot;</span>
4983
+ </code></pre></div>
4984
+ <table>
4985
+ <thead>
4986
+ <tr>
4987
+ <th><code>:naming</code></th>
4988
+ <th>Style</th>
4989
+ <th>Source file</th>
4990
+ </tr>
4991
+ </thead>
4992
+ <tbody>
4993
+ <tr>
4994
+ <td><code>:bumpy</code></td>
4995
+ <td>BumpyFilesLookLikeSo</td>
4996
+ <td><code>MadScience.c</code></td>
4997
+ </tr>
4998
+ <tr>
4999
+ <td><code>:camel</code></td>
5000
+ <td>camelFilesAreSimilarButStartLow</td>
5001
+ <td><code>madScience.c</code></td>
5002
+ </tr>
5003
+ <tr>
5004
+ <td><code>:snake</code></td>
5005
+ <td>snake_case_is_all_lower_and_uses_underscores</td>
5006
+ <td><code>mad_science.c</code></td>
5007
+ </tr>
5008
+ <tr>
5009
+ <td><code>:caps</code></td>
5010
+ <td>CAPS_FEELS_LIKE_YOU_ARE_SCREAMING</td>
5011
+ <td><code>MAD_SCIENCE.c</code></td>
5012
+ </tr>
5013
+ </tbody>
5014
+ </table>
5015
+ <p>The header and test file follow the same convention, as do a pattern’s module names.
5016
+ Without <code>:naming</code>, names keep the case you type.</p>
5017
+ <h3 id="default-paths">Default paths</h3>
5018
+ <p><code>:path_src</code>, <code>:path_inc</code>, and <code>:path_tst</code> choose where files go when a command gives no
5019
+ <a href="#path-hints">hint</a>. A hint still matches against your <code>:paths</code> and ignores these
5020
+ settings.</p>
5021
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
5022
+ <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span><span class="nt">:path_src</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">src/</span>
5023
+ <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a><span class="w"> </span><span class="nt">:path_inc</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">include/</span>
5024
+ <a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="w"> </span><span class="nt">:path_tst</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test/</span>
5025
+ </code></pre></div>
5026
+ <p>With these settings, this command:</p>
5027
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[Widget]&quot;</span>
5028
+ </code></pre></div>
5029
+ <p>creates <code>src/Widget.c</code>, <code>include/Widget.h</code>, and <code>test/test_Widget.c</code>.</p>
4494
5030
  <h3 id="includes">Includes</h3>
4495
- <p>You can make it so that all of your files are generated with a standard include list. This is done
4496
- by adding to the <code>:includes</code> array. For example:</p>
4497
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
4498
- <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="nt">:includes</span><span class="p">:</span>
4499
- <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="nt">:tst</span><span class="p">:</span>
4500
- <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">defs.h</span>
4501
- <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">board.h</span>
4502
- <a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a><span class="w"> </span><span class="nt">:src</span><span class="p">:</span>
4503
- <a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">board.h</span>
5031
+ <p>Every generated file of a kind can include a standard list of headers. <code>:src</code> lists
5032
+ those for source files, <code>:inc</code> for headers, and <code>:tst</code> for tests:</p>
5033
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
5034
+ <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="w"> </span><span class="nt">:includes</span><span class="p">:</span>
5035
+ <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="w"> </span><span class="nt">:src</span><span class="p">:</span>
5036
+ <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">board.h</span>
5037
+ <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="w"> </span><span class="nt">:inc</span><span class="p">:</span>
5038
+ <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">types.h</span>
5039
+ <a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a><span class="w"> </span><span class="nt">:tst</span><span class="p">:</span>
5040
+ <a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">defs.h</span>
5041
+ <a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">board.h</span>
4504
5042
  </code></pre></div>
5043
+ <p>With these settings, this command:</p>
5044
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[Widget]&quot;</span>
5045
+ </code></pre></div>
5046
+ <p>creates <code>Widget.c</code> including <code>board.h</code>, <code>Widget.h</code> including <code>types.h</code>, and
5047
+ <code>test_Widget.c</code> including <code>defs.h</code> and <code>board.h</code>, each ahead of the module’s own
5048
+ includes.</p>
4505
5049
  <h3 id="boilerplates">Boilerplates</h3>
4506
- <p>You can specify the actual boilerplate used for each of your files. This is the handy place to
4507
- put that corporate copyright notice (or maybe a copyleft notice, if that's your preference?)</p>
4508
- <p>Notice there is a separate template for source files, include files, and test files. Also,
4509
- your boilerplates can optionally contain <code>%1$s</code> which will inject the filename into that spot.</p>
4510
- <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
4511
- <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="w"> </span><span class="nt">:boilerplates</span><span class="p">:</span><span class="w"> </span>
4512
- <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="w"> </span><span class="nt">:src</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
4513
- <a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="w"> </span><span class="no">/***************************</span>
4514
- <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="w"> </span><span class="no">* %1$s</span>
4515
- <a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a><span class="w"> </span><span class="no">* This file is Awesome.</span>
4516
- <a id="__codelineno-11-7" name="__codelineno-11-7" href="#__codelineno-11-7"></a><span class="w"> </span><span class="no">* That is All.</span>
4517
- <a id="__codelineno-11-8" name="__codelineno-11-8" href="#__codelineno-11-8"></a><span class="w"> </span><span class="no">***************************/</span>
4518
- <a id="__codelineno-11-9" name="__codelineno-11-9" href="#__codelineno-11-9"></a><span class="w"> </span><span class="nt">:inc</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
4519
- <a id="__codelineno-11-10" name="__codelineno-11-10" href="#__codelineno-11-10"></a><span class="w"> </span><span class="no">/***************************</span>
4520
- <a id="__codelineno-11-11" name="__codelineno-11-11" href="#__codelineno-11-11"></a><span class="w"> </span><span class="no">* Header. Woo. *</span>
4521
- <a id="__codelineno-11-12" name="__codelineno-11-12" href="#__codelineno-11-12"></a><span class="w"> </span><span class="no">***************************/</span>
4522
- <a id="__codelineno-11-13" name="__codelineno-11-13" href="#__codelineno-11-13"></a><span class="w"> </span><span class="nt">:tst</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
4523
- <a id="__codelineno-11-14" name="__codelineno-11-14" href="#__codelineno-11-14"></a><span class="w"> </span><span class="no">/***************************</span>
4524
- <a id="__codelineno-11-15" name="__codelineno-11-15" href="#__codelineno-11-15"></a><span class="w"> </span><span class="no">* My Awesome Test For %1$s</span>
4525
- <a id="__codelineno-11-16" name="__codelineno-11-16" href="#__codelineno-11-16"></a><span class="w"> </span><span class="no">***************************/</span>
5050
+ <p>A boilerplate is text placed at the top of each generated file, the handy place for a
5051
+ copyright notice. Each kind of file has its own. A boilerplate may contain <code>%1$s</code>, which
5052
+ is replaced with the module name.</p>
5053
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
5054
+ <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="w"> </span><span class="nt">:boilerplates</span><span class="p">:</span>
5055
+ <a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="w"> </span><span class="nt">:src</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
5056
+ <a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="w"> </span><span class="no">/***************************</span>
5057
+ <a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a><span class="w"> </span><span class="no">* %1$s</span>
5058
+ <a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a><span class="w"> </span><span class="no">* This file is Awesome.</span>
5059
+ <a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a><span class="w"> </span><span class="no">* That is All.</span>
5060
+ <a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a><span class="w"> </span><span class="no">***************************/</span>
5061
+ <a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a><span class="w"> </span><span class="nt">:inc</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
5062
+ <a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a><span class="w"> </span><span class="no">/***************************</span>
5063
+ <a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a><span class="w"> </span><span class="no">* Header. Woo. *</span>
5064
+ <a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a><span class="w"> </span><span class="no">***************************/</span>
5065
+ <a id="__codelineno-18-13" name="__codelineno-18-13" href="#__codelineno-18-13"></a><span class="w"> </span><span class="nt">:tst</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|</span>
5066
+ <a id="__codelineno-18-14" name="__codelineno-18-14" href="#__codelineno-18-14"></a><span class="w"> </span><span class="no">/***************************</span>
5067
+ <a id="__codelineno-18-15" name="__codelineno-18-15" href="#__codelineno-18-15"></a><span class="w"> </span><span class="no">* My Awesome Test For %1$s</span>
5068
+ <a id="__codelineno-18-16" name="__codelineno-18-16" href="#__codelineno-18-16"></a><span class="w"> </span><span class="no">***************************/</span>
4526
5069
  </code></pre></div>
4527
- <h3 id="test-defines">Test Defines</h3>
4528
- <p>You can specify the "#ifdef TEST" at the top of the test files with a custom define.
4529
- This example will put a "#ifdef CEEDLING_TEST" at the top of the test files. </p>
4530
- <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
4531
- <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="w"> </span><span class="nt">:test_define</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CEEDLING_TEST</span>
5070
+ <p>With these settings, this command:</p>
5071
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[Widget]&quot;</span>
5072
+ </code></pre></div>
5073
+ <p>creates <code>Widget.c</code> beginning with the source boilerplate, its second line reading
5074
+ <code>* Widget</code>, and <code>test_Widget.c</code> beginning with <code>* My Awesome Test For Widget</code>.</p>
5075
+ <h3 id="boilerplate-files">Boilerplate files</h3>
5076
+ <p>A boilerplate can instead live in a file, which keeps long notices out of your project
5077
+ file. <code>:boilerplate_files</code> names a file for any kind, and that file’s contents replace
5078
+ the kind’s <code>:boilerplates</code> text. A named file that does not exist stops the command.</p>
5079
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
5080
+ <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="w"> </span><span class="nt">:boilerplate_files</span><span class="p">:</span>
5081
+ <a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a><span class="w"> </span><span class="nt">:src</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">config/boilerplate_source.txt</span>
5082
+ <a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a><span class="w"> </span><span class="nt">:tst</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">config/boilerplate_test.txt</span>
5083
+ </code></pre></div>
5084
+ <p>With these settings, this command:</p>
5085
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[Widget]&quot;</span>
5086
+ </code></pre></div>
5087
+ <p>creates <code>Widget.c</code> beginning with the contents of <code>config/boilerplate_source.txt</code> and
5088
+ <code>test_Widget.c</code> beginning with the contents of <code>config/boilerplate_test.txt</code>. <code>Widget.h</code>
5089
+ uses the <code>:inc</code> boilerplate, if any.</p>
5090
+ <h3 id="test-defines">Test defines</h3>
5091
+ <p>Each generated test file is wrapped in <code>#ifdef TEST</code>. <code>:test_define</code> names a
5092
+ different symbol.</p>
5093
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="nt">:module_generator</span><span class="p">:</span>
5094
+ <a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a><span class="w"> </span><span class="nt">:test_define</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CEEDLING_TEST</span>
5095
+ </code></pre></div>
5096
+ <p>With this setting, this command:</p>
5097
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[Widget]&quot;</span>
5098
+ </code></pre></div>
5099
+ <p>creates <code>test_Widget.c</code> wrapped in <code>#ifdef CEEDLING_TEST</code> and <code>#endif // CEEDLING_TEST</code>.</p>
5100
+ <p>The symbol must be defined for your test builds, or every generated test compiles to
5101
+ nothing. Add it under <a href="../configuration/reference/defines.html"><code>:defines</code></a> ↳ <code>:test</code>:</p>
5102
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="nt">:defines</span><span class="p">:</span>
5103
+ <a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a><span class="w"> </span><span class="nt">:test</span><span class="p">:</span>
5104
+ <a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CEEDLING_TEST</span>
5105
+ </code></pre></div>
5106
+ <p><code>module:create</code> and <code>module:test</code> warn about each generated test file whose build would
5107
+ not define the symbol. Each file is checked as a test build would compile it, so a symbol
5108
+ under a per-test matcher counts only for the test files that matcher matches.</p>
5109
+ <h3 id="test-guards">Test guards</h3>
5110
+ <p>Each generated test file is guarded with <code>#ifdef</code>. Some coding standards forbid <code>#ifdef</code>
5111
+ in favor of <code>#if</code>, and <code>:test_guard</code> set to <code>:if</code> uses <code>#if</code> instead. The options are
5112
+ <code>:ifdef</code> (the default) and <code>:if</code>.</p>
5113
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="nt">:defines</span><span class="p">:</span>
5114
+ <a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a><span class="w"> </span><span class="nt">:test</span><span class="p">:</span>
5115
+ <a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">UNIT_TEST</span>
5116
+ <a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a>
5117
+ <a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a><span class="nt">:module_generator</span><span class="p">:</span>
5118
+ <a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a><span class="w"> </span><span class="nt">:test_define</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">UNIT_TEST</span>
5119
+ <a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a><span class="w"> </span><span class="nt">:test_guard</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">:if</span>
4532
5120
  </code></pre></div>
4533
- <h3 id="naming-convention">Naming Convention</h3>
4534
- <p>Finally, you can force a particular naming convention. Even if someone calls the generator
4535
- with something like <code>MyNewModule</code>, if they have the naming convention set to <code>:caps</code>, it will
4536
- generate files like <code>MY_NEW_MODULE.c</code>. This keeps everyone on your team behaving the same way.</p>
4537
- <p>Your options for <code>:naming:</code> are as follows:</p>
4538
- <div class="highlight"><pre><span></span><code>- `:bumpy` - BumpyFilesLooksLikeSo
4539
- - `:camel` - camelFilesAreSimilarButStartLow
4540
- - `:snake` - snake_case_is_all_lower_and_uses_underscores
4541
- - `:caps` - CAPS_FEELS_LIKE_YOU_ARE_SCREAMING
5121
+ <p>With these settings, this command:</p>
5122
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>ceedling<span class="w"> </span><span class="s2">&quot;module:create[Widget]&quot;</span>
4542
5123
  </code></pre></div>
5124
+ <p>creates <code>test_Widget.c</code> wrapped in <code>#if UNIT_TEST</code> and <code>#endif // UNIT_TEST</code>. With
5125
+ <code>#if</code>, the symbol must be defined to a nonzero value. A bare <code>UNIT_TEST</code> under <code>:defines</code>
5126
+ is defined as <code>1</code>.</p>
4543
5127
  <p><br/><br/></p>
4544
5128
 
4545
5129