ceedling 1.1.10 → 1.2.1

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