ceedling 1.1.10 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec +3 -0
- data/.simplecov +73 -0
- data/GIT_COMMIT_SHA +1 -1
- data/Gemfile +84 -8
- data/Gemfile.lock +38 -8
- data/README.md +51 -29
- data/Rakefile +768 -16
- data/assets/{project.yml → features/project.yml} +4 -1
- data/assets/fixtures/bullseye_branch_coverage/src/branchy.c +24 -0
- data/assets/fixtures/bullseye_branch_coverage/src/branchy.h +14 -0
- data/assets/fixtures/bullseye_branch_coverage/test/test_branchy.c +18 -0
- data/assets/fixtures/cppcheck_findings/findings.c +23 -0
- data/assets/fixtures/cppcheck_findings/findings.h +13 -0
- data/assets/fixtures/header_include_path_validation/alt_drivers/foo.h +6 -0
- data/assets/fixtures/header_include_path_validation/bar.h +6 -0
- data/assets/fixtures/header_include_path_validation/drivers/foo.h +6 -0
- data/assets/fixtures/header_include_path_validation/dup.h +6 -0
- data/assets/fixtures/header_include_path_validation/other_inc/dup.h +6 -0
- data/assets/fixtures/header_include_path_validation/test_ambiguous_mock.c +15 -0
- data/assets/fixtures/header_include_path_validation/test_bare_mock.c +11 -0
- data/assets/fixtures/header_include_path_validation/test_bogus_mock_path.c +11 -0
- data/assets/fixtures/header_include_path_validation/test_bogus_vanilla_path.c +10 -0
- data/assets/fixtures/header_include_path_validation/test_include_outranks_test_include_path.c +16 -0
- data/assets/fixtures/header_include_path_validation/test_pathed_mock.c +11 -0
- data/assets/fixtures/header_include_path_validation/test_pathed_mock_ambiguous.c +14 -0
- data/assets/fixtures/header_include_path_validation/test_test_include_path_outranks_include.c +17 -0
- data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.c +6 -0
- data/assets/fixtures/implicit_source_header_correspondence/alpha/dup.h +6 -0
- data/assets/fixtures/implicit_source_header_correspondence/beta/dup.c +6 -0
- data/assets/fixtures/implicit_source_header_correspondence/beta/dup.h +6 -0
- data/assets/fixtures/implicit_source_header_correspondence/gamma/dup_gamma.c +6 -0
- data/assets/fixtures/implicit_source_header_correspondence/test_dup_alpha.c +10 -0
- data/assets/fixtures/implicit_source_header_correspondence/test_dup_bare.c +10 -0
- data/assets/fixtures/implicit_source_header_correspondence/test_dup_beta.c +10 -0
- data/assets/fixtures/implicit_source_header_correspondence/test_dup_override.c +19 -0
- data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive.c +19 -0
- data/assets/fixtures/implicit_source_header_correspondence/test_dup_subtractive_noop.c +16 -0
- data/assets/fixtures/parent_directory_references/alpha/extra.c +4 -0
- data/assets/fixtures/parent_directory_references/common/helper.c +6 -0
- data/assets/fixtures/parent_directory_references/common/helper.h +6 -0
- data/assets/fixtures/parent_directory_references/unit/test_dotdot_include.c +10 -0
- data/assets/fixtures/parent_directory_references/unit/test_dotdot_source.c +16 -0
- data/assets/fixtures/plain_inline_module.h +9 -0
- data/assets/fixtures/same_named_modules/include/drivers/spi/config.h +6 -0
- data/assets/fixtures/same_named_modules/include/drivers/uart/config.h +6 -0
- data/assets/fixtures/same_named_modules/src/drivers/spi/config.c +8 -0
- data/assets/fixtures/same_named_modules/src/drivers/uart/config.c +10 -0
- data/assets/fixtures/same_named_modules/test/test_both_configs.c +26 -0
- data/assets/fixtures/same_named_modules/test/test_both_configs_mocked.c +20 -0
- data/assets/fixtures/same_named_modules/test/test_both_configs_mocked_traditional.c +19 -0
- data/assets/fixtures/same_named_modules/test/test_both_modules.c +19 -0
- data/assets/fixtures/same_named_modules/test/test_uart_config_bare.c +19 -0
- data/assets/fixtures/same_named_modules/test/test_uart_config_partial_only.c +20 -0
- data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.c +6 -0
- data/assets/fixtures/sources_with_duplicate_basenames/baz/bar.h +6 -0
- data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.c +6 -0
- data/assets/fixtures/sources_with_duplicate_basenames/foo/bar.h +6 -0
- data/assets/fixtures/sources_with_duplicate_basenames/main.c +11 -0
- data/assets/fixtures/sources_with_duplicate_basenames/test_baz_bar.c +10 -0
- data/assets/fixtures/sources_with_duplicate_basenames/test_both_bars.c +12 -0
- data/assets/fixtures/sources_with_duplicate_basenames/test_foo_bar.c +10 -0
- data/assets/{test_example_file_boom.c → fixtures/test_nosanitize_boom.c} +9 -0
- data/assets/{test_example_file_crash_assert.c → fixtures/test_nosanitize_crash_assert.c} +8 -0
- data/assets/{test_example_file_crash_sigsegv.c → fixtures/test_nosanitize_crash_sigsegv.c} +8 -0
- data/assets/{test_example_file_crash_sigsegv_with_param.c → fixtures/test_nosanitize_crash_sigsegv_with_param.c} +8 -0
- data/assets/fixtures/test_nosanitize_heap_buffer_overflow.c +31 -0
- data/assets/fixtures/test_nosanitize_leak.c +34 -0
- data/assets/fixtures/test_nosanitize_two_findings.c +36 -0
- data/assets/{test_example_file_ub_shift_overflow.c → fixtures/test_nosanitize_ub_shift_overflow.c} +9 -0
- data/assets/fixtures/test_plain_inline_module.c +15 -0
- data/assets/fixtures/test_source_file_duplicate_basenames/alpha/calc.c +4 -0
- data/assets/fixtures/test_source_file_duplicate_basenames/beta/calc.c +4 -0
- data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_alpha.c +15 -0
- data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_ambiguous.c +15 -0
- data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_beta.c +15 -0
- data/assets/fixtures/tests_with_conditional_includes/src/feature_extra2.h +13 -0
- data/assets/fixtures/tests_with_conditional_includes/src/macro_target_extra.h +13 -0
- data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.c +19 -3
- data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget.h +1 -0
- data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.c +17 -1
- data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget.c +12 -4
- data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/test/test_widget_feature.c +8 -5
- data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.c +7 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/Case_01.h +6 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.c +16 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/Case_02.h +6 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/FeatureConfig.h +6 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/Gpt.h +6 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/MyModuleConfig.h +17 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart1.h +6 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/MyModulePart2.h +6 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/drivers/widget.h +6 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/reader.c +7 -0
- data/assets/fixtures/tests_with_conditional_mocks/src/reader.h +6 -0
- data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01.c +21 -0
- data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_01_legacy.c +16 -0
- data/assets/fixtures/tests_with_conditional_mocks/test/test_Case_02.c +31 -0
- data/assets/fixtures/tests_with_conditional_mocks/test/test_FeatureConfig.c +15 -0
- data/assets/fixtures/tests_with_conditional_mocks/test/test_reader.c +13 -0
- data/assets/fixtures/tests_with_duplicate_test_names/integration/test_foo.c +21 -0
- data/assets/fixtures/tests_with_duplicate_test_names/unit/test_foo.c +21 -0
- data/assets/fixtures/tests_with_fallback_conditionals/src/conditional_module.c +28 -0
- data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/test/test_conditionals.c +8 -1
- data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_lower.s +2 -0
- data/assets/fixtures/tests_with_multiple_assembly_extensions/src/asm_helper_upper.S +13 -0
- data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.c +13 -0
- data/assets/fixtures/tests_with_multiple_assembly_extensions/src/counter_module.h +13 -0
- data/assets/fixtures/tests_with_multiple_assembly_extensions/test/test_counter_module.c +27 -0
- data/assets/fixtures/tests_with_subdir_includes/src/module/app/config.h +13 -0
- data/assets/fixtures/tests_with_subdir_includes/src/module/drivers/config.h +13 -0
- data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.c +30 -0
- data/assets/fixtures/tests_with_subdir_includes/src/module/sensor.h +13 -0
- data/assets/fixtures/tests_with_subdir_includes/src/shared/config.h +13 -0
- data/assets/fixtures/tests_with_subdir_includes/test/test_sensor.c +32 -0
- data/bin/actionator.rb +234 -0
- data/bin/app_cfg.rb +7 -0
- data/bin/cli.rb +78 -47
- data/bin/cli_handler.rb +89 -57
- data/bin/cli_helper.rb +90 -49
- data/bin/cli_options_transform.rb +22 -0
- data/bin/{configinator.rb → composinator.rb} +39 -32
- data/bin/mixin_resolvinator.rb +124 -0
- data/bin/mixin_standardizer.rb +31 -61
- data/bin/mixinator.rb +27 -29
- data/bin/mixins.rb +0 -5
- data/bin/objects.yml +20 -7
- data/bin/path_validator.rb +6 -5
- data/bin/projectinator.rb +51 -142
- data/bin/rake_patches.rb +36 -2
- data/bin/recursive_merger.rb +7 -1
- data/bin/versionator.rb +2 -3
- data/ceedling.gemspec +83 -12
- data/docs/BreakingChanges.md +46 -2
- data/docs/CONTRIBUTING.md +45 -29
- data/docs/CeedlingPullRequestChecklist.md +10 -9
- data/docs/Changelog.md +327 -37
- data/docs/KnownIssues.md +30 -4
- data/docs/ReleaseNotes.md +288 -12
- data/docs/SECURITY.md +46 -2
- data/docs/ThrowTheSwitchCodingStandard.md +21 -3
- data/docs/overrides/main.html +32 -0
- data/examples/temp_sensor/mixin/add_bullseye.yml +19 -0
- data/examples/wondrous_forest/README.md +3 -0
- data/examples/wondrous_forest/src/sensors/light/Calibration.c +21 -0
- data/examples/wondrous_forest/src/sensors/light/Calibration.h +14 -0
- data/examples/wondrous_forest/src/sensors/soil/Calibration.c +23 -0
- data/examples/wondrous_forest/src/sensors/soil/Calibration.h +14 -0
- data/examples/wondrous_forest/test/TestCalibration.c +39 -0
- data/lib/ceedling/batchinator.rb +81 -22
- data/lib/ceedling/c_extractor/README.md +61 -0
- data/lib/ceedling/c_extractor/c_extractor.rb +33 -2
- data/lib/ceedling/c_extractor/c_extractor_code_text.rb +18 -10
- data/lib/ceedling/c_extractor/c_extractor_constants.rb +10 -10
- data/lib/ceedling/c_extractor/c_extractor_declarations.rb +14 -14
- data/lib/ceedling/c_extractor/c_extractor_functions.rb +10 -13
- data/lib/ceedling/c_extractor/c_extractor_preprocessing.rb +77 -0
- data/lib/ceedling/c_extractor/c_extractor_types.rb +8 -5
- data/lib/ceedling/ceedling.h +33 -0
- data/lib/ceedling/config/config_matchinator.rb +36 -13
- data/lib/ceedling/config/configurator.rb +366 -530
- data/lib/ceedling/config/configurator_builder.rb +253 -365
- data/lib/ceedling/config/configurator_plugins.rb +68 -102
- data/lib/ceedling/config/configurator_setup.rb +343 -610
- data/lib/ceedling/config/configurator_validator.rb +114 -142
- data/lib/ceedling/config/line_marker_suppressors.rb +67 -0
- data/lib/ceedling/constants.rb +60 -6
- data/lib/ceedling/defaults.rb +28 -14
- data/lib/ceedling/defineinator.rb +9 -4
- data/lib/ceedling/dependencies/README.md +69 -0
- data/lib/ceedling/dependencies/dependency_cache_store.rb +160 -0
- data/lib/ceedling/dependencies/dependency_debug_tree.rb +129 -0
- data/lib/ceedling/dependencies/dependency_differ.rb +127 -0
- data/lib/ceedling/dependencies/dependency_hasher.rb +94 -0
- data/lib/ceedling/dependencies/dependency_path_normalizer.rb +80 -0
- data/lib/ceedling/dependencies/dependency_tracker.rb +405 -0
- data/lib/ceedling/dependencies/dependinator.rb +65 -0
- data/lib/ceedling/dependencies/gcc_dependency_parser.rb +86 -0
- data/lib/ceedling/encodinator.rb +23 -11
- data/lib/ceedling/file_finder.rb +373 -89
- data/lib/ceedling/file_finder_helper.rb +44 -33
- data/lib/ceedling/file_path_collection_utils.rb +17 -4
- data/lib/ceedling/file_path_utils.rb +310 -52
- data/lib/ceedling/file_wrapper.rb +245 -8
- data/lib/ceedling/filename_extension.rb +91 -0
- data/lib/ceedling/flaginator.rb +6 -2
- data/lib/ceedling/generators/generator.rb +192 -70
- data/lib/ceedling/generators/generator_helper.rb +116 -69
- data/lib/ceedling/generators/generator_mocks.rb +13 -8
- data/lib/ceedling/generators/generator_partials.rb +47 -15
- data/lib/ceedling/generators/generator_test_results.rb +29 -17
- data/lib/ceedling/generators/generator_test_results_backtrace.rb +199 -107
- data/lib/ceedling/generators/generator_test_results_sanity_checker.rb +1 -1
- data/lib/ceedling/includes/include_factory.rb +21 -6
- data/lib/ceedling/includes/include_pathinator.rb +40 -4
- data/lib/ceedling/includes/includes.rb +215 -61
- data/lib/ceedling/loginator.rb +13 -4
- data/lib/ceedling/objects.yml +216 -33
- data/lib/ceedling/parsing_parcels.rb +39 -13
- data/lib/ceedling/partials/README.md +53 -0
- data/lib/ceedling/partials/partializer.rb +118 -26
- data/lib/ceedling/partials/partializer_config.rb +141 -8
- data/lib/ceedling/partials/partializer_helper.rb +88 -2
- data/lib/ceedling/partials/partializer_utils.rb +1 -1
- data/lib/ceedling/partials/partials.rb +4 -4
- data/lib/ceedling/path_matcher.rb +163 -0
- data/lib/ceedling/path_mirror.rb +73 -0
- data/lib/ceedling/plugins/plugin.rb +1 -1
- data/lib/ceedling/plugins/plugin_manager.rb +31 -15
- data/lib/ceedling/plugins/plugin_manager_helper.rb +5 -1
- data/lib/ceedling/plugins/plugin_reportinator.rb +36 -7
- data/lib/ceedling/plugins/plugin_reportinator_helper.rb +3 -3
- data/lib/ceedling/plugins/report_log_writer_plugin.rb +66 -0
- data/lib/ceedling/plugins/report_tests_stdout_plugin.rb +18 -5
- data/lib/ceedling/preprocess/README.md +135 -120
- data/lib/ceedling/preprocess/c_comment_scanner.rb +9 -7
- data/lib/ceedling/preprocess/c_preprocessor_conditionals.rb +27 -10
- data/lib/ceedling/preprocess/preprocessinator.rb +253 -217
- data/lib/ceedling/preprocess/preprocessinator_bare_includes_extractor.rb +7 -10
- data/lib/ceedling/preprocess/preprocessinator_code_finder.rb +8 -6
- data/lib/ceedling/preprocess/preprocessinator_comment_stripper.rb +5 -3
- data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +86 -82
- data/lib/ceedling/preprocess/preprocessinator_includes_handler.rb +182 -163
- data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +174 -8
- data/lib/ceedling/preprocess/preprocessinator_reconstructor.rb +41 -20
- data/lib/ceedling/quote_include_isolator.rb +129 -0
- data/lib/ceedling/rake_app/rake_task_registry.rb +9 -9
- data/lib/ceedling/rake_app/rake_wrapper.rb +0 -13
- data/lib/ceedling/rake_app/rakefile_component_resolver.rb +24 -12
- data/lib/ceedling/rakefile.rb +2 -1
- data/lib/ceedling/{tasks_base.rake → rakefiles/base/tasks_base.rake} +1 -1
- data/lib/ceedling/{tasks_filesystem.rake → rakefiles/base/tasks_filesystem.rake} +3 -0
- data/lib/ceedling/rakefiles/release/rules_release.rake +52 -0
- data/lib/ceedling/{erb_wrapper.rb → rakefiles/release/tasks_release.rake} +5 -8
- data/lib/ceedling/rakefiles/tests/rules_tests.rake +43 -0
- data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +80 -0
- data/lib/ceedling/{tasks_tests.rake → rakefiles/tests/tasks_tests.rake} +11 -20
- data/lib/ceedling/rakefiles/tests/tasks_tests_generate.rake +55 -0
- data/lib/ceedling/release_invoker/README.md +35 -0
- data/lib/ceedling/release_invoker/release_build_executor.rb +263 -0
- data/lib/ceedling/release_invoker/release_build_planner.rb +80 -0
- data/lib/ceedling/release_invoker/release_invoker.rb +78 -0
- data/lib/ceedling/release_invoker/release_invoker_types.rb +40 -0
- data/lib/ceedling/reportinator.rb +18 -2
- data/lib/ceedling/ruby_expandinator.rb +40 -1
- data/lib/ceedling/setupinator.rb +9 -3
- data/lib/ceedling/system_wrapper.rb +17 -0
- data/lib/ceedling/templateinator.rb +146 -0
- data/lib/ceedling/test_context_extractor.rb +59 -28
- data/lib/ceedling/test_invoker/HEADER_COLLISIONS.md +41 -0
- data/lib/ceedling/test_invoker/PIPELINE.md +142 -0
- data/lib/ceedling/test_invoker/README.md +6 -0
- data/lib/ceedling/test_invoker/mock_locator.rb +49 -0
- data/lib/ceedling/test_invoker/partials_manager.rb +426 -0
- data/lib/ceedling/test_invoker/standin_headerinator.rb +136 -0
- data/lib/ceedling/test_invoker/test_bare_includes_extractinator.rb +117 -0
- data/lib/ceedling/test_invoker/test_build_executor.rb +783 -429
- data/lib/ceedling/test_invoker/test_build_planner.rb +175 -70
- data/lib/ceedling/test_invoker/test_build_setup.rb +132 -241
- data/lib/ceedling/test_invoker/test_build_validations.rb +102 -0
- data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +148 -0
- data/lib/ceedling/test_invoker/test_includes_extractinator.rb +34 -0
- data/lib/ceedling/test_invoker/test_includes_preprocessinator.rb +118 -0
- data/lib/ceedling/test_invoker/test_includes_reconcilinator.rb +149 -0
- data/lib/ceedling/test_invoker/test_invoker.rb +16 -183
- data/lib/ceedling/test_invoker/test_invoker_types.rb +85 -16
- data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +121 -0
- data/lib/ceedling/test_invoker/test_pipeline_manager.rb +303 -0
- data/lib/ceedling/test_invoker/test_runner_generatinator.rb +105 -0
- data/lib/ceedling/test_invoker/test_search_paths.rb +73 -0
- data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +78 -0
- data/lib/ceedling/tool_executor.rb +42 -13
- data/lib/ceedling/tool_executor_helper.rb +1 -1
- data/lib/ceedling/tool_validator.rb +124 -123
- data/lib/ceedling/yaml_wrapper.rb +5 -3
- data/lib/version.rb +19 -2
- data/mkdocs.prerelease.yml +42 -0
- data/mkdocs.yml +10 -2
- data/plugins/bullseye/bullseye.rake +70 -107
- data/plugins/bullseye/config/defaults.yml +12 -54
- data/plugins/bullseye/config/defaults_bullseye.rb +182 -0
- data/plugins/bullseye/lib/bullseye.rb +511 -120
- data/plugins/bullseye/lib/bullseye_constants.rb +100 -0
- data/plugins/command_hooks/lib/command_hooks.rb +117 -199
- data/plugins/compile_commands_json_db/lib/compile_commands_json_db.rb +72 -27
- data/plugins/cppcheck/config/defaults.yml +6 -1
- data/plugins/cppcheck/config/defaults_cppcheck.rb +5 -1
- data/plugins/cppcheck/cppcheck.rake +7 -1
- data/plugins/cppcheck/lib/cppcheck.rb +175 -26
- data/plugins/cppcheck/lib/cppcheck_constants.rb +12 -0
- data/plugins/cppcheck/lib/cppcheck_reports.rb +5 -1
- data/plugins/dependencies/Rakefile +14 -2
- data/plugins/dependencies/config/defaults.yml +9 -6
- data/plugins/dependencies/dependencies.rake +46 -76
- data/plugins/dependencies/example/boss/project.yml +1 -1
- data/plugins/dependencies/example/supervisor/project.yml +1 -1
- data/plugins/dependencies/example/version.tar.gzip +0 -0
- data/plugins/dependencies/lib/dependencies.rb +232 -427
- data/plugins/dependencies/lib/dependency_commands.rb +72 -0
- data/plugins/dependencies/lib/dependency_environment.rb +57 -0
- data/plugins/dependencies/lib/dependency_spec.rb +145 -0
- data/plugins/fff/.rspec +1 -0
- data/plugins/fff/Rakefile +14 -2
- data/plugins/fff/examples/fff_example/project.yml +1 -1
- data/plugins/fff/lib/fff.rb +30 -9
- data/plugins/fff/lib/fff_mock_generator.rb +142 -128
- data/plugins/fff/spec/fff_mock_header_generator_spec.rb +15 -0
- data/plugins/fff/spec/fff_mock_source_generator_spec.rb +14 -0
- data/plugins/fff/spec/spec_helper.rb +45 -0
- data/plugins/fff/src/fff_unity_helper.h +5 -0
- data/plugins/fff/vendor/fff/fakegen.rb +5 -4
- data/plugins/fff/vendor/fff/fff.h +4 -4
- data/plugins/gcov/config/defaults.yml +5 -0
- data/plugins/gcov/gcov.rake +12 -8
- data/plugins/gcov/lib/console_reportinator.rb +140 -20
- data/plugins/gcov/lib/gcov.rb +155 -60
- data/plugins/gcov/lib/gcov_constants.rb +4 -7
- data/plugins/gcov/lib/gcov_reportinator.rb +90 -0
- data/plugins/gcov/lib/gcov_types.rb +62 -1
- data/plugins/gcov/lib/gcovr_reportinator.rb +255 -213
- data/plugins/gcov/lib/reportgenerator_reportinator.rb +122 -44
- data/plugins/module_generator/Rakefile +4 -4
- data/plugins/module_generator/config/module_generator.yml +0 -1
- data/plugins/module_generator/example/project.yml +1 -1
- data/plugins/module_generator/lib/module_generator.rb +117 -87
- data/plugins/module_generator/lib/module_generator_options.rb +150 -0
- data/plugins/module_generator/lib/module_generator_project.rb +45 -0
- data/plugins/module_generator/lib/module_generator_request.rb +83 -0
- data/plugins/module_generator/lib/module_generator_test_file.rb +68 -0
- data/plugins/module_generator/lib/module_generator_unity.rb +24 -0
- data/plugins/module_generator/module_generator.rake +24 -46
- data/plugins/report_build_warnings_log/config/defaults.yml +4 -1
- data/plugins/report_build_warnings_log/lib/report_build_warnings_log.rb +47 -55
- data/plugins/report_build_warnings_log/lib/warning_collector.rb +140 -0
- data/plugins/report_build_warnings_log/lib/warning_reports.rb +135 -0
- data/plugins/report_tests_gtestlike_stdout/assets/test_results.template +3 -0
- data/{spec/units/configurator_builder_spec.rb → plugins/report_tests_gtestlike_stdout/config/defaults.yml} +6 -10
- data/plugins/report_tests_gtestlike_stdout/lib/gtestlike_report.rb +168 -0
- data/plugins/report_tests_gtestlike_stdout/lib/report_tests_gtestlike_stdout.rb +25 -1
- data/plugins/report_tests_ide_stdout/assets/test_results.template +50 -0
- data/plugins/report_tests_ide_stdout/config/defaults.yml +13 -0
- data/plugins/report_tests_ide_stdout/lib/ide_report_lines.rb +103 -0
- data/plugins/report_tests_ide_stdout/lib/report_tests_ide_stdout.rb +12 -4
- data/plugins/report_tests_log_factory/lib/cppunit_tests_reporter.rb +33 -51
- data/plugins/report_tests_log_factory/lib/html_tests_reporter.rb +286 -295
- data/plugins/report_tests_log_factory/lib/json_tests_reporter.rb +22 -35
- data/plugins/report_tests_log_factory/lib/junit_tests_reporter.rb +91 -133
- data/plugins/report_tests_log_factory/lib/report_tests_log_factory.rb +72 -86
- data/plugins/report_tests_log_factory/lib/tests_reporter.rb +31 -12
- data/plugins/report_tests_pretty_stdout/assets/{template.erb → test_results.template} +8 -8
- data/plugins/report_tests_raw_output_log/lib/report_tests_raw_output_log.rb +18 -48
- data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +13 -2
- data/plugins/sanitize/config/defaults.yml +44 -0
- data/plugins/sanitize/config/defaults_sanitize.rb +20 -0
- data/plugins/sanitize/lib/sanitize.rb +174 -0
- data/plugins/sanitize/lib/sanitize_config.rb +110 -0
- data/plugins/sanitize/lib/sanitize_constants.rb +13 -0
- data/plugins/sanitize/lib/sanitize_findings.rb +85 -0
- data/plugins/sanitize/lib/sanitize_records.rb +115 -0
- data/plugins/sanitize/lib/sanitize_reports.rb +135 -0
- data/plugins/sanitize/sanitize.rake +108 -0
- data/plugins/valgrind/config/defaults.yml +7 -1
- data/plugins/valgrind/config/defaults_valgrind.rb +6 -1
- data/plugins/valgrind/lib/valgrind.rb +202 -39
- data/plugins/valgrind/lib/valgrind_constants.rb +4 -0
- data/plugins/valgrind/lib/valgrind_report.rb +52 -0
- data/plugins/valgrind/valgrind.rake +33 -11
- data/site-local/404.html +248 -14
- data/site-local/configuration/environment-vars.html +248 -14
- data/site-local/configuration/global-collections.html +248 -19
- data/site-local/configuration/index.html +249 -15
- data/site-local/configuration/loading.html +260 -22
- data/site-local/configuration/mixins.html +252 -17
- data/site-local/configuration/parallel-builds.html +248 -14
- data/site-local/configuration/project-file.html +275 -30
- data/site-local/configuration/reference/cexception.html +255 -20
- data/site-local/configuration/reference/cmock.html +281 -14
- data/site-local/configuration/reference/defines.html +262 -19
- data/site-local/configuration/reference/environment.html +251 -17
- data/site-local/configuration/reference/extension.html +361 -16
- data/site-local/configuration/reference/files.html +262 -14
- data/site-local/configuration/reference/flags.html +270 -19
- data/site-local/configuration/reference/index.html +248 -14
- data/site-local/configuration/reference/libraries.html +248 -14
- data/site-local/configuration/reference/mixins.html +248 -14
- data/site-local/configuration/reference/partials.html +249 -19
- data/site-local/configuration/reference/paths.html +275 -15
- data/site-local/configuration/reference/plugins.html +248 -14
- data/site-local/configuration/reference/project.html +291 -14
- data/site-local/configuration/reference/release-build.html +256 -14
- data/site-local/configuration/reference/test-build.html +290 -24
- data/site-local/configuration/reference/test-runner.html +288 -17
- data/site-local/configuration/reference/tools.html +254 -14
- data/site-local/configuration/reference/unity.html +280 -15
- data/site-local/configuration/which-ceedling.html +248 -14
- data/site-local/development/index.html +254 -14
- data/site-local/development/plugins/configuration.html +269 -17
- data/site-local/development/plugins/index.html +267 -15
- data/site-local/development/plugins/plugin-subclass.html +906 -154
- data/site-local/development/plugins/rake-tasks.html +276 -14
- data/site-local/development/releases.html +4708 -0
- data/site-local/development/workflow.html +1030 -51
- data/site-local/getting-started/builds.html +4607 -0
- data/site-local/getting-started/command-line.html +418 -34
- data/site-local/getting-started/example-projects/cipher-quest.html +248 -14
- data/site-local/getting-started/example-projects/index.html +249 -15
- data/site-local/getting-started/example-projects/temp-sensor.html +248 -14
- data/site-local/getting-started/example-projects/wondrous-forest.html +248 -14
- data/site-local/getting-started/index.html +255 -14
- data/site-local/getting-started/installation.html +258 -22
- data/site-local/getting-started/quick-start.html +251 -15
- data/site-local/help.html +255 -14
- data/site-local/index.html +292 -22
- data/site-local/overview/build-system.html +249 -15
- data/site-local/overview/index.html +248 -14
- data/site-local/overview/test-environments.html +257 -14
- data/site-local/overview/tools-and-frameworks.html +248 -14
- data/site-local/plugins/beep.html +251 -14
- data/site-local/plugins/bullseye/index.html +5079 -0
- data/site-local/plugins/bullseye/licensing.html +4840 -0
- data/site-local/plugins/command-hooks.html +265 -27
- data/site-local/plugins/compile-commands-json-db.html +256 -17
- data/site-local/plugins/cppcheck.html +1081 -262
- data/site-local/plugins/dependencies.html +934 -242
- data/site-local/plugins/fff.html +296 -15
- data/site-local/plugins/gcov/examples.html +251 -14
- data/site-local/plugins/gcov/gcovr.html +567 -65
- data/site-local/plugins/gcov/index.html +251 -14
- data/site-local/plugins/gcov/overview.html +259 -18
- data/site-local/plugins/gcov/reportgenerator.html +386 -38
- data/site-local/plugins/gcov/reporting.html +348 -100
- data/site-local/plugins/gcov/setup.html +253 -15
- data/site-local/plugins/gcov/tool-versions.html +301 -19
- data/site-local/plugins/gcov/troubleshooting.html +273 -36
- data/site-local/plugins/index.html +294 -36
- data/site-local/plugins/module-generator.html +779 -195
- data/site-local/plugins/report-build-warnings-log.html +578 -33
- data/site-local/plugins/report-tests-gtestlike-stdout.html +467 -84
- data/site-local/plugins/report-tests-ide-stdout.html +654 -51
- data/site-local/plugins/report-tests-log-factory.html +337 -70
- data/site-local/plugins/report-tests-pretty-stdout.html +251 -14
- data/site-local/plugins/report-tests-raw-output-log.html +251 -14
- data/site-local/plugins/report-tests-teamcity-stdout.html +251 -14
- data/site-local/plugins/sanitize.html +5332 -0
- data/site-local/plugins/valgrind.html +416 -26
- data/site-local/{plugins/bullseye.html → project/index.html} +297 -217
- data/site-local/project/release-history.html +251 -17
- data/site-local/project/sbom.html +4726 -0
- data/site-local/project/upgrade.html +250 -16
- data/site-local/reference/build-directives.html +257 -14
- data/site-local/reference/command-line.html +373 -16
- data/site-local/reference/environment-vars.html +248 -14
- data/site-local/reference/gcov-plugin.html +492 -18
- data/site-local/reference/global-collections.html +249 -15
- data/site-local/reference/index.html +248 -14
- data/site-local/reference/partials-macros.html +258 -14
- data/site-local/reference/project-configuration.html +248 -14
- data/site-local/sitemap.xml.gz +0 -0
- data/{docs/mkdocs/snapshot/assets → site-local/snapshot/assets/features}/project.yml +4 -1
- data/site-local/snapshot/examples/cipher_quest/index.html +248 -14
- data/site-local/snapshot/examples/temp_sensor/index.html +248 -14
- data/site-local/snapshot/examples/wondrous_forest/index.html +265 -25
- data/site-local/snapshot/plugins/bullseye/config/defaults.yml +24 -0
- data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +182 -0
- data/site-local/snapshot/plugins/gcov/config/defaults.yml +5 -0
- data/site-local/testing-guide/build-directives.html +332 -22
- data/site-local/testing-guide/conventions.html +678 -153
- data/site-local/testing-guide/frameworks.html +248 -14
- data/site-local/testing-guide/index.html +248 -21
- data/site-local/testing-guide/partials/configuration.html +248 -14
- data/site-local/testing-guide/partials/conventions.html +316 -17
- data/site-local/testing-guide/partials/directives.html +456 -48
- data/site-local/testing-guide/partials/example.html +248 -14
- data/site-local/testing-guide/partials/index.html +255 -14
- data/site-local/testing-guide/partials/overview.html +248 -14
- data/site-local/testing-guide/partials/variables.html +248 -14
- data/site-local/testing-guide/test-cases.html +248 -14
- data/site-local/testing-guide/test-sample.html +248 -14
- data/site-local/testing-guide/test-suite-anatomy.html +248 -14
- data/spec/integration/actionator_file_operations_spec.rb +287 -0
- data/spec/integration/analysis_tool_output_spec.rb +204 -0
- data/spec/{units/c_extractor/c_extractor_integration_spec.rb → integration/c_extractor_composition_spec.rb} +196 -17
- data/spec/integration/command_hooks_plugin_spec.rb +152 -0
- data/spec/integration/compile_commands_json_db_spec.rb +76 -0
- data/spec/integration/configurator_pipeline_spec.rb +180 -0
- data/spec/integration/configurator_plugins_spec.rb +122 -0
- data/spec/integration/configurator_validation_spec.rb +98 -0
- data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +396 -0
- data/spec/integration/dependencies/dependency_tracker_core_spec.rb +244 -0
- data/spec/integration/dependencies/dependency_tracker_diagnose_spec.rb +224 -0
- data/spec/integration/dependencies/dependency_tracker_filename_handling_spec.rb +118 -0
- data/spec/integration/dependencies/dependency_tracker_gcc_deps_spec.rb +199 -0
- data/spec/integration/dependencies/dependency_tracker_pruning_spec.rb +167 -0
- data/spec/integration/dependencies_plugin_spec.rb +473 -0
- data/spec/integration/erb_dependency_removed_spec.rb +167 -0
- data/spec/integration/includes_extraction_spec.rb +612 -0
- data/spec/integration/mixin_loading_spec.rb +414 -0
- data/spec/integration/module_generator_spec.rb +436 -0
- data/spec/integration/partials_fallback_preprocessing_spec.rb +316 -0
- data/spec/integration/partials_header_composition_spec.rb +889 -0
- data/spec/integration/partials_module_resolution_spec.rb +372 -0
- data/spec/integration/partials_symbol_linkage_spec.rb +371 -0
- data/spec/integration/preprocessing_transient_io_retry_spec.rb +135 -0
- data/spec/integration/quote_include_isolator_spec.rb +167 -0
- data/spec/integration/report_build_warnings_log_spec.rb +170 -0
- data/spec/integration/report_tests_log_factory_spec.rb +100 -0
- data/spec/integration/sanitizer_exclusions_spec.rb +126 -0
- data/spec/integration/system_harness_sanitizers_spec.rb +104 -0
- data/spec/integration/test_build_parallel_barrier_spec.rb +89 -0
- data/spec/integration/test_executable_manifest_spec.rb +118 -0
- data/spec/integration/test_includes_extractinator_spec.rb +293 -0
- data/spec/integration/tool_executor_spec.rb +224 -0
- data/spec/integration/tool_validator_spec.rb +133 -0
- data/spec/integration/vendor_copy_transient_io_retry_spec.rb +130 -0
- data/spec/manual/stress_test.rb +1 -1
- data/spec/support/config_yaml_helper.rb +17 -0
- data/spec/support/fixtures/sanitizer_reports/clang_asan_heap.txt +45 -0
- data/spec/support/fixtures/sanitizer_reports/clang_ubsan_shift.txt +5 -0
- data/spec/support/fixtures/sanitizer_reports/gcc_heap.txt +47 -0
- data/spec/support/fixtures/sanitizer_reports/gcc_leak.txt +10 -0
- data/spec/support/fixtures/sanitizer_reports/gcc_segv.txt +6 -0
- data/spec/support/fixtures/sanitizer_reports/gcc_ubsan_shift.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__all_pass.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__coverage_branches_only.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__coverage_functions_only.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__coverage_none.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__empty.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__gcov_context.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__mixed_all.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__one_failure_matching.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__one_failure_multiline.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__one_failure_no_message.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__one_failure_nonmatching.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__one_ignore_no_message.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__one_ignore_with_message.txt +6 -0
- data/spec/support/fixtures/templates/bullseye__stdout_only.txt +6 -0
- data/spec/support/fixtures/templates/ide__all_pass.txt +10 -0
- data/spec/support/fixtures/templates/ide__coverage_branches_only.txt +10 -0
- data/spec/support/fixtures/templates/ide__coverage_functions_only.txt +10 -0
- data/spec/support/fixtures/templates/ide__coverage_none.txt +10 -0
- data/spec/support/fixtures/templates/ide__empty.txt +8 -0
- data/spec/support/fixtures/templates/ide__gcov_context.txt +28 -0
- data/spec/support/fixtures/templates/ide__mixed_all.txt +29 -0
- data/spec/support/fixtures/templates/ide__one_failure_matching.txt +15 -0
- data/spec/support/fixtures/templates/ide__one_failure_multiline.txt +17 -0
- data/spec/support/fixtures/templates/ide__one_failure_no_message.txt +15 -0
- data/spec/support/fixtures/templates/ide__one_failure_nonmatching.txt +15 -0
- data/spec/support/fixtures/templates/ide__one_ignore_no_message.txt +15 -0
- data/spec/support/fixtures/templates/ide__one_ignore_with_message.txt +15 -0
- data/spec/support/fixtures/templates/ide__stdout_only.txt +16 -0
- data/spec/support/fixtures/templates/pretty__all_pass.txt +8 -0
- data/spec/support/fixtures/templates/pretty__coverage_branches_only.txt +8 -0
- data/spec/support/fixtures/templates/pretty__coverage_functions_only.txt +8 -0
- data/spec/support/fixtures/templates/pretty__coverage_none.txt +8 -0
- data/spec/support/fixtures/templates/pretty__empty.txt +6 -0
- data/spec/support/fixtures/templates/pretty__gcov_context.txt +31 -0
- data/spec/support/fixtures/templates/pretty__mixed_all.txt +35 -0
- data/spec/support/fixtures/templates/pretty__one_failure_matching.txt +15 -0
- data/spec/support/fixtures/templates/pretty__one_failure_multiline.txt +17 -0
- data/spec/support/fixtures/templates/pretty__one_failure_no_message.txt +15 -0
- data/spec/support/fixtures/templates/pretty__one_failure_nonmatching.txt +15 -0
- data/spec/support/fixtures/templates/pretty__one_ignore_no_message.txt +15 -0
- data/spec/support/fixtures/templates/pretty__one_ignore_with_message.txt +15 -0
- data/spec/support/fixtures/templates/pretty__stdout_only.txt +15 -0
- data/spec/support/fixtures/valgrind_reports/sigsegv.log +51 -0
- data/spec/support/fixtures/valgrind_reports/sigsegv.xml +182 -0
- data/spec/support/include_guard_helper.rb +20 -0
- data/spec/support/integration/configurator_integration_helper.rb +159 -0
- data/spec/support/integration/dependency_tracker_integration_helper.rb +136 -0
- data/spec/support/integration/partials_generation_integration_helper.rb +726 -0
- data/spec/support/integration/spec_integration_helper.rb +285 -0
- data/spec/support/integration/test_includes_harness.rb +259 -0
- data/spec/support/integration/tool_executor_integration_helper.rb +55 -0
- data/spec/support/spec_helper.rb +41 -0
- data/spec/support/system/sanitizers/asan_ubsan.yml +82 -0
- data/spec/support/system/sanitizers/asan_ubsan_leaks.yml +57 -0
- data/spec/support/system/simplecov_boot.rb +66 -0
- data/spec/support/system/spec_system_helper.rb +376 -16
- data/spec/support/system/system_context.rb +181 -59
- data/spec/support/template_render_cases.rb +166 -0
- data/spec/system/bracket_path_handling_spec.rb +175 -0
- data/spec/system/build_output_mirroring_spec.rb +89 -0
- data/spec/system/build_recovery_spec.rb +382 -0
- data/spec/system/bullseye_deployment_spec.rb +102 -0
- data/spec/system/cli_surface_spec.rb +245 -0
- data/spec/system/command_hooks_spec.rb +117 -0
- data/spec/system/conditional_include_macro_visibility_spec.rb +32 -124
- data/spec/system/conditional_mock_includes_spec.rb +181 -0
- data/spec/system/cppcheck_deployment_spec.rb +26 -8
- data/spec/system/delta_builds_spec.rb +751 -0
- data/spec/system/deployment_as_gem_spec.rb +7 -0
- data/spec/system/deployment_as_vendor_spec.rb +29 -145
- data/spec/system/dumpconfig_spec.rb +137 -0
- data/spec/system/encoding_stress_spec.rb +7 -4
- data/spec/system/example_cipher_quest_spec.rb +25 -100
- data/spec/system/example_temp_sensor_spec.rb +30 -172
- data/spec/system/example_wondrous_forest_spec.rb +25 -62
- data/spec/system/extension_multiple_values_spec.rb +75 -0
- data/spec/system/files_paths_reporting_spec.rb +154 -0
- data/spec/system/gcov_deployment_spec.rb +72 -3
- data/spec/system/header_include_path_validation_spec.rb +222 -0
- data/spec/system/implicit_source_header_correspondence_disambiguation_spec.rb +100 -0
- data/spec/system/include_path_reconciliation_spec.rb +64 -0
- data/spec/system/mixin_ordering_spec.rb +30 -415
- data/spec/system/mocks_partials_configuration_validation_spec.rb +126 -0
- data/spec/system/parent_directory_reference_spec.rb +114 -0
- data/spec/system/partials_module_disambiguation_spec.rb +143 -0
- data/spec/system/pinned_thread_count_spec.rb +102 -0
- data/spec/system/plugin_delta_builds_spec.rb +179 -0
- data/spec/system/preprocessing_encoding_spec.rb +87 -4
- data/spec/system/preprocessing_fallback_conditionals_spec.rb +19 -25
- data/spec/system/preprocessing_parameterized_tests_spec.rb +2 -2
- data/spec/system/rake_release_task_path_disambiguation_spec.rb +97 -0
- data/spec/system/rake_test_task_path_disambiguation_spec.rb +118 -0
- data/spec/system/report_and_tooling_plugins_spec.rb +327 -0
- data/spec/system/ruby_replacement_spec.rb +1 -1
- data/spec/system/same_named_modules_spec.rb +115 -0
- data/spec/system/sanitize_deployment_spec.rb +64 -0
- data/spec/system/shuffle_tests_spec.rb +139 -0
- data/spec/system/sibling_header_collision_spec.rb +620 -0
- data/spec/system/subdir_include_preservation_spec.rb +63 -0
- data/spec/system/support/bullseye_common_test_cases.rb +369 -0
- data/spec/system/support/bullseye_helpers.rb +70 -0
- data/spec/system/support/common_test_cases.rb +167 -43
- data/spec/system/support/cppcheck_common_test_cases.rb +80 -0
- data/spec/system/support/cppcheck_helpers.rb +10 -8
- data/spec/system/support/gcov_common_test_cases.rb +173 -37
- data/spec/system/support/gcov_helpers.rb +3 -3
- data/spec/system/support/gcov_partials_test_cases.rb +48 -2
- data/spec/system/support/sanitize_common_test_cases.rb +222 -0
- data/spec/system/support/sanitize_helpers.rb +27 -0
- data/spec/system/support/valgrind_common_test_cases.rb +116 -16
- data/spec/system/support/valgrind_helpers.rb +3 -4
- data/spec/system/test_pipeline_stop_points_spec.rb +160 -0
- data/spec/system/test_runner_system_include_spec.rb +19 -41
- data/spec/system/test_source_file_directive_spec.rb +235 -0
- data/spec/system/upgrade_as_vendor_spec.rb +25 -46
- data/spec/system/valgrind_deployment_spec.rb +41 -0
- data/spec/units/batchinator_spec.rb +314 -0
- data/spec/units/bin/actionator_spec.rb +412 -0
- data/spec/units/bin/app_cfg_spec.rb +90 -0
- data/spec/units/bin/cli_handler_spec.rb +204 -0
- data/spec/units/bin/cli_helper_spec.rb +238 -10
- data/spec/units/bin/cli_options_transform_spec.rb +49 -0
- data/spec/units/bin/composinator_spec.rb +236 -0
- data/spec/units/bin/{projectinator_mixin_spec.rb → mixin_resolvinator_spec.rb} +122 -83
- data/spec/units/bin/mixin_standardizer_spec.rb +4 -3
- data/spec/units/bin/mixinator_spec.rb +58 -22
- data/spec/units/bin/path_validator_spec.rb +112 -0
- data/spec/units/bin/projectinator_spec.rb +223 -0
- data/spec/units/bin/rake_patches_spec.rb +52 -0
- data/spec/units/bin/recursive_merger_spec.rb +22 -0
- data/spec/units/bin/versionator_spec.rb +104 -0
- data/spec/units/c_extractor/c_extractor_code_text_spec.rb +4 -4
- data/spec/units/c_extractor/c_extractor_declarations_spec.rb +70 -0
- data/spec/units/c_extractor/c_extractor_functions_spec.rb +75 -1
- data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +158 -0
- data/spec/units/c_extractor/c_extractor_spec.rb +236 -6
- data/spec/units/ceedling/templateinator_golden_spec.rb +84 -0
- data/spec/units/ceedling/templateinator_spec.rb +188 -0
- data/spec/units/config/configurator_builder_spec.rb +444 -0
- data/spec/units/config/configurator_plugins_spec.rb +160 -0
- data/spec/units/config/configurator_setup_spec.rb +706 -6
- data/spec/units/config/configurator_spec.rb +952 -0
- data/spec/units/config/configurator_validator_spec.rb +259 -0
- data/spec/units/config/line_marker_suppressors_spec.rb +89 -0
- data/spec/units/config_matchinator_spec.rb +103 -0
- data/spec/units/defineinator_spec.rb +158 -0
- data/spec/units/dependencies/dependency_cache_store_spec.rb +364 -0
- data/spec/units/dependencies/dependency_debug_tree_spec.rb +189 -0
- data/spec/units/dependencies/dependency_differ_spec.rb +139 -0
- data/spec/units/dependencies/dependency_hasher_spec.rb +141 -0
- data/spec/units/dependencies/dependency_path_normalizer_spec.rb +111 -0
- data/spec/units/dependencies/dependency_tracker_spec.rb +905 -0
- data/spec/units/dependencies/dependinator_spec.rb +99 -0
- data/spec/units/dependencies/gcc_dependency_parser_spec.rb +152 -0
- data/spec/units/encodinator_spec.rb +92 -0
- data/spec/units/file_finder_helper_spec.rb +99 -15
- data/spec/units/file_finder_spec.rb +495 -0
- data/spec/units/file_path_collection_utils_spec.rb +9 -0
- data/spec/units/file_path_utils_spec.rb +736 -0
- data/spec/units/file_wrapper_spec.rb +447 -0
- data/spec/units/filename_extension_spec.rb +120 -0
- data/spec/units/flaginator_spec.rb +114 -0
- data/spec/units/generators/generator_helper_spec.rb +113 -0
- data/spec/units/generators/generator_mocks_spec.rb +131 -0
- data/spec/units/generators/generator_partials_spec.rb +336 -160
- data/spec/units/generators/generator_spec.rb +317 -0
- data/spec/units/generators/generator_test_results_backtrace_spec.rb +169 -9
- data/spec/units/generators/generator_test_results_sanity_checker_spec.rb +14 -6
- data/spec/units/generators/generator_test_results_spec.rb +65 -8
- data/spec/units/generators/generator_test_runner_spec.rb +1 -1
- data/spec/units/includes/include_factory_spec.rb +53 -0
- data/spec/units/includes/include_pathinator_spec.rb +269 -0
- data/spec/units/includes/include_spec.rb +8 -4
- data/spec/units/includes/includes_spec.rb +326 -18
- data/spec/units/mock_locator_spec.rb +74 -0
- data/spec/units/parsing_parcels_spec.rb +65 -0
- data/spec/units/partials/partializer_config_spec.rb +284 -18
- data/spec/units/partials/partializer_helper_spec.rb +122 -0
- data/spec/units/partials/partializer_spec.rb +346 -71
- data/spec/units/partials/partializer_utils_spec.rb +4 -4
- data/spec/units/partials_manager_spec.rb +539 -0
- data/spec/units/path_matcher_spec.rb +193 -0
- data/spec/units/path_mirror_spec.rb +103 -0
- data/spec/units/plugin_manager_spec.rb +77 -0
- data/spec/units/plugin_reportinator_spec.rb +78 -3
- data/spec/units/plugins/bullseye_spec.rb +1068 -0
- data/spec/units/plugins/command_hooks_spec.rb +157 -0
- data/spec/units/plugins/compile_commands_json_db_spec.rb +145 -0
- data/spec/units/plugins/console_reportinator_spec.rb +370 -0
- data/spec/units/plugins/cppcheck_spec.rb +330 -4
- data/spec/units/plugins/cppunit_tests_reporter_spec.rb +118 -0
- data/spec/units/plugins/dependencies_spec.rb +295 -0
- data/spec/units/plugins/dependency_commands_spec.rb +83 -0
- data/spec/units/plugins/dependency_environment_spec.rb +64 -0
- data/spec/units/plugins/dependency_spec_spec.rb +170 -0
- data/spec/units/plugins/gcov_reportinator_spec.rb +272 -0
- data/spec/units/plugins/gcov_spec.rb +521 -0
- data/spec/units/plugins/gcovr_reportinator_spec.rb +795 -0
- data/spec/units/plugins/gtestlike_report_spec.rb +363 -0
- data/spec/units/plugins/html_tests_reporter_spec.rb +158 -0
- data/spec/units/plugins/ide_report_lines_spec.rb +229 -0
- data/spec/units/plugins/json_tests_reporter_spec.rb +87 -0
- data/spec/units/plugins/junit_tests_reporter_spec.rb +237 -0
- data/spec/units/plugins/module_generator_options_spec.rb +185 -0
- data/spec/units/plugins/module_generator_project_spec.rb +55 -0
- data/spec/units/plugins/module_generator_request_spec.rb +107 -0
- data/spec/units/plugins/module_generator_spec.rb +214 -0
- data/spec/units/plugins/module_generator_test_file_spec.rb +102 -0
- data/spec/units/plugins/module_generator_unity_spec.rb +37 -0
- data/spec/units/plugins/report_build_warnings_log_spec.rb +199 -0
- data/spec/units/plugins/report_log_writer_plugin_spec.rb +94 -0
- data/spec/units/plugins/report_tests_gtestlike_stdout_spec.rb +274 -0
- data/spec/units/plugins/report_tests_ide_stdout_spec.rb +140 -0
- data/spec/units/plugins/report_tests_log_factory_spec.rb +210 -0
- data/spec/units/plugins/report_tests_pretty_stdout_spec.rb +83 -0
- data/spec/units/plugins/report_tests_raw_output_log_spec.rb +98 -0
- data/spec/units/plugins/report_tests_stdout_plugin_spec.rb +145 -0
- data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +121 -0
- data/spec/units/plugins/reportgenerator_reportinator_spec.rb +410 -0
- data/spec/units/plugins/sanitize_config_spec.rb +119 -0
- data/spec/units/plugins/sanitize_findings_spec.rb +69 -0
- data/spec/units/plugins/sanitize_records_spec.rb +114 -0
- data/spec/units/plugins/sanitize_reports_spec.rb +84 -0
- data/spec/units/plugins/sanitize_spec.rb +300 -0
- data/spec/units/plugins/tests_reporter_spec.rb +89 -0
- data/spec/units/plugins/valgrind_spec.rb +560 -0
- data/spec/units/plugins/warning_collector_spec.rb +185 -0
- data/spec/units/plugins/warning_reports_spec.rb +150 -0
- data/spec/units/preprocess/c_comment_scanner_spec.rb +17 -17
- data/spec/units/preprocess/c_preprocessor_conditionals_spec.rb +94 -0
- data/spec/units/preprocess/preprocessinator_bare_includes_extractor_spec.rb +73 -0
- data/spec/units/preprocess/preprocessinator_code_finder_spec.rb +35 -16
- data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +129 -48
- data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +292 -9
- data/spec/units/preprocess/preprocessinator_includes_handler_spec.rb +294 -16
- data/spec/units/preprocess/preprocessinator_line_marker_includes_extractor_spec.rb +356 -6
- data/spec/units/preprocess/preprocessinator_reconstructor_spec.rb +58 -4
- data/spec/units/preprocess/preprocessinator_spec.rb +693 -5
- data/spec/units/quote_include_isolator_spec.rb +176 -0
- data/spec/units/rake_app/rake_invocation_tracker_spec.rb +94 -0
- data/spec/units/rake_app/rake_task_registry_spec.rb +263 -0
- data/spec/units/rake_app/rake_utils_spec.rb +54 -0
- data/spec/units/rake_app/rake_wrapper_spec.rb +64 -0
- data/spec/units/rake_app/rakefile_component_resolver_spec.rb +182 -0
- data/spec/units/release_build_executor_spec.rb +404 -0
- data/spec/units/release_build_planner_spec.rb +144 -0
- data/spec/units/release_invoker_spec.rb +127 -0
- data/spec/units/reportinator_spec.rb +35 -0
- data/spec/units/ruby_expandinator_spec.rb +36 -0
- data/spec/units/standin_headerinator_spec.rb +168 -0
- data/spec/units/system_wrapper_spec.rb +16 -0
- data/spec/units/test_build_executor_spec.rb +1653 -8
- data/spec/units/test_build_planner_spec.rb +878 -0
- data/spec/units/test_build_setup_spec.rb +583 -0
- data/spec/units/test_context_extractor_spec.rb +51 -3
- data/spec/units/test_file_preprocessinator_spec.rb +206 -0
- data/spec/units/test_includes_extractinator_spec.rb +764 -0
- data/spec/units/test_invoker/objects_wiring_spec.rb +31 -0
- data/spec/units/test_invoker_spec.rb +147 -0
- data/spec/units/test_invoker_types_spec.rb +182 -0
- data/spec/units/test_pipeline_helpers_spec.rb +100 -0
- data/spec/units/test_pipeline_manager_spec.rb +415 -0
- data/spec/units/test_runner_generatinator_spec.rb +215 -0
- data/spec/units/test_runner_manager_spec.rb +70 -0
- data/spec/units/test_search_paths_spec.rb +84 -0
- data/spec/units/test_source_file_directive_resolver_spec.rb +239 -0
- data/spec/units/tool_executor_helper_spec.rb +1 -1
- data/spec/units/tool_executor_spec.rb +571 -2
- data/spec/units/tool_validator_spec.rb +303 -24
- data/spec/units/version_spec.rb +74 -0
- data/spec/units/yaml_wrapper_spec.rb +4 -1
- data/vendor/cmock/docs/CMock_Summary.md +11 -0
- data/vendor/cmock/lib/cmock_config.rb +1 -0
- data/vendor/cmock/lib/cmock_generator.rb +5 -1
- data/vendor/cmock/test/unit/cmock_generator_main_test.rb +31 -0
- data/vendor/cmock/vendor/unity/auto/generate_module.rb +4 -4
- data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +8 -2
- data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +2 -2
- data/vendor/cmock/vendor/unity/docs/UnityChangeLog.md +7 -0
- data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +4 -0
- data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
- data/vendor/cmock/vendor/unity/src/unity_internals.h +21 -7
- data/vendor/cmock/vendor/unity/test/Makefile +9 -2
- data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -0
- data/vendor/cmock/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
- data/vendor/cmock/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
- data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
- data/vendor/cmock/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
- data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +78 -0
- data/vendor/cmock/vendor/unity/test/tests/test_unity_test_summary.rb +58 -0
- data/vendor/diy/lib/diy/factory.rb +5 -4
- data/vendor/diy/lib/diy.rb +5 -4
- data/vendor/diy/sample_code/car.rb +5 -4
- data/vendor/diy/sample_code/chassis.rb +5 -4
- data/vendor/diy/sample_code/diy_example.rb +5 -4
- data/vendor/diy/sample_code/engine.rb +5 -4
- data/vendor/diy/sample_code/objects.yml +5 -4
- data/vendor/diy/test/constructor.rb +5 -4
- data/vendor/diy/test/diy_test.rb +5 -4
- data/vendor/diy/test/factory_test.rb +5 -4
- data/vendor/diy/test/files/broken_construction.yml +5 -4
- data/vendor/diy/test/files/cat/cat.rb +5 -4
- data/vendor/diy/test/files/cat/extra_conflict.yml +5 -4
- data/vendor/diy/test/files/cat/heritage.rb +5 -4
- data/vendor/diy/test/files/cat/needs_input.yml +5 -4
- data/vendor/diy/test/files/cat/the_cat_lineage.rb +5 -4
- data/vendor/diy/test/files/dog/dog_model.rb +5 -4
- data/vendor/diy/test/files/dog/dog_presenter.rb +5 -4
- data/vendor/diy/test/files/dog/dog_view.rb +5 -4
- data/vendor/diy/test/files/dog/file_resolver.rb +5 -4
- data/vendor/diy/test/files/dog/other_thing.rb +5 -4
- data/vendor/diy/test/files/dog/simple.yml +5 -4
- data/vendor/diy/test/files/donkey/foo/bar/qux.rb +5 -4
- data/vendor/diy/test/files/donkey/foo.rb +5 -4
- data/vendor/diy/test/files/factory/beef.rb +5 -4
- data/vendor/diy/test/files/factory/dog.rb +5 -4
- data/vendor/diy/test/files/factory/factory.yml +5 -4
- data/vendor/diy/test/files/factory/farm/llama.rb +5 -4
- data/vendor/diy/test/files/factory/farm/pork.rb +5 -4
- data/vendor/diy/test/files/factory/kitten.rb +5 -4
- data/vendor/diy/test/files/fud/objects.yml +5 -4
- data/vendor/diy/test/files/fud/toy.rb +5 -4
- data/vendor/diy/test/files/functions/attached_things_builder.rb +5 -4
- data/vendor/diy/test/files/functions/invalid_method.yml +5 -4
- data/vendor/diy/test/files/functions/method_extractor.rb +5 -4
- data/vendor/diy/test/files/functions/nonsingleton_objects.yml +5 -4
- data/vendor/diy/test/files/functions/objects.yml +5 -4
- data/vendor/diy/test/files/functions/thing.rb +5 -4
- data/vendor/diy/test/files/functions/thing_builder.rb +5 -4
- data/vendor/diy/test/files/functions/things_builder.rb +5 -4
- data/vendor/diy/test/files/gnu/objects.yml +5 -4
- data/vendor/diy/test/files/gnu/thinger.rb +5 -4
- data/vendor/diy/test/files/goat/base.rb +5 -4
- data/vendor/diy/test/files/goat/can.rb +5 -4
- data/vendor/diy/test/files/goat/goat.rb +5 -4
- data/vendor/diy/test/files/goat/objects.yml +5 -4
- data/vendor/diy/test/files/goat/paper.rb +5 -4
- data/vendor/diy/test/files/goat/plane.rb +5 -4
- data/vendor/diy/test/files/goat/shirt.rb +5 -4
- data/vendor/diy/test/files/goat/wings.rb +5 -4
- data/vendor/diy/test/files/horse/holder_thing.rb +5 -4
- data/vendor/diy/test/files/horse/objects.yml +5 -4
- data/vendor/diy/test/files/namespace/animal/bird.rb +5 -4
- data/vendor/diy/test/files/namespace/animal/cat.rb +5 -4
- data/vendor/diy/test/files/namespace/animal/reptile/hardshell/turtle.rb +5 -4
- data/vendor/diy/test/files/namespace/animal/reptile/lizard.rb +5 -4
- data/vendor/diy/test/files/namespace/bad_module_specified.yml +5 -4
- data/vendor/diy/test/files/namespace/class_name_combine.yml +5 -4
- data/vendor/diy/test/files/namespace/no_module_specified.yml +5 -4
- data/vendor/diy/test/files/namespace/objects.yml +5 -4
- data/vendor/diy/test/files/namespace/road.rb +5 -4
- data/vendor/diy/test/files/namespace/sky.rb +5 -4
- data/vendor/diy/test/files/namespace/subcontext.yml +5 -4
- data/vendor/diy/test/files/non_singleton/air.rb +5 -4
- data/vendor/diy/test/files/non_singleton/fat_cat.rb +5 -4
- data/vendor/diy/test/files/non_singleton/objects.yml +5 -4
- data/vendor/diy/test/files/non_singleton/pig.rb +5 -4
- data/vendor/diy/test/files/non_singleton/thread_spinner.rb +5 -4
- data/vendor/diy/test/files/non_singleton/tick.rb +5 -4
- data/vendor/diy/test/files/non_singleton/yard.rb +5 -4
- data/vendor/diy/test/files/yak/core_model.rb +5 -4
- data/vendor/diy/test/files/yak/core_presenter.rb +5 -4
- data/vendor/diy/test/files/yak/core_view.rb +5 -4
- data/vendor/diy/test/files/yak/data_source.rb +5 -4
- data/vendor/diy/test/files/yak/fringe_model.rb +5 -4
- data/vendor/diy/test/files/yak/fringe_presenter.rb +5 -4
- data/vendor/diy/test/files/yak/fringe_view.rb +5 -4
- data/vendor/diy/test/files/yak/giant_squid.rb +5 -4
- data/vendor/diy/test/files/yak/krill.rb +5 -4
- data/vendor/diy/test/files/yak/my_objects.yml +5 -4
- data/vendor/diy/test/files/yak/sub_sub_context_test.yml +5 -4
- data/vendor/diy/test/test_helper.rb +5 -4
- data/vendor/unity/auto/generate_module.rb +4 -4
- data/vendor/unity/auto/generate_test_runner.rb +5 -1
- data/vendor/unity/docs/UnityHelperScriptsGuide.md +9 -0
- data/vendor/unity/test/spec/generate_module_naming_spec.rb +38 -0
- data/vendor/unity/test/testdata/spi/MockConfig.h +19 -0
- data/vendor/unity/test/testdata/testRunnerGeneratorWithSameNamedMocks.c +42 -0
- data/vendor/unity/test/testdata/uart/MockConfig.h +19 -0
- data/vendor/unity/test/tests/test_generate_test_runner.rb +29 -0
- metadata +770 -287
- data/assets/tests_with_fallback_conditionals/src/conditional_module.c +0 -18
- data/bin/actions_wrapper.rb +0 -51
- data/docs/mkdocs/assets/images/ceedling-logo-circle.png +0 -0
- data/docs/mkdocs/assets/images/ceedling.svg +0 -90
- data/docs/mkdocs/assets/images/favicon.png +0 -0
- data/docs/mkdocs/assets/stylesheets/admonitions.css +0 -152
- data/docs/mkdocs/assets/stylesheets/fixes-local.css +0 -15
- data/docs/mkdocs/assets/stylesheets/styling.css +0 -102
- data/docs/mkdocs/configuration/environment-vars.md +0 -14
- data/docs/mkdocs/configuration/global-collections.md +0 -156
- data/docs/mkdocs/configuration/index.md +0 -75
- data/docs/mkdocs/configuration/loading.md +0 -89
- data/docs/mkdocs/configuration/mixins.md +0 -607
- data/docs/mkdocs/configuration/parallel-builds.md +0 -97
- data/docs/mkdocs/configuration/project-file.md +0 -216
- data/docs/mkdocs/configuration/reference/cexception.md +0 -35
- data/docs/mkdocs/configuration/reference/cmock.md +0 -106
- data/docs/mkdocs/configuration/reference/defines.md +0 -352
- data/docs/mkdocs/configuration/reference/environment.md +0 -55
- data/docs/mkdocs/configuration/reference/extension.md +0 -63
- data/docs/mkdocs/configuration/reference/files.md +0 -154
- data/docs/mkdocs/configuration/reference/flags.md +0 -296
- data/docs/mkdocs/configuration/reference/index.md +0 -176
- data/docs/mkdocs/configuration/reference/libraries.md +0 -82
- data/docs/mkdocs/configuration/reference/mixins.md +0 -24
- data/docs/mkdocs/configuration/reference/partials.md +0 -38
- data/docs/mkdocs/configuration/reference/paths.md +0 -276
- data/docs/mkdocs/configuration/reference/plugins.md +0 -60
- data/docs/mkdocs/configuration/reference/project.md +0 -333
- data/docs/mkdocs/configuration/reference/release-build.md +0 -62
- data/docs/mkdocs/configuration/reference/test-build.md +0 -55
- data/docs/mkdocs/configuration/reference/test-runner.md +0 -61
- data/docs/mkdocs/configuration/reference/tools.md +0 -457
- data/docs/mkdocs/configuration/reference/unity.md +0 -49
- data/docs/mkdocs/configuration/which-ceedling.md +0 -77
- data/docs/mkdocs/development/index.md +0 -61
- data/docs/mkdocs/development/plugins/configuration.md +0 -164
- data/docs/mkdocs/development/plugins/index.md +0 -84
- data/docs/mkdocs/development/plugins/plugin-subclass.md +0 -513
- data/docs/mkdocs/development/plugins/rake-tasks.md +0 -54
- data/docs/mkdocs/development/workflow.md +0 -284
- data/docs/mkdocs/getting-started/command-line.md +0 -477
- data/docs/mkdocs/getting-started/example-projects/cipher-quest.md +0 -65
- data/docs/mkdocs/getting-started/example-projects/index.md +0 -49
- data/docs/mkdocs/getting-started/example-projects/temp-sensor.md +0 -60
- data/docs/mkdocs/getting-started/example-projects/wondrous-forest.md +0 -45
- data/docs/mkdocs/getting-started/index.md +0 -41
- data/docs/mkdocs/getting-started/installation.md +0 -179
- data/docs/mkdocs/getting-started/quick-start.md +0 -86
- data/docs/mkdocs/help.md +0 -49
- data/docs/mkdocs/index.md +0 -222
- data/docs/mkdocs/overview/build-system.md +0 -115
- data/docs/mkdocs/overview/index.md +0 -29
- data/docs/mkdocs/overview/test-environments.md +0 -33
- data/docs/mkdocs/overview/tools-and-frameworks.md +0 -115
- data/docs/mkdocs/plugins/beep.md +0 -134
- data/docs/mkdocs/plugins/bullseye.md +0 -83
- data/docs/mkdocs/plugins/command-hooks.md +0 -268
- data/docs/mkdocs/plugins/compile-commands-json-db.md +0 -42
- data/docs/mkdocs/plugins/cppcheck.md +0 -377
- data/docs/mkdocs/plugins/dependencies.md +0 -310
- data/docs/mkdocs/plugins/fff.md +0 -247
- data/docs/mkdocs/plugins/gcov/examples.md +0 -92
- data/docs/mkdocs/plugins/gcov/gcovr.md +0 -526
- data/docs/mkdocs/plugins/gcov/index.md +0 -74
- data/docs/mkdocs/plugins/gcov/overview.md +0 -145
- data/docs/mkdocs/plugins/gcov/reportgenerator.md +0 -246
- data/docs/mkdocs/plugins/gcov/reporting.md +0 -147
- data/docs/mkdocs/plugins/gcov/setup.md +0 -232
- data/docs/mkdocs/plugins/gcov/tool-versions.md +0 -60
- data/docs/mkdocs/plugins/gcov/troubleshooting.md +0 -78
- data/docs/mkdocs/plugins/index.md +0 -261
- data/docs/mkdocs/plugins/module-generator.md +0 -267
- data/docs/mkdocs/plugins/report-build-warnings-log.md +0 -42
- data/docs/mkdocs/plugins/report-tests-gtestlike-stdout.md +0 -98
- data/docs/mkdocs/plugins/report-tests-ide-stdout.md +0 -63
- data/docs/mkdocs/plugins/report-tests-log-factory.md +0 -454
- data/docs/mkdocs/plugins/report-tests-pretty-stdout.md +0 -56
- data/docs/mkdocs/plugins/report-tests-raw-output-log.md +0 -52
- data/docs/mkdocs/plugins/report-tests-teamcity-stdout.md +0 -96
- data/docs/mkdocs/plugins/sample_html_report.png +0 -0
- data/docs/mkdocs/plugins/valgrind.md +0 -198
- data/docs/mkdocs/project/release-history.md +0 -61
- data/docs/mkdocs/project/upgrade.md +0 -85
- data/docs/mkdocs/reference/build-directives.md +0 -37
- data/docs/mkdocs/reference/command-line.md +0 -323
- data/docs/mkdocs/reference/environment-vars.md +0 -60
- data/docs/mkdocs/reference/gcov-plugin.md +0 -600
- data/docs/mkdocs/reference/global-collections.md +0 -160
- data/docs/mkdocs/reference/index.md +0 -65
- data/docs/mkdocs/reference/partials-macros.md +0 -79
- data/docs/mkdocs/reference/project-configuration.md +0 -46
- data/docs/mkdocs/snapshot/examples/cipher_quest/README.md +0 -210
- data/docs/mkdocs/snapshot/examples/temp_sensor/README.md +0 -283
- data/docs/mkdocs/snapshot/examples/wondrous_forest/README.md +0 -92
- data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +0 -32
- data/docs/mkdocs/snapshot/plugins/gcov/config/defaults_gcov.rb +0 -136
- data/docs/mkdocs/snapshot.yml +0 -20
- data/docs/mkdocs/testing-guide/build-directives.md +0 -153
- data/docs/mkdocs/testing-guide/conventions.md +0 -616
- data/docs/mkdocs/testing-guide/frameworks.md +0 -192
- data/docs/mkdocs/testing-guide/index.md +0 -80
- data/docs/mkdocs/testing-guide/partials/configuration.md +0 -67
- data/docs/mkdocs/testing-guide/partials/conventions.md +0 -68
- data/docs/mkdocs/testing-guide/partials/directives.md +0 -212
- data/docs/mkdocs/testing-guide/partials/example.md +0 -149
- data/docs/mkdocs/testing-guide/partials/index.md +0 -88
- data/docs/mkdocs/testing-guide/partials/overview.md +0 -81
- data/docs/mkdocs/testing-guide/partials/variables.md +0 -244
- data/docs/mkdocs/testing-guide/test-cases.md +0 -194
- data/docs/mkdocs/testing-guide/test-sample.md +0 -94
- data/docs/mkdocs/testing-guide/test-suite-anatomy.md +0 -58
- data/lib/ceedling/cacheinator.rb +0 -53
- data/lib/ceedling/cacheinator_helper.rb +0 -60
- data/lib/ceedling/dependinator.rb +0 -31
- data/lib/ceedling/makefile.rb +0 -52
- data/lib/ceedling/release_invoker.rb +0 -112
- data/lib/ceedling/rules_release.rake +0 -109
- data/lib/ceedling/rules_tests.rake +0 -40
- data/lib/ceedling/tasks_release.rake +0 -36
- data/plugins/fff/vendor/fff/Makefile +0 -10
- data/plugins/fff/vendor/fff/buildandtest +0 -15
- data/plugins/fff/vendor/fff/examples/Makefile +0 -7
- data/plugins/fff/vendor/fff/examples/driver_testing/Makefile +0 -64
- data/plugins/fff/vendor/fff/examples/driver_testing/driver.c +0 -32
- data/plugins/fff/vendor/fff/examples/driver_testing/driver.h +0 -21
- data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.cpp +0 -58
- data/plugins/fff/vendor/fff/examples/driver_testing/driver.test.fff.cpp +0 -70
- data/plugins/fff/vendor/fff/examples/driver_testing/hardware_abstraction.h +0 -25
- data/plugins/fff/vendor/fff/examples/driver_testing/registers.h +0 -23
- data/plugins/fff/vendor/fff/examples/embedded_ui/DISPLAY.h +0 -27
- data/plugins/fff/vendor/fff/examples/embedded_ui/Kata.txt +0 -25
- data/plugins/fff/vendor/fff/examples/embedded_ui/Makefile +0 -67
- data/plugins/fff/vendor/fff/examples/embedded_ui/SYSTEM.h +0 -31
- data/plugins/fff/vendor/fff/examples/embedded_ui/UI.c +0 -56
- data/plugins/fff/vendor/fff/examples/embedded_ui/UI.h +0 -22
- data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_ansic.c +0 -191
- data/plugins/fff/vendor/fff/examples/embedded_ui/UI_test_cpp.cpp +0 -144
- data/plugins/fff/vendor/fff/examples/embedded_ui/test_suite_template.c +0 -42
- data/plugins/fff/vendor/fff/gtest/Makefile +0 -22
- data/plugins/fff/vendor/fff/gtest/gtest-all.cc +0 -9118
- data/plugins/fff/vendor/fff/gtest/gtest-main.cc +0 -6
- data/plugins/fff/vendor/fff/gtest/gtest.h +0 -19547
- data/plugins/fff/vendor/fff/test/Makefile +0 -81
- data/plugins/fff/vendor/fff/test/c_test_framework.h +0 -25
- data/plugins/fff/vendor/fff/test/fff_test_c.c +0 -116
- data/plugins/fff/vendor/fff/test/fff_test_cpp.cpp +0 -53
- data/plugins/fff/vendor/fff/test/fff_test_global_c.c +0 -84
- data/plugins/fff/vendor/fff/test/fff_test_global_cpp.cpp +0 -31
- data/plugins/fff/vendor/fff/test/global_fakes.c +0 -21
- data/plugins/fff/vendor/fff/test/global_fakes.h +0 -47
- data/plugins/fff/vendor/fff/test/test_cases.include +0 -276
- data/plugins/report_tests_gtestlike_stdout/assets/template.erb +0 -83
- data/site-local/snapshot/assets/project.yml +0 -404
- data/spec/system/partials_types_header_spec.rb +0 -166
- data/spec/units/configurator_spec.rb +0 -232
- /data/assets/{ceedling → features/ceedling} +0 -0
- /data/assets/{ceedling.cmd → features/ceedling.cmd} +0 -0
- /data/assets/{default_gitignore → features/default_gitignore} +0 -0
- /data/assets/{broken_uncovered_file.c → fixtures/broken_uncovered_file.c} +0 -0
- /data/assets/{example_file.c → fixtures/example_file.c} +0 -0
- /data/assets/{example_file.h → fixtures/example_file.h} +0 -0
- /data/assets/{example_file_call.c → fixtures/example_file_call.c} +0 -0
- /data/assets/{example_file_call.h → fixtures/example_file_call.h} +0 -0
- /data/assets/{example_file_with_statics.c → fixtures/example_file_with_statics.c} +0 -0
- /data/assets/{example_file_with_stdio.c → fixtures/example_file_with_stdio.c} +0 -0
- /data/assets/{example_file_with_stdio.h → fixtures/example_file_with_stdio.h} +0 -0
- /data/assets/{fake_crash_test_fixture.rb → fixtures/fake_crash_test_fixture.rb} +0 -0
- /data/assets/{partial_all_module.h → fixtures/partial_all_module.h} +0 -0
- /data/assets/{run_with_ubsan.rb → fixtures/run_with_ubsan.rb} +0 -0
- /data/assets/{same_dir_pairing_module.c → fixtures/same_dir_pairing_module.c} +0 -0
- /data/assets/{same_dir_pairing_module.h → fixtures/same_dir_pairing_module.h} +0 -0
- /data/assets/{same_dir_pairing_module_func.h → fixtures/same_dir_pairing_module_func.h} +0 -0
- /data/assets/{same_dir_pairing_other.c → fixtures/same_dir_pairing_other.c} +0 -0
- /data/assets/{same_dir_pairing_other.h → fixtures/same_dir_pairing_other.h} +0 -0
- /data/assets/{test_example_file.c → fixtures/test_example_file.c} +0 -0
- /data/assets/{test_example_file_2.c → fixtures/test_example_file_2.c} +0 -0
- /data/assets/{test_example_file_source_include.c → fixtures/test_example_file_source_include.c} +0 -0
- /data/assets/{test_example_file_success.c → fixtures/test_example_file_success.c} +0 -0
- /data/assets/{test_example_file_unity_printf.c → fixtures/test_example_file_unity_printf.c} +0 -0
- /data/assets/{test_example_file_verbose.c → fixtures/test_example_file_verbose.c} +0 -0
- /data/assets/{test_example_file_with_mock.c → fixtures/test_example_file_with_mock.c} +0 -0
- /data/assets/{test_example_file_with_stdio.c → fixtures/test_example_file_with_stdio.c} +0 -0
- /data/assets/{test_example_with_parameterized_tests.c → fixtures/test_example_with_parameterized_tests.c} +0 -0
- /data/assets/{test_partial_all_module.c → fixtures/test_partial_all_module.c} +0 -0
- /data/assets/{test_same_dir_pairing.c → fixtures/test_same_dir_pairing.c} +0 -0
- /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_config.h +0 -0
- /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/feature_extra.h +0 -0
- /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/local_flag_extra.h +0 -0
- /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_extra.h +0 -0
- /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/nested_wrapper.h +0 -0
- /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/project_flag_extra.h +0 -0
- /data/assets/{tests_with_conditional_includes → fixtures/tests_with_conditional_includes}/src/widget_feature.h +0 -0
- /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.c +0 -0
- /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware.h +0 -0
- /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.c +0 -0
- /data/assets/{tests_with_defines → fixtures/tests_with_defines}/src/adc_hardware_configurator.h +0 -0
- /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware.c +0 -0
- /data/assets/{tests_with_defines → fixtures/tests_with_defines}/test/test_adc_hardware_special.c +0 -0
- /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.c +0 -0
- /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/src/unicoder.h +0 -0
- /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder.c +0 -0
- /data/assets/{tests_with_encoding → fixtures/tests_with_encoding}/test/test_unicoder_partial.c +0 -0
- /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/conditional_module.h +0 -0
- /data/assets/{tests_with_fallback_conditionals → fixtures/tests_with_fallback_conditionals}/src/optional_dep.h +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.c +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/blanks.h +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.c +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/counter.h +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.c +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/src/decorators.h +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_blanks.c +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_counter.c +0 -0
- /data/assets/{tests_with_partials_coverage → fixtures/tests_with_partials_coverage}/test/test_decorators.c +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.c +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareA.h +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.c +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareB.h +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.c +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardwareC.h +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorA.h +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorB.h +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/src/adc_hardware_configuratorC.h +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareA.c +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareB.c +0 -0
- /data/assets/{tests_with_preprocessing → fixtures/tests_with_preprocessing}/test/test_adc_hardwareC.c +0 -0
- /data/assets/{uncovered_example_file.c → fixtures/uncovered_example_file.c} +0 -0
- /data/plugins/bullseye/assets/{template.erb → coverage.template} +0 -0
|
@@ -89,10 +89,34 @@
|
|
|
89
89
|
</div>
|
|
90
90
|
<div data-md-component="announce">
|
|
91
91
|
|
|
92
|
+
<aside class="md-banner">
|
|
93
|
+
<div class="md-banner__inner md-grid md-typeset">
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
</aside>
|
|
101
|
+
|
|
92
102
|
</div>
|
|
93
103
|
|
|
94
104
|
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
|
|
95
105
|
|
|
106
|
+
<aside class="md-banner md-banner--warning">
|
|
107
|
+
<div class="md-banner__inner md-grid md-typeset">
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
You are not viewing the latest version.
|
|
111
|
+
<a href="../..">
|
|
112
|
+
<strong>Click here to go to latest.</strong>
|
|
113
|
+
</a>
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
</div>
|
|
117
|
+
<script>var el=document.querySelector("[data-md-component=outdated]"),base=new URL(".."),outdated=__md_get("__outdated",sessionStorage,base);!0===outdated&&el&&(el.hidden=!1)</script>
|
|
118
|
+
</aside>
|
|
119
|
+
|
|
96
120
|
</div>
|
|
97
121
|
|
|
98
122
|
|
|
@@ -332,7 +356,7 @@
|
|
|
332
356
|
|
|
333
357
|
|
|
334
358
|
<li class="md-tabs__item">
|
|
335
|
-
<a href="../project/
|
|
359
|
+
<a href="../project/index.html" class="md-tabs__link">
|
|
336
360
|
|
|
337
361
|
|
|
338
362
|
|
|
@@ -641,6 +665,8 @@
|
|
|
641
665
|
|
|
642
666
|
|
|
643
667
|
|
|
668
|
+
|
|
669
|
+
|
|
644
670
|
|
|
645
671
|
|
|
646
672
|
|
|
@@ -788,6 +814,34 @@
|
|
|
788
814
|
|
|
789
815
|
|
|
790
816
|
|
|
817
|
+
<li class="md-nav__item">
|
|
818
|
+
<a href="../getting-started/builds.html" class="md-nav__link">
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
<span class="md-ellipsis">
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
Builds
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
</span>
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
</a>
|
|
834
|
+
</li>
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
791
845
|
|
|
792
846
|
|
|
793
847
|
|
|
@@ -814,7 +868,7 @@
|
|
|
814
868
|
|
|
815
869
|
|
|
816
870
|
|
|
817
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
871
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
|
|
818
872
|
|
|
819
873
|
|
|
820
874
|
<div class="md-nav__link md-nav__container">
|
|
@@ -836,14 +890,14 @@
|
|
|
836
890
|
</a>
|
|
837
891
|
|
|
838
892
|
|
|
839
|
-
<label class="md-nav__link " for="
|
|
893
|
+
<label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
|
|
840
894
|
<span class="md-nav__icon md-icon"></span>
|
|
841
895
|
</label>
|
|
842
896
|
|
|
843
897
|
</div>
|
|
844
898
|
|
|
845
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
846
|
-
<label class="md-nav__title" for="
|
|
899
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
|
|
900
|
+
<label class="md-nav__title" for="__nav_3_6">
|
|
847
901
|
<span class="md-nav__icon md-icon"></span>
|
|
848
902
|
|
|
849
903
|
|
|
@@ -1199,6 +1253,45 @@
|
|
|
1199
1253
|
</span>
|
|
1200
1254
|
</a>
|
|
1201
1255
|
|
|
1256
|
+
</li>
|
|
1257
|
+
|
|
1258
|
+
<li class="md-nav__item">
|
|
1259
|
+
<a href="#distinguishing-same-named-files" class="md-nav__link">
|
|
1260
|
+
<span class="md-ellipsis">
|
|
1261
|
+
|
|
1262
|
+
Distinguishing same-named files
|
|
1263
|
+
|
|
1264
|
+
</span>
|
|
1265
|
+
</a>
|
|
1266
|
+
|
|
1267
|
+
<nav class="md-nav" aria-label="Distinguishing same-named files">
|
|
1268
|
+
<ul class="md-nav__list">
|
|
1269
|
+
|
|
1270
|
+
<li class="md-nav__item">
|
|
1271
|
+
<a href="#header-source-files" class="md-nav__link">
|
|
1272
|
+
<span class="md-ellipsis">
|
|
1273
|
+
|
|
1274
|
+
Header / source files
|
|
1275
|
+
|
|
1276
|
+
</span>
|
|
1277
|
+
</a>
|
|
1278
|
+
|
|
1279
|
+
</li>
|
|
1280
|
+
|
|
1281
|
+
<li class="md-nav__item">
|
|
1282
|
+
<a href="#test-files-cli-test-tasks" class="md-nav__link">
|
|
1283
|
+
<span class="md-ellipsis">
|
|
1284
|
+
|
|
1285
|
+
Test files (CLI test tasks)
|
|
1286
|
+
|
|
1287
|
+
</span>
|
|
1288
|
+
</a>
|
|
1289
|
+
|
|
1290
|
+
</li>
|
|
1291
|
+
|
|
1292
|
+
</ul>
|
|
1293
|
+
</nav>
|
|
1294
|
+
|
|
1202
1295
|
</li>
|
|
1203
1296
|
|
|
1204
1297
|
<li class="md-nav__item">
|
|
@@ -1305,6 +1398,50 @@
|
|
|
1305
1398
|
</span>
|
|
1306
1399
|
</a>
|
|
1307
1400
|
|
|
1401
|
+
</li>
|
|
1402
|
+
|
|
1403
|
+
<li class="md-nav__item">
|
|
1404
|
+
<a href="#preprocessing-for-include-directives" class="md-nav__link">
|
|
1405
|
+
<span class="md-ellipsis">
|
|
1406
|
+
|
|
1407
|
+
Preprocessing for include directives
|
|
1408
|
+
|
|
1409
|
+
</span>
|
|
1410
|
+
</a>
|
|
1411
|
+
|
|
1412
|
+
</li>
|
|
1413
|
+
|
|
1414
|
+
<li class="md-nav__item">
|
|
1415
|
+
<a href="#preprocessing-for-tests-and-mocks" class="md-nav__link">
|
|
1416
|
+
<span class="md-ellipsis">
|
|
1417
|
+
|
|
1418
|
+
Preprocessing for tests and mocks
|
|
1419
|
+
|
|
1420
|
+
</span>
|
|
1421
|
+
</a>
|
|
1422
|
+
|
|
1423
|
+
</li>
|
|
1424
|
+
|
|
1425
|
+
<li class="md-nav__item">
|
|
1426
|
+
<a href="#preprocessing-for-partials" class="md-nav__link">
|
|
1427
|
+
<span class="md-ellipsis">
|
|
1428
|
+
|
|
1429
|
+
Preprocessing for Partials
|
|
1430
|
+
|
|
1431
|
+
</span>
|
|
1432
|
+
</a>
|
|
1433
|
+
|
|
1434
|
+
</li>
|
|
1435
|
+
|
|
1436
|
+
<li class="md-nav__item">
|
|
1437
|
+
<a href="#fallback-test-build-preprocessing" class="md-nav__link">
|
|
1438
|
+
<span class="md-ellipsis">
|
|
1439
|
+
|
|
1440
|
+
Fallback test build preprocessing
|
|
1441
|
+
|
|
1442
|
+
</span>
|
|
1443
|
+
</a>
|
|
1444
|
+
|
|
1308
1445
|
</li>
|
|
1309
1446
|
|
|
1310
1447
|
<li class="md-nav__item">
|
|
@@ -1404,23 +1541,6 @@
|
|
|
1404
1541
|
</span>
|
|
1405
1542
|
</a>
|
|
1406
1543
|
|
|
1407
|
-
<nav class="md-nav" aria-label="Dependency tracking">
|
|
1408
|
-
<ul class="md-nav__list">
|
|
1409
|
-
|
|
1410
|
-
<li class="md-nav__item">
|
|
1411
|
-
<a href="#not-so-smart-rebuilds" class="md-nav__link">
|
|
1412
|
-
<span class="md-ellipsis">
|
|
1413
|
-
|
|
1414
|
-
(Not so) smart rebuilds
|
|
1415
|
-
|
|
1416
|
-
</span>
|
|
1417
|
-
</a>
|
|
1418
|
-
|
|
1419
|
-
</li>
|
|
1420
|
-
|
|
1421
|
-
</ul>
|
|
1422
|
-
</nav>
|
|
1423
|
-
|
|
1424
1544
|
</li>
|
|
1425
1545
|
|
|
1426
1546
|
<li class="md-nav__item">
|
|
@@ -2759,6 +2879,8 @@
|
|
|
2759
2879
|
|
|
2760
2880
|
|
|
2761
2881
|
|
|
2882
|
+
|
|
2883
|
+
|
|
2762
2884
|
|
|
2763
2885
|
|
|
2764
2886
|
|
|
@@ -3390,8 +3512,61 @@
|
|
|
3390
3512
|
|
|
3391
3513
|
|
|
3392
3514
|
<li class="md-nav__item">
|
|
3393
|
-
<a href="../plugins/
|
|
3515
|
+
<a href="../plugins/sanitize.html" class="md-nav__link">
|
|
3516
|
+
|
|
3517
|
+
|
|
3518
|
+
|
|
3519
|
+
<span class="md-ellipsis">
|
|
3520
|
+
|
|
3521
|
+
|
|
3522
|
+
Sanitize (ASan, UBSan & Leaks)
|
|
3523
|
+
|
|
3524
|
+
|
|
3525
|
+
|
|
3526
|
+
</span>
|
|
3527
|
+
|
|
3528
|
+
|
|
3529
|
+
|
|
3530
|
+
</a>
|
|
3531
|
+
</li>
|
|
3532
|
+
|
|
3533
|
+
|
|
3534
|
+
|
|
3535
|
+
|
|
3536
|
+
|
|
3537
|
+
|
|
3538
|
+
|
|
3539
|
+
|
|
3540
|
+
|
|
3541
|
+
|
|
3542
|
+
|
|
3543
|
+
|
|
3544
|
+
|
|
3394
3545
|
|
|
3546
|
+
|
|
3547
|
+
|
|
3548
|
+
|
|
3549
|
+
|
|
3550
|
+
|
|
3551
|
+
|
|
3552
|
+
|
|
3553
|
+
|
|
3554
|
+
|
|
3555
|
+
|
|
3556
|
+
|
|
3557
|
+
|
|
3558
|
+
|
|
3559
|
+
|
|
3560
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
3561
|
+
|
|
3562
|
+
|
|
3563
|
+
|
|
3564
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_13" >
|
|
3565
|
+
|
|
3566
|
+
|
|
3567
|
+
<div class="md-nav__link md-nav__container">
|
|
3568
|
+
<a href="../plugins/bullseye/index.html" class="md-nav__link ">
|
|
3569
|
+
|
|
3395
3570
|
|
|
3396
3571
|
|
|
3397
3572
|
<span class="md-ellipsis">
|
|
@@ -3401,6 +3576,50 @@
|
|
|
3401
3576
|
|
|
3402
3577
|
|
|
3403
3578
|
|
|
3579
|
+
</span>
|
|
3580
|
+
|
|
3581
|
+
|
|
3582
|
+
|
|
3583
|
+
</a>
|
|
3584
|
+
|
|
3585
|
+
|
|
3586
|
+
<label class="md-nav__link " for="__nav_6_13" id="__nav_6_13_label" tabindex="0">
|
|
3587
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3588
|
+
</label>
|
|
3589
|
+
|
|
3590
|
+
</div>
|
|
3591
|
+
|
|
3592
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_13_label" aria-expanded="false">
|
|
3593
|
+
<label class="md-nav__title" for="__nav_6_13">
|
|
3594
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3595
|
+
|
|
3596
|
+
|
|
3597
|
+
Bullseye (Coverage)
|
|
3598
|
+
|
|
3599
|
+
|
|
3600
|
+
</label>
|
|
3601
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
3602
|
+
|
|
3603
|
+
|
|
3604
|
+
|
|
3605
|
+
|
|
3606
|
+
|
|
3607
|
+
|
|
3608
|
+
|
|
3609
|
+
|
|
3610
|
+
|
|
3611
|
+
<li class="md-nav__item">
|
|
3612
|
+
<a href="../plugins/bullseye/licensing.html" class="md-nav__link">
|
|
3613
|
+
|
|
3614
|
+
|
|
3615
|
+
|
|
3616
|
+
<span class="md-ellipsis">
|
|
3617
|
+
|
|
3618
|
+
|
|
3619
|
+
Licensing
|
|
3620
|
+
|
|
3621
|
+
|
|
3622
|
+
|
|
3404
3623
|
</span>
|
|
3405
3624
|
|
|
3406
3625
|
|
|
@@ -3411,6 +3630,14 @@
|
|
|
3411
3630
|
|
|
3412
3631
|
|
|
3413
3632
|
|
|
3633
|
+
</ul>
|
|
3634
|
+
</nav>
|
|
3635
|
+
|
|
3636
|
+
</li>
|
|
3637
|
+
|
|
3638
|
+
|
|
3639
|
+
|
|
3640
|
+
|
|
3414
3641
|
|
|
3415
3642
|
|
|
3416
3643
|
|
|
@@ -3880,6 +4107,12 @@
|
|
|
3880
4107
|
|
|
3881
4108
|
|
|
3882
4109
|
|
|
4110
|
+
|
|
4111
|
+
|
|
4112
|
+
|
|
4113
|
+
|
|
4114
|
+
|
|
4115
|
+
|
|
3883
4116
|
|
|
3884
4117
|
|
|
3885
4118
|
|
|
@@ -3899,8 +4132,9 @@
|
|
|
3899
4132
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
|
3900
4133
|
|
|
3901
4134
|
|
|
3902
|
-
<
|
|
3903
|
-
|
|
4135
|
+
<div class="md-nav__link md-nav__container">
|
|
4136
|
+
<a href="../project/index.html" class="md-nav__link ">
|
|
4137
|
+
|
|
3904
4138
|
|
|
3905
4139
|
|
|
3906
4140
|
<span class="md-ellipsis">
|
|
@@ -3914,8 +4148,14 @@
|
|
|
3914
4148
|
|
|
3915
4149
|
|
|
3916
4150
|
|
|
3917
|
-
|
|
3918
|
-
|
|
4151
|
+
</a>
|
|
4152
|
+
|
|
4153
|
+
|
|
4154
|
+
<label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0">
|
|
4155
|
+
<span class="md-nav__icon md-icon"></span>
|
|
4156
|
+
</label>
|
|
4157
|
+
|
|
4158
|
+
</div>
|
|
3919
4159
|
|
|
3920
4160
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
|
|
3921
4161
|
<label class="md-nav__title" for="__nav_8">
|
|
@@ -3929,6 +4169,8 @@
|
|
|
3929
4169
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
3930
4170
|
|
|
3931
4171
|
|
|
4172
|
+
|
|
4173
|
+
|
|
3932
4174
|
|
|
3933
4175
|
|
|
3934
4176
|
|
|
@@ -3962,6 +4204,34 @@
|
|
|
3962
4204
|
|
|
3963
4205
|
|
|
3964
4206
|
|
|
4207
|
+
<li class="md-nav__item">
|
|
4208
|
+
<a href="../project/sbom.html" class="md-nav__link">
|
|
4209
|
+
|
|
4210
|
+
|
|
4211
|
+
|
|
4212
|
+
<span class="md-ellipsis">
|
|
4213
|
+
|
|
4214
|
+
|
|
4215
|
+
Software Bill of Materials
|
|
4216
|
+
|
|
4217
|
+
|
|
4218
|
+
|
|
4219
|
+
</span>
|
|
4220
|
+
|
|
4221
|
+
|
|
4222
|
+
|
|
4223
|
+
</a>
|
|
4224
|
+
</li>
|
|
4225
|
+
|
|
4226
|
+
|
|
4227
|
+
|
|
4228
|
+
|
|
4229
|
+
|
|
4230
|
+
|
|
4231
|
+
|
|
4232
|
+
|
|
4233
|
+
|
|
4234
|
+
|
|
3965
4235
|
<li class="md-nav__item">
|
|
3966
4236
|
<a href="../project/upgrade.html" class="md-nav__link">
|
|
3967
4237
|
|
|
@@ -4033,6 +4303,8 @@
|
|
|
4033
4303
|
|
|
4034
4304
|
|
|
4035
4305
|
|
|
4306
|
+
|
|
4307
|
+
|
|
4036
4308
|
|
|
4037
4309
|
|
|
4038
4310
|
|
|
@@ -4123,6 +4395,34 @@
|
|
|
4123
4395
|
|
|
4124
4396
|
|
|
4125
4397
|
|
|
4398
|
+
<li class="md-nav__item">
|
|
4399
|
+
<a href="../development/releases.html" class="md-nav__link">
|
|
4400
|
+
|
|
4401
|
+
|
|
4402
|
+
|
|
4403
|
+
<span class="md-ellipsis">
|
|
4404
|
+
|
|
4405
|
+
|
|
4406
|
+
Branching & Releases
|
|
4407
|
+
|
|
4408
|
+
|
|
4409
|
+
|
|
4410
|
+
</span>
|
|
4411
|
+
|
|
4412
|
+
|
|
4413
|
+
|
|
4414
|
+
</a>
|
|
4415
|
+
</li>
|
|
4416
|
+
|
|
4417
|
+
|
|
4418
|
+
|
|
4419
|
+
|
|
4420
|
+
|
|
4421
|
+
|
|
4422
|
+
|
|
4423
|
+
|
|
4424
|
+
|
|
4425
|
+
|
|
4126
4426
|
|
|
4127
4427
|
|
|
4128
4428
|
|
|
@@ -4149,7 +4449,7 @@
|
|
|
4149
4449
|
|
|
4150
4450
|
|
|
4151
4451
|
|
|
4152
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
4452
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_4" >
|
|
4153
4453
|
|
|
4154
4454
|
|
|
4155
4455
|
<div class="md-nav__link md-nav__container">
|
|
@@ -4171,14 +4471,14 @@
|
|
|
4171
4471
|
</a>
|
|
4172
4472
|
|
|
4173
4473
|
|
|
4174
|
-
<label class="md-nav__link " for="
|
|
4474
|
+
<label class="md-nav__link " for="__nav_10_4" id="__nav_10_4_label" tabindex="0">
|
|
4175
4475
|
<span class="md-nav__icon md-icon"></span>
|
|
4176
4476
|
</label>
|
|
4177
4477
|
|
|
4178
4478
|
</div>
|
|
4179
4479
|
|
|
4180
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
4181
|
-
<label class="md-nav__title" for="
|
|
4480
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_4_label" aria-expanded="false">
|
|
4481
|
+
<label class="md-nav__title" for="__nav_10_4">
|
|
4182
4482
|
<span class="md-nav__icon md-icon"></span>
|
|
4183
4483
|
|
|
4184
4484
|
|
|
@@ -4324,6 +4624,45 @@
|
|
|
4324
4624
|
</span>
|
|
4325
4625
|
</a>
|
|
4326
4626
|
|
|
4627
|
+
</li>
|
|
4628
|
+
|
|
4629
|
+
<li class="md-nav__item">
|
|
4630
|
+
<a href="#distinguishing-same-named-files" class="md-nav__link">
|
|
4631
|
+
<span class="md-ellipsis">
|
|
4632
|
+
|
|
4633
|
+
Distinguishing same-named files
|
|
4634
|
+
|
|
4635
|
+
</span>
|
|
4636
|
+
</a>
|
|
4637
|
+
|
|
4638
|
+
<nav class="md-nav" aria-label="Distinguishing same-named files">
|
|
4639
|
+
<ul class="md-nav__list">
|
|
4640
|
+
|
|
4641
|
+
<li class="md-nav__item">
|
|
4642
|
+
<a href="#header-source-files" class="md-nav__link">
|
|
4643
|
+
<span class="md-ellipsis">
|
|
4644
|
+
|
|
4645
|
+
Header / source files
|
|
4646
|
+
|
|
4647
|
+
</span>
|
|
4648
|
+
</a>
|
|
4649
|
+
|
|
4650
|
+
</li>
|
|
4651
|
+
|
|
4652
|
+
<li class="md-nav__item">
|
|
4653
|
+
<a href="#test-files-cli-test-tasks" class="md-nav__link">
|
|
4654
|
+
<span class="md-ellipsis">
|
|
4655
|
+
|
|
4656
|
+
Test files (CLI test tasks)
|
|
4657
|
+
|
|
4658
|
+
</span>
|
|
4659
|
+
</a>
|
|
4660
|
+
|
|
4661
|
+
</li>
|
|
4662
|
+
|
|
4663
|
+
</ul>
|
|
4664
|
+
</nav>
|
|
4665
|
+
|
|
4327
4666
|
</li>
|
|
4328
4667
|
|
|
4329
4668
|
<li class="md-nav__item">
|
|
@@ -4430,6 +4769,50 @@
|
|
|
4430
4769
|
</span>
|
|
4431
4770
|
</a>
|
|
4432
4771
|
|
|
4772
|
+
</li>
|
|
4773
|
+
|
|
4774
|
+
<li class="md-nav__item">
|
|
4775
|
+
<a href="#preprocessing-for-include-directives" class="md-nav__link">
|
|
4776
|
+
<span class="md-ellipsis">
|
|
4777
|
+
|
|
4778
|
+
Preprocessing for include directives
|
|
4779
|
+
|
|
4780
|
+
</span>
|
|
4781
|
+
</a>
|
|
4782
|
+
|
|
4783
|
+
</li>
|
|
4784
|
+
|
|
4785
|
+
<li class="md-nav__item">
|
|
4786
|
+
<a href="#preprocessing-for-tests-and-mocks" class="md-nav__link">
|
|
4787
|
+
<span class="md-ellipsis">
|
|
4788
|
+
|
|
4789
|
+
Preprocessing for tests and mocks
|
|
4790
|
+
|
|
4791
|
+
</span>
|
|
4792
|
+
</a>
|
|
4793
|
+
|
|
4794
|
+
</li>
|
|
4795
|
+
|
|
4796
|
+
<li class="md-nav__item">
|
|
4797
|
+
<a href="#preprocessing-for-partials" class="md-nav__link">
|
|
4798
|
+
<span class="md-ellipsis">
|
|
4799
|
+
|
|
4800
|
+
Preprocessing for Partials
|
|
4801
|
+
|
|
4802
|
+
</span>
|
|
4803
|
+
</a>
|
|
4804
|
+
|
|
4805
|
+
</li>
|
|
4806
|
+
|
|
4807
|
+
<li class="md-nav__item">
|
|
4808
|
+
<a href="#fallback-test-build-preprocessing" class="md-nav__link">
|
|
4809
|
+
<span class="md-ellipsis">
|
|
4810
|
+
|
|
4811
|
+
Fallback test build preprocessing
|
|
4812
|
+
|
|
4813
|
+
</span>
|
|
4814
|
+
</a>
|
|
4815
|
+
|
|
4433
4816
|
</li>
|
|
4434
4817
|
|
|
4435
4818
|
<li class="md-nav__item">
|
|
@@ -4529,23 +4912,6 @@
|
|
|
4529
4912
|
</span>
|
|
4530
4913
|
</a>
|
|
4531
4914
|
|
|
4532
|
-
<nav class="md-nav" aria-label="Dependency tracking">
|
|
4533
|
-
<ul class="md-nav__list">
|
|
4534
|
-
|
|
4535
|
-
<li class="md-nav__item">
|
|
4536
|
-
<a href="#not-so-smart-rebuilds" class="md-nav__link">
|
|
4537
|
-
<span class="md-ellipsis">
|
|
4538
|
-
|
|
4539
|
-
(Not so) smart rebuilds
|
|
4540
|
-
|
|
4541
|
-
</span>
|
|
4542
|
-
</a>
|
|
4543
|
-
|
|
4544
|
-
</li>
|
|
4545
|
-
|
|
4546
|
-
</ul>
|
|
4547
|
-
</nav>
|
|
4548
|
-
|
|
4549
4915
|
</li>
|
|
4550
4916
|
|
|
4551
4917
|
<li class="md-nav__item">
|
|
@@ -4678,10 +5044,10 @@
|
|
|
4678
5044
|
|
|
4679
5045
|
|
|
4680
5046
|
<h1 id="conventions-behaviors">Conventions & Behaviors</h1>
|
|
4681
|
-
<p><strong>How to get things done and understand what
|
|
5047
|
+
<p><strong>How to get things done and understand what’s happening during builds</strong></p>
|
|
4682
5048
|
<h2 id="directory-structure-filenames">Directory structure & filenames</h2>
|
|
4683
|
-
<p>Much of Ceedling
|
|
4684
|
-
matching certain patterns inside the paths it
|
|
5049
|
+
<p>Much of Ceedling’s functionality is driven by collecting files
|
|
5050
|
+
matching certain patterns inside the paths it’s configured
|
|
4685
5051
|
to search. See the documentation for the <code>:extension</code> section
|
|
4686
5052
|
of your configuration file (found in the <a href="../configuration/index.html">configuration reference</a>) to
|
|
4687
5053
|
configure the file extensions Ceedling uses to match and collect
|
|
@@ -4689,14 +5055,70 @@ files. Test file naming is covered later in this section.</p>
|
|
|
4689
5055
|
<p>Test files and source files must be segregated by directories.
|
|
4690
5056
|
Any directory structure will do. Tests can be held in subdirectories
|
|
4691
5057
|
within source directories, or tests and source directories
|
|
4692
|
-
can be wholly separated at the top of your project
|
|
5058
|
+
can be wholly separated at the top of your project’s directory
|
|
4693
5059
|
tree.</p>
|
|
5060
|
+
<h2 id="distinguishing-same-named-files">Distinguishing same-named files</h2>
|
|
5061
|
+
<h3 id="header-source-files">Header / source files</h3>
|
|
5062
|
+
<p>Ceedling distinguishes files by their full relative path, not just their
|
|
5063
|
+
filename. A project may have, for example, both <code>src/drivers/uart.c</code> and
|
|
5064
|
+
<code>src/sensors/uart.c</code> without one hiding or colliding with the other.</p>
|
|
5065
|
+
<p>Distinguishing files is mostly an issue in test builds. If two files share
|
|
5066
|
+
a name without enough path to distinguish them, Ceedling resolves the reference
|
|
5067
|
+
to the first match among the file collection. File collections are ordered per
|
|
5068
|
+
your project configuration (<code>:paths</code>). The ordering of collected files is
|
|
5069
|
+
identical to the search path ordering provided to the compiler from the same
|
|
5070
|
+
<code>:paths</code> configuration plus any use of
|
|
5071
|
+
<a href="build-directives.html#test_include_path"><code>TEST_INCLUDE_PATH()</code></a> directives in
|
|
5072
|
+
a test file. When Ceedling finds more than one reference, it uses the first
|
|
5073
|
+
in the ordered file list but logs an informational notice naming multi-file
|
|
5074
|
+
matches, so the choice is not silent.</p>
|
|
5075
|
+
<p>If Ceedling uses the wrong match for lack of path information, your test build
|
|
5076
|
+
fails downstream with an ordinary compilation error indirectly revealing the
|
|
5077
|
+
issue. Add enough path at the point of reference to select the file you actually
|
|
5078
|
+
meant.</p>
|
|
5079
|
+
<ul>
|
|
5080
|
+
<li>Use paths in <code>#include</code> directives in your test files to distinguish header
|
|
5081
|
+
files of the same name (mocks are distiguished by the same filepath as the
|
|
5082
|
+
headers from which they are generated). Examples: <code>#include "foo/bar/file.h"</code>
|
|
5083
|
+
and/or <code>#include "foo/bar/mock_file.h"</code>.</li>
|
|
5084
|
+
<li>Use the <a href="build-directives.html"><code>TEST_SOURCE_FILE()</code> build directive macro</a>
|
|
5085
|
+
to provide a path to distinguish source files of the same name to be
|
|
5086
|
+
compiled and linked with a test executable.</li>
|
|
5087
|
+
</ul>
|
|
5088
|
+
<div class="admonition tip">
|
|
5089
|
+
<p class="admonition-title">Mocking two same-named headers in one test file</p>
|
|
5090
|
+
<p>Include each mock through its folder, as in <code>#include "drivers/uart/mock_config.h"</code>
|
|
5091
|
+
and <code>#include "drivers/spi/mock_config.h"</code>. With
|
|
5092
|
+
<a href="../configuration/reference/cmock.html#mock_name_include_folder"><code>:cmock</code> ↳ <code>:mock_name_include_folder</code></a>,
|
|
5093
|
+
enabled by default, each mock is named by that folder, and the two do not collide.</p>
|
|
5094
|
+
</div>
|
|
5095
|
+
<p><code>TEST_SOURCE_FILE()</code> also takes precedence over the header/source correspondence
|
|
5096
|
+
convention above. If a test both <code>#include</code>s a header and separately names a
|
|
5097
|
+
same-named source via <code>TEST_SOURCE_FILE()</code>, the directive’s own path wins outright
|
|
5098
|
+
— its source is the one compiled, and the header/source convention does not also
|
|
5099
|
+
compile whatever it would otherwise have found on its own for that same name. This
|
|
5100
|
+
holds even when the header’s own <code>#include</code> was already unambiguous; a
|
|
5101
|
+
<code>TEST_SOURCE_FILE()</code> entry sharing that basename is always authoritative. (The
|
|
5102
|
+
header itself is still validated/resolved as usual — only which <em>source</em> file gets
|
|
5103
|
+
compiled for a shared basename is affected.) Like the search-path resolution
|
|
5104
|
+
above, this override is logged with an informational notice naming the winning
|
|
5105
|
+
<code>TEST_SOURCE_FILE()</code> entry and the <code>#include</code> it overrode, so the substitution
|
|
5106
|
+
is not silent either.</p>
|
|
5107
|
+
<h3 id="test-files-cli-test-tasks">Test files (CLI test tasks)</h3>
|
|
5108
|
+
<p>Execute <a href="../getting-started/command-line.html"><code>ceedling test:</code> tasks</a> at the command line with an
|
|
5109
|
+
optional partial path to distinguish test executables (e.g. <code>test:foo/bar.c</code>),
|
|
5110
|
+
recalling that multiple conventions exist for finding/executing a test
|
|
5111
|
+
executable via <code>test:</code> task.</p>
|
|
5112
|
+
<p>Unlike the cases above, a same-named test file given at the command line is
|
|
5113
|
+
<strong>not</strong> auto-resolved. You must supply enough path yourself in the task
|
|
5114
|
+
name. Ceedling will complain about colliding task names and provide a list
|
|
5115
|
+
of matching candidates to help you provide path to disambiguate test files.</p>
|
|
4694
5116
|
<h2 id="test-build-search-paths">Test build search paths</h2>
|
|
4695
5117
|
<p>Test builds in C are fairly complex. Each test file becomes a test
|
|
4696
5118
|
executable. Each test executable needs generated runner code and
|
|
4697
5119
|
optionally generated mocks. Slicing and dicing what files are
|
|
4698
5120
|
compiled and linked and how search paths are assembled is tricky
|
|
4699
|
-
business. That
|
|
5121
|
+
business. That’s why Ceedling exists in the first place. Because
|
|
4700
5122
|
of these issues, search paths, in particular, require quite a bit
|
|
4701
5123
|
of special handling.</p>
|
|
4702
5124
|
<p>Unless your project is relying exclusively on <code>extern</code> statements and
|
|
@@ -4734,8 +5156,8 @@ it is assembled from a variety of sources. In order:</p>
|
|
|
4734
5156
|
<li><code>:paths</code> ↳ <code>:support</code> list from your project configuration</li>
|
|
4735
5157
|
<li><code>:paths</code> ↳ <code>:include</code> list from your project configuration</li>
|
|
4736
5158
|
<li><code>:paths</code> ↳ <code>:libraries</code> list from your project configuration</li>
|
|
4737
|
-
<li>Internal path for Unity
|
|
4738
|
-
<li>Internal paths for CMock
|
|
5159
|
+
<li>Internal path for Unity’s unit test framework C code</li>
|
|
5160
|
+
<li>Internal paths for CMock’s C code (if respective feature enabled)</li>
|
|
4739
5161
|
<li><code>:paths</code> ↳ <code>:test_toolchain_include</code> list from your project
|
|
4740
5162
|
configuration</li>
|
|
4741
5163
|
</ol>
|
|
@@ -4776,7 +5198,7 @@ source file is compiled into an object file. All object files are linked.
|
|
|
4776
5198
|
A Ceedling release build may optionally compile and link in CException
|
|
4777
5199
|
and can handle linking in libraries as well.</p>
|
|
4778
5200
|
<p>Search paths for release builds are configured with <code>:paths</code> ↳ <code>:include</code>
|
|
4779
|
-
in your project configuration. That
|
|
5201
|
+
in your project configuration. That’s about all there is to it.</p>
|
|
4780
5202
|
<h2 id="source-files-release-artifacts">Source files & release artifacts</h2>
|
|
4781
5203
|
<p>Your binary release artifact results from the compilation and
|
|
4782
5204
|
linking of all source files Ceedling finds in the specified source
|
|
@@ -4800,6 +5222,38 @@ For example, <code>test_some_super_functionality.c</code>, <code>TestYourSourceF
|
|
|
4800
5222
|
or <code>testing_MyAwesomeCode.C</code> could each be valid test file
|
|
4801
5223
|
names. Note, however, that Ceedling can recognize only one test
|
|
4802
5224
|
file naming convention per project.</p>
|
|
5225
|
+
<h4 id="installer-like-test-filenames-on-windows">Installer-like test filenames on Windows</h4>
|
|
5226
|
+
<p>On Windows, Ceedling writes a manifest beside each test executable. It lets a
|
|
5227
|
+
test executable run whatever its name.</p>
|
|
5228
|
+
<p>A test executable is named after its test file. Windows treats an executable
|
|
5229
|
+
whose name contains <em>install</em>, <em>setup</em>, <em>update</em>, or <em>patch</em> as an installer.
|
|
5230
|
+
The Installer Detection feature of User Account Control (UAC) then demands
|
|
5231
|
+
administrator privileges to run it. A test file such as <code>test_setup_parser.c</code>
|
|
5232
|
+
would otherwise build a test executable Windows will not run.</p>
|
|
5233
|
+
<p>The manifest, <code><test executable>.manifest</code>, asks Windows to run the executable
|
|
5234
|
+
with your own privileges. That turns Installer Detection off for it. When a
|
|
5235
|
+
test filename contains one of these words, Ceedling logs a warning noting that
|
|
5236
|
+
it generated the manifest.</p>
|
|
5237
|
+
<p>Windows ignores a manifest file when the executable already embeds a manifest
|
|
5238
|
+
of its own. Whether yours does depends on your toolchain.</p>
|
|
5239
|
+
<ul>
|
|
5240
|
+
<li><strong>MinGW-w64 GCC from <a href="https://www.msys2.org">MSYS2</a></strong> links a default manifest into every executable
|
|
5241
|
+
when its <code>windows-default-manifest</code> package is installed. That manifest
|
|
5242
|
+
already asks Windows to run the executable with your own privileges, so
|
|
5243
|
+
these names cause no trouble, and the manifest file is unused. This GCC is
|
|
5244
|
+
also the one RubyInstaller’s DevKit provides.</li>
|
|
5245
|
+
<li><strong>Other MinGW-w64 distributions</strong> may or may not include that default
|
|
5246
|
+
manifest. GCC links it only when it finds <code>default-manifest.o</code> among its
|
|
5247
|
+
libraries. Without it, the manifest file Ceedling writes is what lets these
|
|
5248
|
+
test executables run.</li>
|
|
5249
|
+
<li><strong>The original MinGW</strong> (mingw.org) is believed to embed no manifest, so it
|
|
5250
|
+
relies on the manifest file.</li>
|
|
5251
|
+
</ul>
|
|
5252
|
+
<p>To see whether an executable embeds a manifest, search it for the text
|
|
5253
|
+
<code>requestedExecutionLevel</code>. A match means Windows uses the embedded manifest.</p>
|
|
5254
|
+
<p>Before 1.2.0, Ceedling wrote no manifest. With a toolchain that embeds none,
|
|
5255
|
+
test files with these words in their names could not be run on Windows without
|
|
5256
|
+
administrator privileges.</p>
|
|
4803
5257
|
<h3 id="source-mock-files-to-compile-and-link">Source & mock files to compile and link</h3>
|
|
4804
5258
|
<p>Ceedling knows what files to compile and link into each individual
|
|
4805
5259
|
test executable by way of the <code>#include</code> list contained in each
|
|
@@ -4815,12 +5269,23 @@ test file and optional test directive macros.</p>
|
|
|
4815
5269
|
compile & link that generated code into into the test executable
|
|
4816
5270
|
as well.</li>
|
|
4817
5271
|
</ol>
|
|
5272
|
+
<p>A mock is generated into the directory mirroring the header it came from, so two
|
|
5273
|
+
same-named headers in different directories produce two mocks in different
|
|
5274
|
+
directories. A single test file can mock both when it includes each mock through
|
|
5275
|
+
its folder (e.g. <code>#include "folder/mock_foo.h"</code>), since each mock is then named
|
|
5276
|
+
by that folder.</p>
|
|
4818
5277
|
<p>Sometimes the source file you need to add to your test executable has
|
|
4819
5278
|
no corresponding header file — e.g. <code>file_abc.h</code> contains symbols
|
|
4820
5279
|
present in <code>file_xyz.c</code>. In these cases, you can use the test
|
|
4821
5280
|
directive macro <code>TEST_SOURCE_FILE(...)</code> to tell Ceedling to compile
|
|
4822
5281
|
and link the desired source file into the test executable (see
|
|
4823
5282
|
<a href="build-directives.html">macro documentation</a>).</p>
|
|
5283
|
+
<p>Conversely, sometimes you may need to remove from a test executable
|
|
5284
|
+
build a source file that corresponds to an <code>#include</code> directive in your
|
|
5285
|
+
test file. A <code>TEST_SOURCE_FILE()</code> entry prefixed with a <code>-:</code> decorator
|
|
5286
|
+
removes a named file from a test‘s compile/link list. See
|
|
5287
|
+
<a href="build-directives.html#test_source_file-subtractive-notation"><code>TEST_SOURCE_FILE()</code> Subtractive Notation</a>
|
|
5288
|
+
for the full discussion.</p>
|
|
4824
5289
|
<p>That was a lot of information and many clauses in a very few
|
|
4825
5290
|
sentences; the commented example test file code that follows in a
|
|
4826
5291
|
bit will make it clearer.</p>
|
|
@@ -4847,13 +5312,39 @@ the naming convention of your test case functions.</p>
|
|
|
4847
5312
|
<p>Ceedling and CMock are advanced tools that both perform fairly sophisticated
|
|
4848
5313
|
parsing.</p>
|
|
4849
5314
|
<p>However, neither of these tools fully understands the entire C language,
|
|
4850
|
-
especially C
|
|
5315
|
+
especially C’s preprocessing statements.</p>
|
|
5316
|
+
<p>Ceedling’s preprocessing features rely on <code>gcc</code>’s preprocessing mode to strip
|
|
5317
|
+
down / expand test files and headers to their raw code content that can then
|
|
5318
|
+
be parsed as text by Ceedling and CMock. These tools must be in your search
|
|
5319
|
+
path if Ceedling’s preprocessing is enabled.</p>
|
|
5320
|
+
<p>See the <a href="../configuration/reference/project.html"><code>:project</code> ↳ <code>:use_test_preprocessor</code></a> project
|
|
5321
|
+
configuration setting.</p>
|
|
5322
|
+
<div class="admonition warning">
|
|
5323
|
+
<p class="admonition-title">Warning</p>
|
|
5324
|
+
<p>Ceedling’s test preprocessing abilities are directly tied to the features and
|
|
5325
|
+
output of <code>gcc</code>. The default tool definitions for these should not be
|
|
5326
|
+
redefined for other toolchains. Future Ceedling improvements will allow for a
|
|
5327
|
+
plugin-style ability to use your own tools in this highly specialized capacity.</p>
|
|
5328
|
+
</div>
|
|
5329
|
+
<h3 id="preprocessing-for-include-directives">Preprocessing for include directives</h3>
|
|
5330
|
+
<p>In order for Ceedling to do its job, it needs an accurate picture of <code>#include</code>
|
|
5331
|
+
directives used by mockable headers and test files. For simple projects, this can
|
|
5332
|
+
be done with simple text scanning.</p>
|
|
5333
|
+
<p>For projects with conditional compilation (e.g. <code>#ifdef</code>) around include
|
|
5334
|
+
directives or include directives with macros as targets, preprocessing is required.
|
|
5335
|
+
Ceedling uses various passes of preprocessor modes to successfully extract
|
|
5336
|
+
<code>#include</code> directives.</p>
|
|
5337
|
+
<p>A test file’s <code>#include</code> directives are extracted with the preprocessor only when
|
|
5338
|
+
test files are preprocessed, with <code>:use_test_preprocessor</code> set to <code>:tests</code> or <code>:all</code>.
|
|
5339
|
+
With <code>:mocks</code>, only mockable headers are preprocessed, and a test file’s
|
|
5340
|
+
<code>#include</code> directives come from text scanning.</p>
|
|
5341
|
+
<h3 id="preprocessing-for-tests-and-mocks">Preprocessing for tests and mocks</h3>
|
|
4851
5342
|
<p>If your test files rely on macros and <code>#ifdef</code> conditionals used in certain
|
|
4852
|
-
ways (see examples below), there
|
|
5343
|
+
ways (see examples below), there’s a chance that Ceedling will break on trying
|
|
4853
5344
|
to process your test files, or, alternatively, your test suite will build but
|
|
4854
5345
|
not execute as expected.</p>
|
|
4855
5346
|
<p>Similarly, generating mocks of header files with macros and <code>#ifdef</code>
|
|
4856
|
-
conditionals around or in function signatures can get weird. Of course, it
|
|
5347
|
+
conditionals around or in function signatures can get weird. Of course, it’s
|
|
4857
5348
|
often in sophisticated projects with complex header files that mocking is most
|
|
4858
5349
|
desired in the first place.</p>
|
|
4859
5350
|
<p>Ceedling includes an optional ability to preprocess the following files before
|
|
@@ -4863,38 +5354,60 @@ then extracting test cases and functions to be mocked with text parsing.</p>
|
|
|
4863
5354
|
<li>Mockable header files, or</li>
|
|
4864
5355
|
<li>Both of the above </li>
|
|
4865
5356
|
</ol>
|
|
4866
|
-
<
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
|
|
4871
|
-
|
|
4872
|
-
<
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
|
|
5357
|
+
<h3 id="preprocessing-for-partials">Preprocessing for Partials</h3>
|
|
5358
|
+
<p>When <a href="partials/index.html">Partials</a> are enabled, Ceedling expands the use of preprocessing
|
|
5359
|
+
beyond only include directives, mockable headers, and test files to partialized
|
|
5360
|
+
source files as well. In order to extract and surgically alter your source code
|
|
5361
|
+
to become a generated Partial, your source code must be run through various passes
|
|
5362
|
+
of preprocessig to resolve conditional compilation, expand macros, etc.</p>
|
|
5363
|
+
<div class="admonition note">
|
|
5364
|
+
<p class="admonition-title">Note</p>
|
|
5365
|
+
<p>The use of Partials automatically enables test preprocessing regardless of
|
|
5366
|
+
your configuration setting and logs the setting update.</p>
|
|
5367
|
+
</div>
|
|
5368
|
+
<h3 id="fallback-test-build-preprocessing">Fallback test build preprocessing</h3>
|
|
5369
|
+
<p>Ceedling depends on the GNU Compiler Collection (<code>gcc</code>) for many of its advanced
|
|
5370
|
+
features (such as in the preceding sections).</p>
|
|
5371
|
+
<p>Older versions of <code>gcc</code> or <code>clang</code> standins may not support certain preprocessing
|
|
5372
|
+
features Ceedling requires. Ceedling probes for those features; if they are not
|
|
5373
|
+
found then Ceedling falls back to a simpler, best-effort
|
|
5374
|
+
<a href="../configuration/reference/test-build.html#preprocess_force_fallback">fallback preprocessing</a>.</p>
|
|
5375
|
+
<p>Fallback preprocessing is a best effort with no guarantees. It is not as capable
|
|
5376
|
+
as full preprocessing, but it can usually handle the most common preprocessing
|
|
5377
|
+
needs (i.e. conditional compilation). Ceedling does what it can to find and log
|
|
5378
|
+
issues related to inadequate preprocessing before you get to mysterious
|
|
5379
|
+
compilation errors.</p>
|
|
5380
|
+
<div class="admonition tip">
|
|
5381
|
+
<p class="admonition-title">Fallback preprocessing for faster test builds</p>
|
|
5382
|
+
<p>Ceedling’s internal <a href="../configuration/reference/test-build.html#preprocess_force_fallback">fallback preprocessing mode can be forced</a>,
|
|
5383
|
+
and, for <strong><em>some</em></strong> projects this can be a shortcut to running advanced
|
|
5384
|
+
Ceedling features such as Partials with faster builds.</p>
|
|
5385
|
+
<p><strong><em>If using Partials, there’s a good chance your code is too complex for fallback preprocessing.</em></strong></p>
|
|
5386
|
+
</div>
|
|
4877
5387
|
<h3 id="limitations-gotchas">Limitations & gotchas</h3>
|
|
4878
5388
|
<h4 id="preprocessing-limitations-cheatsheet">Preprocessing limitations cheatsheet</h4>
|
|
4879
|
-
<p>Ceedling
|
|
5389
|
+
<p>Ceedling’s preprocessing abilities are generally quite useful — especially in
|
|
4880
5390
|
projects with multiple build configurations for different feature sets or
|
|
4881
5391
|
multiple targets, legacy code that cannot be refactored, and complex header
|
|
4882
5392
|
files provided by vendors.</p>
|
|
4883
|
-
<p>However, best applying Ceedling
|
|
5393
|
+
<p>However, best applying Ceedling’s preprocessing abilities requires understanding
|
|
4884
5394
|
how the feature works, when to use it, and its limitations.</p>
|
|
4885
|
-
<p>At a high level, Ceedling
|
|
5395
|
+
<p>At a high level, Ceedling’s preprocessing is applicable for cases where macros
|
|
4886
5396
|
or conditional compilation preprocessing statements (e.g. <code>#ifdef</code>):</p>
|
|
4887
5397
|
<ul>
|
|
4888
5398
|
<li>Generate or hide/reveal your test files' <code>#include</code> statements.</li>
|
|
4889
5399
|
<li>Generate or hide/reveal your test files' test case function signatures
|
|
4890
|
-
(e.g. <code>void test_foo()</code
|
|
5400
|
+
(e.g. <code>void test_foo()</code>).</li>
|
|
4891
5401
|
<li>Generate or hide/reveal mockable header files' <code>#include</code> statements.</li>
|
|
4892
5402
|
<li>Generate or hide/reveal header files' mockable function signatures.</li>
|
|
4893
5403
|
</ul>
|
|
4894
|
-
<
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
5404
|
+
<div class="admonition note">
|
|
5405
|
+
<p class="admonition-title">Note</p>
|
|
5406
|
+
<p>You do not necessarily need to enable Ceedling’s preprocessing only
|
|
5407
|
+
because you have preprocessing statements in your test files or mockable
|
|
5408
|
+
header files. The feature is only truly needed if your project meets the
|
|
5409
|
+
conditions above.</p>
|
|
5410
|
+
</div>
|
|
4898
5411
|
<p>The sections that follow flesh out the details of the bulleted list above.</p>
|
|
4899
5412
|
<h4 id="preprocessing-gotchas">Preprocessing gotchas</h4>
|
|
4900
5413
|
<h5 id="test_include_path-incompatibe-with-ifdef"><code>TEST_INCLUDE_PATH()</code> incompatibe with <code>#ifdef</code></h5>
|
|
@@ -4909,7 +5422,7 @@ statements.</p>
|
|
|
4909
5422
|
for advanced abilities discovered by Ceedling parsing a test file as plain text.
|
|
4910
5423
|
Whether or not Ceedling preprocessing is enabled, Ceedling will always discover
|
|
4911
5424
|
this marker macro in the plain text of a test file.</p>
|
|
4912
|
-
<p>Why is <code>TEST_INCLUDE_PATH()</code> incompatible with <code>#ifdef</code>? Well, it
|
|
5425
|
+
<p>Why is <code>TEST_INCLUDE_PATH()</code> incompatible with <code>#ifdef</code>? Well, it’s because of
|
|
4913
5426
|
a cyclical dependency that cannot be resolved. In order to perform test
|
|
4914
5427
|
preprocessing, we need a full complement of <code>#include</code> search paths. These
|
|
4915
5428
|
could be provided, in part, by <code>TEST_INCLUDE_PATH()</code>. But, if we allow
|
|
@@ -4921,7 +5434,7 @@ plain text looking for this macro at the beginning of a test build.</p>
|
|
|
4921
5434
|
<ul>
|
|
4922
5435
|
<li><code>TEST_SOURCE_FILE()</code> <em>can</em> be placed within conditional compilation
|
|
4923
5436
|
C preprocessing statements.</li>
|
|
4924
|
-
<li><code>TEST_INCLUDE_PATH()</code> & <code>TEST_SOURCE_FILE()</code> can be “hidden” from Ceedling
|
|
5437
|
+
<li><code>TEST_INCLUDE_PATH()</code> & <code>TEST_SOURCE_FILE()</code> can be “hidden” from Ceedling’s
|
|
4925
5438
|
text scanning with traditional C comments.</li>
|
|
4926
5439
|
</ul>
|
|
4927
5440
|
<h3 id="test-file-preprocessing">Test file preprocessing</h3>
|
|
@@ -4930,9 +5443,9 @@ statements in test files before extracting <code>#include</code> conventions and
|
|
|
4930
5443
|
signatures. That is, preprocessing output is used to generate test runners
|
|
4931
5444
|
and assemble the components of a test executable build.</p>
|
|
4932
5445
|
<div class="admonition tip">
|
|
4933
|
-
<p class="admonition-title">Preprocessing
|
|
5446
|
+
<p class="admonition-title">Preprocessing not needed inside test functions</p>
|
|
4934
5447
|
<p>Conditional directives <em>inside</em> test case functions generally do not require
|
|
4935
|
-
Ceedling
|
|
5448
|
+
Ceedling’s test preprocessing ability. Assuming your code is correct, the C
|
|
4936
5449
|
preprocessor within your toolchain will do the right thing for you in your
|
|
4937
5450
|
test build. Read on for more details and the other cases of interest.</p>
|
|
4938
5451
|
</div>
|
|
@@ -4941,17 +5454,17 @@ preprocessor directives generate the <code>#include</code> statements for your t
|
|
|
4941
5454
|
and/or generate or enclose full test case functions. Ceedling will not be able
|
|
4942
5455
|
to properly discover your <code>#include</code> statements or test case functions unless
|
|
4943
5456
|
they are plainly available in an expanded, raw code version of your test file.
|
|
4944
|
-
Ceedling
|
|
5457
|
+
Ceedling’s preprocessing abilities provide that expansion.</p>
|
|
4945
5458
|
<h4 id="examples-of-when-ceedling-preprocessing-is-needed-for-test-files">Examples of when Ceedling preprocessing <strong><em>is</em></strong> needed for test files</h4>
|
|
4946
5459
|
<p>Generally, Ceedling preprocessing is needed when:</p>
|
|
4947
5460
|
<ol>
|
|
4948
|
-
<li><code>#include</code>
|
|
5461
|
+
<li><code>#include</code> directives targets are macros</li>
|
|
4949
5462
|
<li><code>#include</code> statements are conditionally present due to <code>#ifdef</code> statements</li>
|
|
4950
5463
|
<li>Test case function signatures are generated by macros</li>
|
|
4951
5464
|
<li>Test case function signatures are conditionaly present due to <code>#ifdef</code> statements</li>
|
|
4952
5465
|
</ol>
|
|
4953
|
-
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1">// #include
|
|
4954
|
-
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="
|
|
5466
|
+
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1">// #include directive targeting a macor</span>
|
|
5467
|
+
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="cp">#include INCLUDE_STATEMENT_MAGIC("header_file")</span>
|
|
4955
5468
|
</code></pre></div>
|
|
4956
5469
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="c1">// Test file scanning will always see this #include statement</span>
|
|
4957
5470
|
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
|
|
@@ -4970,29 +5483,57 @@ Ceedling's preprocessing abilities provide that expansion.</p>
|
|
|
4970
5483
|
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
|
|
4971
5484
|
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="p">}</span>
|
|
4972
5485
|
</code></pre></div></p>
|
|
5486
|
+
<h4 id="where-the-macros-deciding-an-include-come-from">Where the macros deciding an <code>#include</code> come from</h4>
|
|
5487
|
+
<p>With test preprocessing, a conditional <code>#include</code> (item 2 above) is decided by the same
|
|
5488
|
+
macros your compiler will see, wherever they are defined. A macro may come from your
|
|
5489
|
+
project’s <code>:defines</code>, from the test file itself, or from a header the test file includes.
|
|
5490
|
+
That header can even be one the test file mocks, since a mock includes its real header.</p>
|
|
5491
|
+
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1">// config.h</span>
|
|
5492
|
+
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="cp">#define FEATURE_X_ENABLED</span>
|
|
5493
|
+
</code></pre></div>
|
|
5494
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1">// test_feature.c</span>
|
|
5495
|
+
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">"mock_config.h"</span><span class="c1"> // The mock includes config.h, defining FEATURE_X_ENABLED</span>
|
|
5496
|
+
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>
|
|
5497
|
+
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="cp">#ifdef FEATURE_X_ENABLED</span>
|
|
5498
|
+
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">"mock_feature_x.h"</span><span class="c1"> // Ceedling finds and generates this mock</span>
|
|
5499
|
+
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="cp">#endif</span>
|
|
5500
|
+
</code></pre></div></p>
|
|
5501
|
+
<div class="admonition warning">
|
|
5502
|
+
<p class="admonition-title">Warning</p>
|
|
5503
|
+
<p>One combination is out of reach. An <code>#include</code> whose target is a macro (item 1
|
|
5504
|
+
above) cannot name a mock when only a header defines that macro. Define the macro
|
|
5505
|
+
under <code>:defines</code> ↳ <code>:test</code> instead, so the test file sees it directly.</p>
|
|
5506
|
+
</div>
|
|
5507
|
+
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="c1">// config.h</span>
|
|
5508
|
+
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="cp">#define FEATURE_MOCK "mock_feature_x.h"</span>
|
|
5509
|
+
</code></pre></div>
|
|
5510
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="c1">// test_feature.c</span>
|
|
5511
|
+
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">"config.h"</span>
|
|
5512
|
+
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="cp">#include FEATURE_MOCK </span><span class="c1">// Ceedling cannot find this mock</span>
|
|
5513
|
+
</code></pre></div></p>
|
|
4973
5514
|
<h4 id="examples-of-when-test-preprocessing-is-not-needed-for-test-files">Examples of when test preprocessing is <strong><em>not</em></strong> needed for test files</h4>
|
|
4974
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
4975
|
-
<a id="__codelineno-
|
|
4976
|
-
<a id="__codelineno-
|
|
4977
|
-
<a id="__codelineno-
|
|
4978
|
-
<a id="__codelineno-
|
|
4979
|
-
<a id="__codelineno-
|
|
4980
|
-
<a id="__codelineno-
|
|
4981
|
-
<a id="__codelineno-
|
|
4982
|
-
<a id="__codelineno-
|
|
4983
|
-
<a id="__codelineno-
|
|
4984
|
-
<a id="__codelineno-
|
|
5515
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="c1">// Code inside a test case is simply code that your toolchain will expand and build as you desire</span>
|
|
5516
|
+
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="c1">// You can manage your compile time symbols with the :defines section of your project configuration file</span>
|
|
5517
|
+
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="kt">void</span><span class="w"> </span><span class="nf">test_some_test_case</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
5518
|
+
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
|
|
5519
|
+
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
|
|
5520
|
+
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a><span class="cp">#endif</span>
|
|
5521
|
+
<a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a>
|
|
5522
|
+
<a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a><span class="cp">#ifdef BUILD_VARIANT_B</span>
|
|
5523
|
+
<a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
|
|
5524
|
+
<a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a><span class="cp">#endif</span>
|
|
5525
|
+
<a id="__codelineno-8-11" name="__codelineno-8-11" href="#__codelineno-8-11"></a><span class="p">}</span>
|
|
4985
5526
|
</code></pre></div>
|
|
4986
5527
|
<h3 id="header-file-preprocessing">Header file preprocessing</h3>
|
|
4987
5528
|
<p>When preprocessing is enabled for mocking, Ceedling will expand preprocessor
|
|
4988
5529
|
statements in header files before generating mocks from them. CMock requires
|
|
4989
5530
|
a clear look at function definitions and types in order to do its work.</p>
|
|
4990
5531
|
<p>Header files with preprocessor directives and conditional macros can easily
|
|
4991
|
-
obscure details from CMock
|
|
5532
|
+
obscure details from CMock’s limited C parser. Advanced C projects tend
|
|
4992
5533
|
to rely on preprocessing directives and macros to accomplish everything from
|
|
4993
5534
|
build variants to OS calls to register access to managing proprietary language
|
|
4994
5535
|
extensions.</p>
|
|
4995
|
-
<p>Mocking is often most useful in complicated codebases. As such Ceedling
|
|
5536
|
+
<p>Mocking is often most useful in complicated codebases. As such Ceedling’s
|
|
4996
5537
|
preprocessing abilities tend to be quite necessary to properly expand header
|
|
4997
5538
|
files so CMock can parse them.</p>
|
|
4998
5539
|
<h4 id="examples-of-when-ceedling-preprocessing-is-needed-for-mockable-headers">Examples of when Ceedling preprocessing <strong><em>is</em></strong> needed for mockable headers</h4>
|
|
@@ -5006,15 +5547,15 @@ files so CMock can parse them.</p>
|
|
|
5006
5547
|
<p><strong><em>Important Notes:</em></strong></p>
|
|
5007
5548
|
<ul>
|
|
5008
5549
|
<li>
|
|
5009
|
-
<p>Sometimes CMock
|
|
5550
|
+
<p>Sometimes CMock’s parsing features can be configured to handle scenarios
|
|
5010
5551
|
that fall within (3) above. CMock can match and remove most text strings,
|
|
5011
5552
|
match and replace certain text strings, map custom types to mockable
|
|
5012
5553
|
alternatives, and be extended with a Unity helper to handle complex and
|
|
5013
|
-
compound types. See <a href="http://github.com/ThrowTheSwitch/CMock">CMock</a
|
|
5554
|
+
compound types. See <a href="http://github.com/ThrowTheSwitch/CMock">CMock</a>’s documentation for more.</p>
|
|
5014
5555
|
</li>
|
|
5015
5556
|
<li>
|
|
5016
5557
|
<p>Test preprocessing causes any macros or symbols in a mockable header to
|
|
5017
|
-
"disappear" in the generated mock. It
|
|
5558
|
+
"disappear" in the generated mock. It’s quite common to have needed symbols
|
|
5018
5559
|
or macros in a header file that do not directly impact the function
|
|
5019
5560
|
signatures to be mocked. This can break compilation of your test suite.</p>
|
|
5020
5561
|
</li>
|
|
@@ -5022,21 +5563,21 @@ files so CMock can parse them.</p>
|
|
|
5022
5563
|
<p>Possible solutions to this problem include:</p>
|
|
5023
5564
|
<div class="highlight"><pre><span></span><code>1. Move symbols and macros in your header file that do not impact function
|
|
5024
5565
|
signatures to another source header file that will not be filtered
|
|
5025
|
-
by Ceedling
|
|
5566
|
+
by Ceedling’s header file preprocessing.
|
|
5026
5567
|
1. If (1) is not possible, you may duplicate the needed symbols and macros
|
|
5027
5568
|
in a header file that is only available in your test build search paths
|
|
5028
5569
|
and include it in your test file.
|
|
5029
5570
|
</code></pre></div>
|
|
5030
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5031
|
-
<a id="__codelineno-
|
|
5571
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="c1">// Header file scanning will see this function signature but mistakenly mock the name of the macro</span>
|
|
5572
|
+
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">FUNCTION_SIGNATURE_MAGIC</span><span class="p">(...);</span>
|
|
5032
5573
|
</code></pre></div>
|
|
5033
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5034
|
-
<a id="__codelineno-
|
|
5035
|
-
<a id="__codelineno-
|
|
5036
|
-
<a id="__codelineno-
|
|
5574
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="c1">// Header file scanning will always see this function signature</span>
|
|
5575
|
+
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
|
|
5576
|
+
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">someFunction</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
|
|
5577
|
+
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="cp">#endif</span>
|
|
5037
5578
|
</code></pre></div>
|
|
5038
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5039
|
-
<a id="__codelineno-
|
|
5579
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="c1">// Header file scanning will either fail for this function signature or extract erroneous type names</span>
|
|
5580
|
+
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="n">INLINE_MAGIC</span><span class="w"> </span><span class="n">RETURN_TYPE_MAGIC</span><span class="w"> </span><span class="n">someFunction</span><span class="p">(</span><span class="n">PARAMETER_MAGIC</span><span class="p">);</span>
|
|
5040
5581
|
</code></pre></div>
|
|
5041
5582
|
<h2 id="duration-reporting">Duration reporting</h2>
|
|
5042
5583
|
<h3 id="logged-run-times">Logged run times</h3>
|
|
@@ -5044,11 +5585,11 @@ files so CMock can parse them.</p>
|
|
|
5044
5585
|
<p>It first logs the set up time necessary to process your project file, parse code
|
|
5045
5586
|
files, build an internal representation of your project, etc. This duration does
|
|
5046
5587
|
not capture the time necessary to load the Ruby runtime itself.</p>
|
|
5047
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5588
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>Ceedling set up completed in 223 milliseconds
|
|
5048
5589
|
</code></pre></div>
|
|
5049
5590
|
<p>Secondly, each Ceedling run also logs the time necessary to run all the tasks
|
|
5050
5591
|
you specify at the command line.</p>
|
|
5051
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5592
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>Ceedling operations completed in 1.03 seconds
|
|
5052
5593
|
</code></pre></div>
|
|
5053
5594
|
<h3 id="test-suite-executable-durations">Test suite & executable durations</h3>
|
|
5054
5595
|
<p>A test suite comprises one or more Unity test executables (see
|
|
@@ -5061,8 +5602,8 @@ effort is usually required to map Ceedling duration values to a relevant test
|
|
|
5061
5602
|
suite abstraction within a given test report format.</p>
|
|
5062
5603
|
<p>Because Ceedling can execute builds with multiple threads, care must be taken
|
|
5063
5604
|
to interpret test suite duration values — particularly in relation to
|
|
5064
|
-
Ceedling
|
|
5065
|
-
<p>In a multi-threaded build it
|
|
5605
|
+
Ceedling’s logged run times.</p>
|
|
5606
|
+
<p>In a multi-threaded build it’s quite common for the logged Ceedling project run
|
|
5066
5607
|
time to be less than the total suite time in a test report. In multi-threaded
|
|
5067
5608
|
builds on multi-core machines, test executables are run on different processors
|
|
5068
5609
|
simultaneously. As such, the total on-processor time in a test report can
|
|
@@ -5076,13 +5617,13 @@ a in a comparable single-threaded build.</p>
|
|
|
5076
5617
|
supports the time mechanism Unity relies on, Ceedling will automatically
|
|
5077
5618
|
collect test case time values — generally made use of by test report plugins.</p>
|
|
5078
5619
|
<p>To enable test case duration measurements, they must be enabled as a Unity
|
|
5079
|
-
compilation option. Add <code>UNITY_INCLUDE_EXEC_TIME</code> to Unity
|
|
5620
|
+
compilation option. Add <code>UNITY_INCLUDE_EXEC_TIME</code> to Unity’s compilation
|
|
5080
5621
|
symbols (<code>:unity</code> ↳ <code>:defines</code>) in your Ceedling project file (see example
|
|
5081
5622
|
below). Unity test case durations as reported by Ceedling default to 0 if the
|
|
5082
5623
|
compilation option is not set.</p>
|
|
5083
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5084
|
-
<a id="__codelineno-
|
|
5085
|
-
<a id="__codelineno-
|
|
5624
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="nt">:unity</span><span class="p">:</span>
|
|
5625
|
+
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span><span class="nt">:defines</span><span class="p">:</span>
|
|
5626
|
+
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">UNITY_INCLUDE_EXEC_TIME</span>
|
|
5086
5627
|
</code></pre></div>
|
|
5087
5628
|
<p><em>NOTE:</em> Most test cases are quite short, and most computers are quite fast. As
|
|
5088
5629
|
such, Unity test case execution time is often reported as 0 milliseconds as
|
|
@@ -5090,46 +5631,30 @@ compilation option is not set.</p>
|
|
|
5090
5631
|
range. Unity would require special rigging that is inconsistently available
|
|
5091
5632
|
across platforms to measure test case durations at a finer resolution.</p>
|
|
5092
5633
|
<h2 id="dependency-tracking">Dependency tracking</h2>
|
|
5093
|
-
<p>
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
test
|
|
5103
|
-
Ceedling undergoes a major overhaul.</p>
|
|
5104
|
-
<p>Please see the <a href="https://github.com/ThrowTheSwitch/Ceedling/blob/master/docs/ReleaseNotes.md">Release Notes</a>.</p>
|
|
5105
|
-
<h3 id="not-so-smart-rebuilds">(Not so) smart rebuilds</h3>
|
|
5106
|
-
<ul>
|
|
5107
|
-
<li>
|
|
5108
|
-
<p>New features that are a part of the Ceedling overhaul can
|
|
5109
|
-
significantly speed up test suite execution and release builds
|
|
5110
|
-
despite the present behavior of brute force running all build
|
|
5111
|
-
steps. See the discussion of enabling multi-threaded builds in
|
|
5112
|
-
later sections.</p>
|
|
5113
|
-
</li>
|
|
5114
|
-
<li>
|
|
5115
|
-
<p>When smart rebuilds return, they will further speed up builds as
|
|
5116
|
-
will other planned optimizations.</p>
|
|
5117
|
-
</li>
|
|
5118
|
-
</ul>
|
|
5634
|
+
<p>Ceedling only regenerates, compiles, links, or runs an element of the build
|
|
5635
|
+
pipeline if a change in the dependency tree requires it. This includes “deep
|
|
5636
|
+
dependencies” wherein a change in a header file several nested layers deep in
|
|
5637
|
+
<code>#include</code> statements correctly triggers a rebuild of every test executable
|
|
5638
|
+
that depends on it, directly or indirectly.</p>
|
|
5639
|
+
<p>This is called a delta build. Delta builds are automatic, need no
|
|
5640
|
+
configuration, and complement Ceedling’s parallel build steps for further
|
|
5641
|
+
build time speedups. See <a href="../getting-started/builds.html">Delta Builds</a> for the
|
|
5642
|
+
full picture, including how test result caching works and the
|
|
5643
|
+
<code>--force-test-rerun</code> flag.</p>
|
|
5119
5644
|
<h2 id="build-output">Build output</h2>
|
|
5120
5645
|
<p>Ceedling requires a top-level build directory for all the stuff
|
|
5121
5646
|
that it, the accompanying test tools, and your toolchain generate.
|
|
5122
|
-
That build directory
|
|
5647
|
+
That build directory’s location is configured in the top-level
|
|
5123
5648
|
<code>:project</code> section of your configuration file (discussed in the
|
|
5124
5649
|
<a href="../configuration/index.html">configuration reference</a>). There
|
|
5125
5650
|
can be a ton of generated files. By and large, you can live a full
|
|
5126
5651
|
and meaningful life knowing absolutely nothing at all about
|
|
5127
5652
|
the files and directories generated below the root build directory.</p>
|
|
5128
|
-
<p>As noted already, it
|
|
5653
|
+
<p>As noted already, it’s good practice to add your top-level build
|
|
5129
5654
|
directory to source control but nothing generated beneath it.
|
|
5130
5655
|
you'll spare yourself headache if you let Ceedling delete and
|
|
5131
5656
|
regenerate files and directories in a non-versioned corner
|
|
5132
|
-
of your project
|
|
5657
|
+
of your project’s filesystem beneath the top-level build directory.</p>
|
|
5133
5658
|
<p>The <code>artifacts/</code> directory is the one and only directory you may
|
|
5134
5659
|
want to know about beneath the top-level build directory. The
|
|
5135
5660
|
subdirectories beneath <code>artifacts</code> will hold your binary release
|
|
@@ -5167,18 +5692,18 @@ no problem-o. You may be of the mind that running a test suite to
|
|
|
5167
5692
|
completion should yield a successful exit code (even if tests failed).
|
|
5168
5693
|
Add the following to your project file to force Ceedling to finish a
|
|
5169
5694
|
build with an exit code of 0 even upon test case failures.</p>
|
|
5170
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5171
|
-
<a id="__codelineno-
|
|
5172
|
-
<a id="__codelineno-
|
|
5695
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="c1"># Ceedling terminates with happy `exit(0)` even if test cases fail</span>
|
|
5696
|
+
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="nt">:test_build</span><span class="p">:</span>
|
|
5697
|
+
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span><span class="nt">:graceful_fail</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
|
5173
5698
|
</code></pre></div>
|
|
5174
5699
|
<p>If you use the option for graceful failures in CI, you'll want to
|
|
5175
|
-
rig up some kind of logging monitor that scans Ceedling
|
|
5700
|
+
rig up some kind of logging monitor that scans Ceedling’s test
|
|
5176
5701
|
summary report sent to <code>$stdout</code> and/or a log file. Otherwise, you
|
|
5177
5702
|
could have a successful build but failing tests.</p>
|
|
5178
5703
|
<h3 id="test-executable-exit-codes">Test executable exit codes</h3>
|
|
5179
5704
|
<p>Ceedling works by collecting multiple Unity test executables together
|
|
5180
5705
|
into a test suite (more here: <a href="test-suite-anatomy.html">Anatomy of a Test Suite</a>).</p>
|
|
5181
|
-
<p>A Unity test executable
|
|
5706
|
+
<p>A Unity test executable’s exit code is the number of failed tests. An
|
|
5182
5707
|
exit code of <code>0</code> means all tests passed while anything larger than zero
|
|
5183
5708
|
is the number of test failures.</p>
|
|
5184
5709
|
<p>Because of platform limitations on how big an exit code number can be
|