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
|
@@ -18,7 +18,81 @@ class GcovrReportinator < GcovReportinator
|
|
|
18
18
|
|
|
19
19
|
attr_reader :artifacts_path
|
|
20
20
|
|
|
21
|
-
GCOVR_SETTING_PREFIX =
|
|
21
|
+
GCOVR_SETTING_PREFIX = :gcov_gcovr
|
|
22
|
+
|
|
23
|
+
# Version floors for options whose behavior depends on the installed gcovr.
|
|
24
|
+
# Checked upfront in initialize, once, rather than left to surface as gcovr's
|
|
25
|
+
# own opaque CLI error or silently dropped -- either of which would leave a
|
|
26
|
+
# configured feature quietly never actually active. :mcdc's value comes from
|
|
27
|
+
# the top-level :gcov config (see initialize), not the :gcovr sub-namespace
|
|
28
|
+
# the other two live under -- enforce_version_gates! doesn't care where its
|
|
29
|
+
# opts hash came from, so both are checked together in one call.
|
|
30
|
+
VERSION_GATES = {
|
|
31
|
+
:mcdc => {
|
|
32
|
+
min: [8, 0],
|
|
33
|
+
message: ":gcov ↳ :mcdc ➡️ Modified condition/decision coverage reporting requires gcovr %{req} " \
|
|
34
|
+
"or higher (found %{found})"
|
|
35
|
+
},
|
|
36
|
+
# A distinct, later addition than :decisions -- confirmed directly against real gcovr
|
|
37
|
+
# 6.0, which rejects --fail-under-decision outright as an unrecognized argument.
|
|
38
|
+
:fail_under_decision => {
|
|
39
|
+
min: [7, 0],
|
|
40
|
+
message: ":gcov ↳ :gcovr ↳ :fail_under_decision ➡️ requires gcovr %{req} or higher (found %{found})"
|
|
41
|
+
},
|
|
42
|
+
:decisions => {
|
|
43
|
+
min: [5, 1],
|
|
44
|
+
message: ":gcov ↳ :gcovr ↳ :decisions ➡️ requires gcovr %{req} or higher (found %{found})"
|
|
45
|
+
},
|
|
46
|
+
# Report formats gate on whether :gcov ↳ :reports names them
|
|
47
|
+
:jacoco => {
|
|
48
|
+
min: [7, 0],
|
|
49
|
+
message: ":gcov ↳ :reports ➡️ JaCoCo reports require gcovr %{req} or higher (found %{found})"
|
|
50
|
+
},
|
|
51
|
+
# ReportGenerator also writes lcov, so this gate applies only when gcovr is lcov's sole utility
|
|
52
|
+
:lcov => {
|
|
53
|
+
min: [7, 0],
|
|
54
|
+
message: ":gcov ↳ :reports ➡️ LCOV reports require gcovr %{req} or higher (found %{found})"
|
|
55
|
+
},
|
|
56
|
+
}.freeze
|
|
57
|
+
|
|
58
|
+
# Declarative map of :gcov ↳ :gcovr options handled identically regardless of report
|
|
59
|
+
# type (HTML/XML/JSON/text all share these) -- built once per generate_reports() call
|
|
60
|
+
# and passed down rather than re-collected inside every args_builder_* method.
|
|
61
|
+
# :branches/:sort_uncovered/:sort_percentage swap to their gcovr 7.0+ replacement flag
|
|
62
|
+
# names (the pre-7.0 names still work but are deprecated) -- one row each documents both
|
|
63
|
+
# the old and new mapping instead of a separate version-conditional code block.
|
|
64
|
+
GCOVR_COMMON_ARGS = {
|
|
65
|
+
:report_include => { type: :value, flag: '--filter' },
|
|
66
|
+
:gcov_filter => { type: :value, flag: '--gcov-filter' },
|
|
67
|
+
:gcov_exclude => { type: :value, flag: '--gcov-exclude' },
|
|
68
|
+
:exclude_directories => { type: :value, flag: '--exclude-directories' },
|
|
69
|
+
:branches => { type: :boolean, flag: ->(v) { ToolVersionGating.min_version?(v, 7, 0) ? '--txt-metric branch' : '--branches' } },
|
|
70
|
+
:sort_uncovered => { type: :boolean, flag: ->(v) { ToolVersionGating.min_version?(v, 7, 0) ? '--sort uncovered-number' : '--sort-uncovered' } },
|
|
71
|
+
:sort_percentage => { type: :boolean, flag: ->(v) { ToolVersionGating.min_version?(v, 7, 0) ? '--sort uncovered-percent' : '--sort-percentage' } },
|
|
72
|
+
:print_summary => { type: :boolean, flag: '--print-summary' },
|
|
73
|
+
:gcov_executable => { type: :value, flag: '--gcov-executable' },
|
|
74
|
+
:exclude_unreachable_branches => { type: :boolean, flag: '--exclude-unreachable-branches' },
|
|
75
|
+
:exclude_throw_branches => { type: :boolean, flag: '--exclude-throw-branches' },
|
|
76
|
+
:use_gcov_files => { type: :boolean, flag: '--use-gcov-files' },
|
|
77
|
+
:gcov_ignore_parse_errors => { type: :boolean, flag: '--gcov-ignore-parse-errors' },
|
|
78
|
+
:keep => { type: :boolean, flag: '--keep' },
|
|
79
|
+
:delete => { type: :boolean, flag: '--delete' },
|
|
80
|
+
:threads => { type: :integer, flag: '-j' },
|
|
81
|
+
# Merge mode is only available and relevant as of gcovr 6.0; silently omitted (not
|
|
82
|
+
# raised) below that -- unlike VERSION_GATES above, an older gcovr simply never
|
|
83
|
+
# merges function variants rather than the plugin blocking the whole build over it.
|
|
84
|
+
:merge_mode_function => { type: :value, flag: '--merge-mode-functions', min_version: [6, 0] },
|
|
85
|
+
# :decisions here is a derived value (see args_builder_common) -- gcovr treats
|
|
86
|
+
# --fail-under-decision as a no-op without --decisions also present, so
|
|
87
|
+
# :fail_under_decision being set implies this flag automatically.
|
|
88
|
+
:decisions => { type: :boolean, flag: '--decisions' },
|
|
89
|
+
:fail_under_line => { type: :integer_percent, flag: '--fail-under-line' },
|
|
90
|
+
:fail_under_branch => { type: :integer_percent, flag: '--fail-under-branch' },
|
|
91
|
+
:fail_under_decision => { type: :integer_percent, flag: '--fail-under-decision' },
|
|
92
|
+
:fail_under_function => { type: :integer_percent, flag: '--fail-under-function' },
|
|
93
|
+
:source_encoding => { type: :value, flag: '--source-encoding' },
|
|
94
|
+
:object_directory => { type: :value, flag: '--object-directory' },
|
|
95
|
+
}.freeze
|
|
22
96
|
|
|
23
97
|
def initialize(system_objects, config)
|
|
24
98
|
super(config)
|
|
@@ -43,38 +117,21 @@ class GcovrReportinator < GcovReportinator
|
|
|
43
117
|
|
|
44
118
|
@gcovr_version = get_gcovr_version()
|
|
45
119
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
# quietly never actually checked.
|
|
60
|
-
gcovr_opts = @config[GCOVR_SETTING_PREFIX.to_sym] || {}
|
|
61
|
-
|
|
62
|
-
if !gcovr_opts[:fail_under_decision].nil? && !min_version?( @gcovr_version, 7, 0 )
|
|
63
|
-
raise CeedlingException.new(
|
|
64
|
-
":gcov ↳ :gcovr ↳ :fail_under_decision ➡️ requires gcovr 7 or higher " \
|
|
65
|
-
"(found #{@gcovr_version.major}.#{@gcovr_version.minor})"
|
|
66
|
-
)
|
|
67
|
-
end
|
|
120
|
+
gcovr_opts = @config[GCOVR_SETTING_PREFIX] || {}
|
|
121
|
+
|
|
122
|
+
enforce_version_gates!(
|
|
123
|
+
{
|
|
124
|
+
:mcdc => @configurator.gcov_mcdc,
|
|
125
|
+
:fail_under_decision => gcovr_opts[:fail_under_decision],
|
|
126
|
+
:decisions => gcovr_opts[:decisions],
|
|
127
|
+
:jacoco => report_enabled?( @config, ReportTypes::JACOCO ),
|
|
128
|
+
:lcov => report_enabled?( @config, ReportTypes::LCOV ) && !report_generator_enabled?,
|
|
129
|
+
},
|
|
130
|
+
@gcovr_version,
|
|
131
|
+
VERSION_GATES
|
|
132
|
+
)
|
|
68
133
|
|
|
69
|
-
|
|
70
|
-
# gcovr's own changelog and a real gcovr 5.1/5.0 install (5.1 accepts --decisions
|
|
71
|
-
# and proceeds; 5.0 rejects it outright as unrecognized).
|
|
72
|
-
if gcovr_opts[:decisions] && !min_version?( @gcovr_version, 5, 1 )
|
|
73
|
-
raise CeedlingException.new(
|
|
74
|
-
":gcov ↳ :gcovr ↳ :decisions ➡️ requires gcovr 5.1 or higher " \
|
|
75
|
-
"(found #{@gcovr_version.major}.#{@gcovr_version.minor})"
|
|
76
|
-
)
|
|
77
|
-
end
|
|
134
|
+
@lcov_supported = lcov_supported?()
|
|
78
135
|
end
|
|
79
136
|
|
|
80
137
|
# Generate the gcovr report(s) specified in the options.
|
|
@@ -89,13 +146,13 @@ class GcovrReportinator < GcovReportinator
|
|
|
89
146
|
# gcovr 4.2+ can produce all report formats in one invocation;
|
|
90
147
|
# earlier versions require a separate call for each format.
|
|
91
148
|
if min_version?(@gcovr_version, 4, 2)
|
|
92
|
-
generate_reports_modern(gcovr_opts, args_common, exception_on_fail
|
|
149
|
+
generate_reports_modern(gcovr_opts, args_common, exception_on_fail)
|
|
93
150
|
else
|
|
94
|
-
generate_reports_legacy(gcovr_opts, args_common, exception_on_fail
|
|
151
|
+
generate_reports_legacy(gcovr_opts, args_common, exception_on_fail)
|
|
95
152
|
end
|
|
96
153
|
|
|
97
154
|
# Text report is always a standalone gcovr invocation regardless of version.
|
|
98
|
-
generate_text_report(
|
|
155
|
+
generate_text_report(gcovr_opts, args_common, exception_on_fail) if report_enabled?(gcovr_opts, ReportTypes::TEXT)
|
|
99
156
|
end
|
|
100
157
|
|
|
101
158
|
### Private ###
|
|
@@ -109,97 +166,43 @@ class GcovrReportinator < GcovReportinator
|
|
|
109
166
|
args = ""
|
|
110
167
|
args += "--config \"#{gcovr_opts[:config_file]}\" " if config_file_in_use?(gcovr_opts)
|
|
111
168
|
|
|
169
|
+
# #1159 -- applied even with a :config_file: in use (unlike every other option below):
|
|
170
|
+
# this is the escape hatch for whatever gcovr flag Ceedling has no named option for (e.g.
|
|
171
|
+
# limiting gcovr's search root), so it needs to keep working right alongside a config file,
|
|
172
|
+
# not be deferred to it. Mirrors ReportGeneratorReportinator#build_optional_args' identical
|
|
173
|
+
# :custom_args: handling for the ReportGenerator side (both call the shared base-class
|
|
174
|
+
# build_custom_args).
|
|
175
|
+
args += build_custom_args(gcovr_opts[:custom_args])
|
|
176
|
+
|
|
112
177
|
# When a config file is provided, defer all other options to it.
|
|
113
178
|
# This prevents Ceedling from overriding config file values with its CLI arguments.
|
|
114
179
|
# --root (${1}) is always passed; --exclude (${2}) is nil when a config file is present,
|
|
115
180
|
# so the tool executor omits those flags and the config file governs exclusions.
|
|
116
181
|
return args if config_file_in_use?(gcovr_opts)
|
|
117
182
|
|
|
118
|
-
args += "--filter \"#{gcovr_opts[:report_include]}\" " unless gcovr_opts[:report_include].nil?
|
|
119
|
-
args += "--gcov-filter \"#{gcovr_opts[:gcov_filter]}\" " unless gcovr_opts[:gcov_filter].nil?
|
|
120
|
-
args += "--gcov-exclude \"#{gcovr_opts[:gcov_exclude]}\" " unless gcovr_opts[:gcov_exclude].nil?
|
|
121
|
-
args += "--exclude-directories \"#{gcovr_opts[:exclude_directories]}\" " unless gcovr_opts[:exclude_directories].nil?
|
|
122
|
-
# gcovr 7.0 deprecated --branches/--sort-uncovered/--sort-percentage in favor of
|
|
123
|
-
# these renamed equivalents (still functional, but warn, below 7.0); use whichever
|
|
124
|
-
# form the detected gcovr_version actually expects.
|
|
125
|
-
if gcovr_opts[:branches]
|
|
126
|
-
args += (min_version?(gcovr_version, 7, 0) ? "--txt-metric branch " : "--branches ")
|
|
127
|
-
end
|
|
128
|
-
if gcovr_opts[:sort_uncovered]
|
|
129
|
-
args += (min_version?(gcovr_version, 7, 0) ? "--sort uncovered-number " : "--sort-uncovered ")
|
|
130
|
-
end
|
|
131
|
-
if gcovr_opts[:sort_percentage]
|
|
132
|
-
args += (min_version?(gcovr_version, 7, 0) ? "--sort uncovered-percent " : "--sort-percentage ")
|
|
133
|
-
end
|
|
134
|
-
args += "--print-summary " if gcovr_opts[:print_summary]
|
|
135
|
-
args += "--gcov-executable \"#{gcovr_opts[:gcov_executable]}\" " unless gcovr_opts[:gcov_executable].nil?
|
|
136
|
-
args += "--exclude-unreachable-branches " if gcovr_opts[:exclude_unreachable_branches]
|
|
137
|
-
args += "--exclude-throw-branches " if gcovr_opts[:exclude_throw_branches]
|
|
138
|
-
args += "--use-gcov-files " if gcovr_opts[:use_gcov_files]
|
|
139
|
-
args += "--gcov-ignore-parse-errors " if gcovr_opts[:gcov_ignore_parse_errors]
|
|
140
|
-
args += "--keep " if gcovr_opts[:keep]
|
|
141
|
-
args += "--delete " if gcovr_opts[:delete]
|
|
142
|
-
args += "-j #{gcovr_opts[:threads]} " if !(gcovr_opts[:threads].nil?) && (gcovr_opts[:threads].is_a? Integer)
|
|
143
|
-
|
|
144
|
-
# Version check -- merge mode is only available and relevant as of gcovr 6.0
|
|
145
|
-
if min_version?( gcovr_version, 6, 0 )
|
|
146
|
-
args += "--merge-mode-functions \"#{gcovr_opts[:merge_mode_function]}\" " unless gcovr_opts[:merge_mode_function].nil?
|
|
147
|
-
end
|
|
148
|
-
|
|
149
183
|
# --fail-under-decision is a no-op to gcovr without --decisions also present (that's
|
|
150
184
|
# what actually turns decision-coverage analysis on) -- :fail_under_decision implies
|
|
151
185
|
# it automatically so the threshold option can never be configured into silently
|
|
152
|
-
# failing outright. initialize already guarantees gcovr
|
|
153
|
-
#
|
|
154
|
-
|
|
155
|
-
args += "--decisions " if gcovr_opts[:decisions] || !gcovr_opts[:fail_under_decision].nil?
|
|
156
|
-
|
|
157
|
-
[:fail_under_line,
|
|
158
|
-
:fail_under_branch,
|
|
159
|
-
:fail_under_decision,
|
|
160
|
-
:fail_under_function,
|
|
161
|
-
:source_encoding,
|
|
162
|
-
:object_directory
|
|
163
|
-
].each do |opt|
|
|
164
|
-
next if gcovr_opts[opt].nil?
|
|
165
|
-
|
|
166
|
-
value = gcovr_opts[opt]
|
|
167
|
-
|
|
168
|
-
# Value sanity checks for :fail_under_* settings
|
|
169
|
-
if opt.to_s =~ /fail_/
|
|
170
|
-
if not value.is_a? Integer
|
|
171
|
-
raise CeedlingException.new(":gcov ↳ :gcovr ↳ :#{opt} ➡️ '#{value}' must be an integer")
|
|
172
|
-
elsif (value < 1) || (value > 100)
|
|
173
|
-
raise CeedlingException.new(":gcov ↳ :gcovr ↳ :#{opt} ➡️ '#{value}' must be an integer percentage 1 – 100")
|
|
174
|
-
end
|
|
175
|
-
end
|
|
186
|
+
# failing outright. initialize already guarantees the gcovr version needed for
|
|
187
|
+
# whichever of the two triggered this.
|
|
188
|
+
gcovr_opts[:decisions] = true if gcovr_opts[:decisions] || !gcovr_opts[:fail_under_decision].nil?
|
|
176
189
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
args += "--#{opt.to_s.gsub('_','-')} \"#{value}\" " unless value.nil?
|
|
182
|
-
else
|
|
183
|
-
args += "--#{opt.to_s.gsub('_','-')} #{value} " unless value.nil?
|
|
184
|
-
end
|
|
185
|
-
end
|
|
190
|
+
args += build_args_from_table(
|
|
191
|
+
gcovr_opts, GCOVR_COMMON_ARGS,
|
|
192
|
+
version: gcovr_version, component_prefix: ":gcov ↳ :gcovr"
|
|
193
|
+
)
|
|
186
194
|
|
|
187
195
|
return args
|
|
188
196
|
end
|
|
189
197
|
|
|
190
198
|
|
|
191
199
|
# Build the gcovr Cobertura XML report generation arguments.
|
|
192
|
-
def args_builder_cobertura(
|
|
193
|
-
gcovr_opts = collect_gcovr_opts(opts)
|
|
200
|
+
def args_builder_cobertura(gcovr_opts, use_output_option=false)
|
|
194
201
|
args = ""
|
|
195
202
|
|
|
196
203
|
# Determine if the Cobertura XML report is enabled. Defaults to disabled.
|
|
197
|
-
if report_enabled?(
|
|
198
|
-
|
|
199
|
-
artifacts_file_cobertura = GCOV_GCOVR_ARTIFACTS_FILE_COBERTURA
|
|
200
|
-
if !(gcovr_opts[:cobertura_artifact_filename].nil?)
|
|
201
|
-
artifacts_file_cobertura = File.join(GCOV_GCOVR_ARTIFACTS_PATH, gcovr_opts[:cobertura_artifact_filename])
|
|
202
|
-
end
|
|
204
|
+
if report_enabled?(gcovr_opts, ReportTypes::COBERTURA)
|
|
205
|
+
artifacts_file_cobertura = artifact_file(gcovr_opts, :cobertura_artifact_filename, GCOV_GCOVR_ARTIFACTS_FILE_COBERTURA)
|
|
203
206
|
|
|
204
207
|
args += "--xml-pretty " if gcovr_opts[:cobertura_pretty] && !config_file_in_use?(gcovr_opts)
|
|
205
208
|
args += "--xml #{use_output_option ? "--output " : ""} \"#{artifacts_file_cobertura}\" "
|
|
@@ -210,17 +213,12 @@ class GcovrReportinator < GcovReportinator
|
|
|
210
213
|
|
|
211
214
|
|
|
212
215
|
# Build the gcovr SonarQube report generation arguments.
|
|
213
|
-
def args_builder_sonarqube(
|
|
214
|
-
gcovr_opts = collect_gcovr_opts(opts)
|
|
216
|
+
def args_builder_sonarqube(gcovr_opts, use_output_option=false)
|
|
215
217
|
args = ""
|
|
216
218
|
|
|
217
219
|
# Determine if the gcovr SonarQube XML report is enabled. Defaults to disabled.
|
|
218
|
-
if report_enabled?(
|
|
219
|
-
|
|
220
|
-
artifacts_file_sonarqube = GCOV_GCOVR_ARTIFACTS_FILE_SONARQUBE
|
|
221
|
-
if !(gcovr_opts[:sonarqube_artifact_filename].nil?)
|
|
222
|
-
artifacts_file_sonarqube = File.join(GCOV_GCOVR_ARTIFACTS_PATH, gcovr_opts[:sonarqube_artifact_filename])
|
|
223
|
-
end
|
|
220
|
+
if report_enabled?(gcovr_opts, ReportTypes::SONARQUBE)
|
|
221
|
+
artifacts_file_sonarqube = artifact_file(gcovr_opts, :sonarqube_artifact_filename, GCOV_GCOVR_ARTIFACTS_FILE_SONARQUBE)
|
|
224
222
|
|
|
225
223
|
args += "--sonarqube #{use_output_option ? "--output " : ""} \"#{artifacts_file_sonarqube}\" "
|
|
226
224
|
end
|
|
@@ -230,17 +228,12 @@ class GcovrReportinator < GcovReportinator
|
|
|
230
228
|
|
|
231
229
|
|
|
232
230
|
# Build the gcovr JSON report generation arguments.
|
|
233
|
-
def args_builder_json(
|
|
234
|
-
gcovr_opts = collect_gcovr_opts( opts )
|
|
231
|
+
def args_builder_json(gcovr_opts, use_output_option=false)
|
|
235
232
|
args = ""
|
|
236
233
|
|
|
237
234
|
# Determine if the gcovr JSON report is enabled. Defaults to disabled.
|
|
238
|
-
if report_enabled?(
|
|
239
|
-
|
|
240
|
-
artifacts_file_json = GCOV_GCOVR_ARTIFACTS_FILE_JSON
|
|
241
|
-
if !(gcovr_opts[:json_artifact_filename].nil?)
|
|
242
|
-
artifacts_file_json = File.join(GCOV_GCOVR_ARTIFACTS_PATH, gcovr_opts[:json_artifact_filename])
|
|
243
|
-
end
|
|
235
|
+
if report_enabled?( gcovr_opts, ReportTypes::JSON )
|
|
236
|
+
artifacts_file_json = artifact_file(gcovr_opts, :json_artifact_filename, GCOV_GCOVR_ARTIFACTS_FILE_JSON)
|
|
244
237
|
|
|
245
238
|
args += "--json-pretty " if gcovr_opts[:json_pretty] && !config_file_in_use?(gcovr_opts)
|
|
246
239
|
# Note: In gcovr 4.2, the JSON report is output only when the --output option is specified.
|
|
@@ -252,35 +245,83 @@ class GcovrReportinator < GcovReportinator
|
|
|
252
245
|
end
|
|
253
246
|
|
|
254
247
|
|
|
248
|
+
# Build the gcovr JaCoCo XML report generation arguments.
|
|
249
|
+
# gcovr's --jacoco-pretty implies --jacoco, but both are given so the artifact path is explicit.
|
|
250
|
+
def args_builder_jacoco(gcovr_opts)
|
|
251
|
+
return '' unless report_enabled?( gcovr_opts, ReportTypes::JACOCO )
|
|
252
|
+
|
|
253
|
+
artifacts_file_jacoco = artifact_file( gcovr_opts, :jacoco_artifact_filename, GCOV_GCOVR_ARTIFACTS_FILE_JACOCO )
|
|
254
|
+
|
|
255
|
+
args = ''
|
|
256
|
+
args += '--jacoco-pretty ' if gcovr_opts[:jacoco_pretty] && !config_file_in_use?( gcovr_opts )
|
|
257
|
+
|
|
258
|
+
return args + "--jacoco \"#{artifacts_file_jacoco}\" "
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
# Build the gcovr LCOV report generation arguments.
|
|
263
|
+
# The comment and test name are withheld with a config file, which then supplies them.
|
|
264
|
+
def args_builder_lcov(gcovr_opts)
|
|
265
|
+
return '' unless @lcov_supported && report_enabled?( gcovr_opts, ReportTypes::LCOV )
|
|
266
|
+
|
|
267
|
+
artifacts_file_lcov = artifact_file( gcovr_opts, :lcov_artifact_filename, GCOV_GCOVR_ARTIFACTS_FILE_LCOV )
|
|
268
|
+
|
|
269
|
+
args = ''
|
|
270
|
+
if !config_file_in_use?( gcovr_opts )
|
|
271
|
+
args += "--lcov-comment \"#{gcovr_opts[:lcov_comment]}\" " unless gcovr_opts[:lcov_comment].nil?
|
|
272
|
+
args += "--lcov-test-name \"#{gcovr_opts[:lcov_test_name]}\" " unless gcovr_opts[:lcov_test_name].nil?
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
return args + "--lcov \"#{artifacts_file_lcov}\" "
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
# gcovr writes LCOV from 7.0. With ReportGenerator also enabled, an older gcovr leaves lcov
|
|
280
|
+
# to ReportGenerator rather than stopping the build, and says so. The gate above covers
|
|
281
|
+
# gcovr as lcov's sole utility.
|
|
282
|
+
def lcov_supported?
|
|
283
|
+
return true if min_version?( @gcovr_version, 7, 0 )
|
|
284
|
+
return false unless report_enabled?( @config, ReportTypes::LCOV )
|
|
285
|
+
|
|
286
|
+
@loginator.log(
|
|
287
|
+
":gcov ↳ :reports ➡️ Gcovr LCOV reports require gcovr 7.0 or higher (found " \
|
|
288
|
+
"#{@gcovr_version.major}.#{@gcovr_version.minor}). Only ReportGenerator generates lcov.",
|
|
289
|
+
Verbosity::COMPLAIN
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
return false
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
def report_generator_enabled?
|
|
297
|
+
return Array( @config[:gcov_utilities] ).any? { |utility| utility.casecmp?( GCOV_UTILITY_NAME_REPORT_GENERATOR ) }
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
|
|
255
301
|
# Build the gcovr HTML report generation arguments.
|
|
256
|
-
def args_builder_html(
|
|
257
|
-
gcovr_opts = collect_gcovr_opts(opts)
|
|
302
|
+
def args_builder_html(gcovr_opts, use_output_option=false)
|
|
258
303
|
args = ""
|
|
259
304
|
|
|
260
305
|
# Determine if the gcovr HTML report is enabled.
|
|
261
|
-
html_enabled = report_enabled?(
|
|
262
|
-
report_enabled?(
|
|
306
|
+
html_enabled = report_enabled?(gcovr_opts, ReportTypes::HTML_BASIC) ||
|
|
307
|
+
report_enabled?(gcovr_opts, ReportTypes::HTML_DETAILED)
|
|
263
308
|
|
|
264
309
|
if html_enabled
|
|
265
|
-
|
|
266
|
-
artifacts_file_html = GCOV_GCOVR_ARTIFACTS_FILE_HTML
|
|
267
|
-
if !(gcovr_opts[:html_artifact_filename].nil?)
|
|
268
|
-
artifacts_file_html = File.join(GCOV_GCOVR_ARTIFACTS_PATH, gcovr_opts[:html_artifact_filename])
|
|
269
|
-
end
|
|
310
|
+
artifacts_file_html = artifact_file(gcovr_opts, :html_artifact_filename, GCOV_GCOVR_ARTIFACTS_FILE_HTML)
|
|
270
311
|
|
|
271
|
-
is_html_report_type_detailed = (
|
|
312
|
+
is_html_report_type_detailed = (gcovr_opts[:gcov_html_report_type].is_a? String) && (gcovr_opts[:gcov_html_report_type].casecmp("detailed") == 0)
|
|
272
313
|
|
|
273
|
-
args += "--html-details " if is_html_report_type_detailed || report_enabled?(
|
|
314
|
+
args += "--html-details " if is_html_report_type_detailed || report_enabled?(gcovr_opts, ReportTypes::HTML_DETAILED)
|
|
274
315
|
|
|
275
316
|
# These options duplicate settings a gcovr configuration file would provide, so they're
|
|
276
317
|
# withheld when :config_file is set to avoid silently overriding the file's values.
|
|
277
318
|
if !config_file_in_use?(gcovr_opts)
|
|
278
319
|
args += "--html-title \"#{gcovr_opts[:html_title]}\" " unless gcovr_opts[:html_title].nil?
|
|
279
|
-
args += "--html-absolute-paths " if
|
|
320
|
+
args += "--html-absolute-paths " if gcovr_opts[:html_absolute_paths]
|
|
280
321
|
args += "--html-encoding \"#{gcovr_opts[:html_encoding]}\" " unless gcovr_opts[:html_encoding].nil?
|
|
281
322
|
|
|
282
323
|
[:html_medium_threshold, :html_high_threshold].each do |opt|
|
|
283
|
-
args += "--#{opt.to_s.
|
|
324
|
+
args += "--#{opt.to_s.tr('_','-')} #{gcovr_opts[opt]} " unless gcovr_opts[opt].nil?
|
|
284
325
|
end
|
|
285
326
|
end
|
|
286
327
|
|
|
@@ -294,14 +335,12 @@ class GcovrReportinator < GcovReportinator
|
|
|
294
335
|
|
|
295
336
|
# Generate a gcovr text report.
|
|
296
337
|
# @summary is set by run_gcovr when :print_summary is enabled.
|
|
297
|
-
def generate_text_report(
|
|
298
|
-
gcovr_opts = collect_gcovr_opts(opts)
|
|
338
|
+
def generate_text_report(gcovr_opts, args_common, boom)
|
|
299
339
|
args_text = ""
|
|
300
340
|
message_text = "Generating a text coverage report"
|
|
301
341
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
artifacts_file_txt = File.join(GCOV_GCOVR_ARTIFACTS_PATH, filename)
|
|
342
|
+
default_txt = File.join(GCOV_GCOVR_ARTIFACTS_PATH, GCOV_GCOVR_DEFAULT_TEXT_ARTIFACT_FILENAME)
|
|
343
|
+
artifacts_file_txt = artifact_file(gcovr_opts, :text_artifact_filename, default_txt)
|
|
305
344
|
args_text += "--output \"#{artifacts_file_txt}\" "
|
|
306
345
|
message_text += " in '#{GCOV_GCOVR_ARTIFACTS_PATH}'"
|
|
307
346
|
|
|
@@ -316,21 +355,27 @@ class GcovrReportinator < GcovReportinator
|
|
|
316
355
|
# Accumulate per-format args and track which formats are active for progress logging.
|
|
317
356
|
# As required by gcovr 4.2, --html arguments must be appended last.
|
|
318
357
|
# @summary is set by run_gcovr when :print_summary is enabled.
|
|
319
|
-
def generate_reports_modern(gcovr_opts, args_common, exception_on_fail
|
|
358
|
+
def generate_reports_modern(gcovr_opts, args_common, exception_on_fail)
|
|
320
359
|
reports = []
|
|
321
360
|
args = args_common
|
|
322
361
|
|
|
323
|
-
args += (_args = args_builder_cobertura(
|
|
362
|
+
args += (_args = args_builder_cobertura(gcovr_opts, false))
|
|
324
363
|
reports << "Cobertura XML" unless _args.empty?
|
|
325
364
|
|
|
326
|
-
args += (_args = args_builder_sonarqube(
|
|
365
|
+
args += (_args = args_builder_sonarqube(gcovr_opts, false))
|
|
327
366
|
reports << "SonarQube" unless _args.empty?
|
|
328
367
|
|
|
329
|
-
args += (_args = args_builder_json(
|
|
368
|
+
args += (_args = args_builder_json(gcovr_opts, true))
|
|
330
369
|
reports << "JSON" unless _args.empty?
|
|
331
370
|
|
|
371
|
+
args += (_args = args_builder_jacoco(gcovr_opts))
|
|
372
|
+
reports << "JaCoCo XML" unless _args.empty?
|
|
373
|
+
|
|
374
|
+
args += (_args = args_builder_lcov(gcovr_opts))
|
|
375
|
+
reports << "LCOV" unless _args.empty?
|
|
376
|
+
|
|
332
377
|
# --html must be last (gcovr 4.2 requirement)
|
|
333
|
-
args += (_args = args_builder_html(
|
|
378
|
+
args += (_args = args_builder_html(gcovr_opts, false))
|
|
334
379
|
reports << "HTML" unless _args.empty?
|
|
335
380
|
|
|
336
381
|
reports.each do |report|
|
|
@@ -350,9 +395,9 @@ class GcovrReportinator < GcovReportinator
|
|
|
350
395
|
# gcovr 4.1 and earlier support only HTML and Cobertura XML, and each must be
|
|
351
396
|
# generated with a separate gcovr call. SonarQube and JSON are unavailable.
|
|
352
397
|
# @summary is set by run_gcovr when :print_summary is enabled.
|
|
353
|
-
def generate_reports_legacy(gcovr_opts, args_common, exception_on_fail
|
|
354
|
-
args_html = args_builder_html(
|
|
355
|
-
args_cobertura = args_builder_cobertura(
|
|
398
|
+
def generate_reports_legacy(gcovr_opts, args_common, exception_on_fail)
|
|
399
|
+
args_html = args_builder_html(gcovr_opts, true)
|
|
400
|
+
args_cobertura = args_builder_cobertura(gcovr_opts, true)
|
|
356
401
|
|
|
357
402
|
if args_html.length > 0
|
|
358
403
|
@loginator.log(
|
|
@@ -371,7 +416,7 @@ class GcovrReportinator < GcovReportinator
|
|
|
371
416
|
|
|
372
417
|
|
|
373
418
|
# gcovr options silently ignored whenever :config_file is set (dropped by args_builder_common's
|
|
374
|
-
# early return, or gated in args_builder_cobertura/json/html) -- in that case all such
|
|
419
|
+
# early return, or gated in args_builder_cobertura/json/jacoco/lcov/html) -- in that case all such
|
|
375
420
|
# configuration must come from the gcovr configuration file itself.
|
|
376
421
|
IGNORED_WHEN_CONFIG_FILE_SET = [
|
|
377
422
|
:report_include, :report_exclude, :gcov_filter, :gcov_exclude, :exclude_directories,
|
|
@@ -380,10 +425,19 @@ class GcovrReportinator < GcovReportinator
|
|
|
380
425
|
:keep, :delete, :threads, :merge_mode_function,
|
|
381
426
|
:fail_under_line, :fail_under_branch, :fail_under_decision, :fail_under_function,
|
|
382
427
|
:source_encoding, :object_directory,
|
|
383
|
-
:cobertura_pretty, :json_pretty,
|
|
428
|
+
:cobertura_pretty, :json_pretty, :jacoco_pretty, :lcov_comment, :lcov_test_name,
|
|
384
429
|
:html_title, :html_absolute_paths, :html_encoding, :html_medium_threshold, :html_high_threshold
|
|
385
430
|
].freeze
|
|
386
431
|
|
|
432
|
+
# A report writes to its default artifact file unless its :*_artifact_filename option names
|
|
433
|
+
# another. Either way the file lands beneath the gcovr artifacts path.
|
|
434
|
+
def artifact_file(gcovr_opts, key, default)
|
|
435
|
+
filename = gcovr_opts[key]
|
|
436
|
+
|
|
437
|
+
return filename.nil? ? default : File.join(GCOV_GCOVR_ARTIFACTS_PATH, filename)
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
|
|
387
441
|
# True when a gcovr configuration file is in use, meaning Ceedling must defer to it and
|
|
388
442
|
# withhold any option that would silently override its settings.
|
|
389
443
|
def config_file_in_use?(gcovr_opts)
|
|
@@ -393,7 +447,7 @@ class GcovrReportinator < GcovReportinator
|
|
|
393
447
|
|
|
394
448
|
# Validate the gcovr plugin configuration for known-bad combinations.
|
|
395
449
|
def check_config_options
|
|
396
|
-
gcovr_opts = @config[GCOVR_SETTING_PREFIX
|
|
450
|
+
gcovr_opts = @config[GCOVR_SETTING_PREFIX] || {}
|
|
397
451
|
return unless config_file_in_use?(gcovr_opts)
|
|
398
452
|
|
|
399
453
|
ignored = IGNORED_WHEN_CONFIG_FILE_SET.select { |key| !gcovr_opts[key].nil? }
|
|
@@ -406,12 +460,15 @@ class GcovrReportinator < GcovReportinator
|
|
|
406
460
|
end
|
|
407
461
|
|
|
408
462
|
|
|
409
|
-
# Get the gcovr options from the project options
|
|
463
|
+
# Get the gcovr options from the project options, plus the raw project options needed
|
|
464
|
+
# for report-type/HTML-detail lookups that don't live under the :gcovr sub-namespace --
|
|
465
|
+
# merged into one hash so every args_builder_* method needs only this single argument.
|
|
410
466
|
def collect_gcovr_opts(opts)
|
|
411
467
|
# dup prevents repeated calls from accumulating mutations on the shared opts hash.
|
|
412
|
-
#
|
|
413
|
-
#
|
|
414
|
-
|
|
468
|
+
# This is computed once per generate_reports() call and threaded through, so this
|
|
469
|
+
# guards against generate_reports() itself being called more than once, not (as
|
|
470
|
+
# before) against each args_builder_* method re-deriving and re-mutating its own copy.
|
|
471
|
+
_opts = opts[GCOVR_SETTING_PREFIX].dup
|
|
415
472
|
|
|
416
473
|
if config_file_in_use?(_opts)
|
|
417
474
|
# A gcovr config file is authoritative; CLI args override it, so injecting
|
|
@@ -433,6 +490,8 @@ class GcovrReportinator < GcovReportinator
|
|
|
433
490
|
# with and without --decisions; that flag only adds its own separate, additive
|
|
434
491
|
# Decision data alongside it). :mcdc's own gcovr-version floor is still enforced in
|
|
435
492
|
# initialize -- there's just nothing more for gcovr's own CLI args to do here.
|
|
493
|
+
_opts[:gcov_reports] = opts[:gcov_reports]
|
|
494
|
+
_opts[:gcov_html_report_type] = opts[:gcov_html_report_type]
|
|
436
495
|
|
|
437
496
|
return _opts
|
|
438
497
|
end
|
|
@@ -440,29 +499,44 @@ class GcovrReportinator < GcovReportinator
|
|
|
440
499
|
|
|
441
500
|
# Build a combined Python regex for gcovr's `--exclude` flag covering all
|
|
442
501
|
# non-production file categories: test files, support files, and generated/framework files.
|
|
443
|
-
# Path/prefix values are config-driven, so they're Regexp-escaped --
|
|
444
|
-
#
|
|
445
|
-
#
|
|
502
|
+
# Path/prefix values are config-driven, so they're Regexp-escaped -- the same treatment
|
|
503
|
+
# already given the source-extension alternation -- rather than interpolated raw, which
|
|
504
|
+
# would let a metacharacter (e.g. a literal '.') in a project's own path silently
|
|
505
|
+
# over- or under-match.
|
|
446
506
|
def build_report_exclusions
|
|
447
507
|
data = build_exclusion_data
|
|
448
508
|
patterns = []
|
|
449
509
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
510
|
+
# A source extension can be configured as more than one string, so its escaped forms
|
|
511
|
+
# are joined into one alternation rather than assuming there's only ever one to match.
|
|
512
|
+
src_extension_alternation = data[:src_extension].to_a.map { |ext| Regexp.escape(ext) }.join('|')
|
|
513
|
+
test_prefix = Regexp.escape(data[:test_prefix].to_s)
|
|
514
|
+
build_root = Regexp.escape(strip_leading_dot_slash(data[:build_root].to_s))
|
|
453
515
|
|
|
454
516
|
data[:test_paths].each do |path|
|
|
455
|
-
# Test files (e.g. test_foo.c)
|
|
456
|
-
|
|
517
|
+
# Test files (e.g. test_foo.c). '(?:^|/)path/' requires the configured path to
|
|
518
|
+
# appear as a real path segment -- preceded by string-start or '/', never mid-word,
|
|
519
|
+
# so a path merely containing the configured directory name as a substring (e.g.
|
|
520
|
+
# 'latest' containing 'test') isn't treated as that directory. '(?:.*/)?' still
|
|
521
|
+
# allows an arbitrary nested subdirectory before the basename, but the required
|
|
522
|
+
# 'test_prefix[^/]+' can never itself cross a '/', so a same-named subdirectory
|
|
523
|
+
# (e.g. test/test_helpers/) never stands in for the file's own basename.
|
|
524
|
+
patterns << ".*(?:^|/)#{Regexp.escape(strip_leading_dot_slash(path))}/(?:.*/)?#{test_prefix}[^/]+(?:#{src_extension_alternation})$"
|
|
457
525
|
end
|
|
458
526
|
|
|
459
|
-
# Support files (e.g. helpers, stubs, fixtures) — never production source
|
|
527
|
+
# Support files (e.g. helpers, stubs, fixtures) — never production source.
|
|
528
|
+
# Same path-segment anchoring as above; the trailing '.+' is intentionally left
|
|
529
|
+
# unrestricted (unlike the test-file pattern) since every file anywhere under a
|
|
530
|
+
# configured support path is non-production, not just ones with a particular basename.
|
|
460
531
|
data[:support_paths].each do |path|
|
|
461
|
-
patterns << "
|
|
532
|
+
patterns << ".*(?:^|/)#{Regexp.escape(strip_leading_dot_slash(path))}/.+(?:#{src_extension_alternation})$"
|
|
462
533
|
end
|
|
463
534
|
|
|
464
|
-
# Any generated files for tests or vendored framework C source files below the root
|
|
465
|
-
|
|
535
|
+
# Any generated files for tests or vendored framework C source files below the root
|
|
536
|
+
# of the build directory. Same path-segment anchoring as above, so a directory that
|
|
537
|
+
# merely contains the build root's name as a substring (e.g. 'unbuild') is not
|
|
538
|
+
# treated as the build root.
|
|
539
|
+
patterns << ".*(?:^|/)#{build_root}/.+\\#{EXTENSION_CORE_SOURCE}$"
|
|
466
540
|
|
|
467
541
|
return patterns
|
|
468
542
|
end
|
|
@@ -536,30 +610,13 @@ class GcovrReportinator < GcovReportinator
|
|
|
536
610
|
end
|
|
537
611
|
|
|
538
612
|
|
|
539
|
-
# Get the gcovr version number as
|
|
613
|
+
# Get the gcovr version number as a ToolVersion struct.
|
|
540
614
|
def get_gcovr_version()
|
|
541
|
-
command = @tool_executor.build_command_line( TOOLS_GCOV_GCOVR_VERSION, [] )
|
|
542
|
-
|
|
543
615
|
@loginator.lazy( Verbosity::OBNOXIOUS ) do
|
|
544
616
|
@reportinator.generate_progress("Collecting gcovr version for conditional feature handling")
|
|
545
617
|
end
|
|
546
618
|
|
|
547
|
-
|
|
548
|
-
version_match = shell_result[:output].match(/gcovr (\d+)\.(\d+)/)
|
|
549
|
-
|
|
550
|
-
if version_match.nil? || version_match[1].nil? || version_match[2].nil?
|
|
551
|
-
raise CeedlingException.new( "Could not collect `gcovr` version from its command line" )
|
|
552
|
-
end
|
|
553
|
-
|
|
554
|
-
return GcovToolVersion.new( version_match[1].to_i, version_match[2].to_i )
|
|
555
|
-
end
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
# Process GcovToolVersion struct from `get_gcovr_version()`
|
|
559
|
-
def min_version?(version, major, minor)
|
|
560
|
-
return true if version.major > major
|
|
561
|
-
return true if version.major == major && version.minor >= minor
|
|
562
|
-
return false
|
|
619
|
+
detect_tool_version( TOOLS_GCOV_GCOVR_VERSION, /gcovr (\d+)\.(\d+)/, tool_label: 'gcovr' )
|
|
563
620
|
end
|
|
564
621
|
|
|
565
622
|
|
|
@@ -570,32 +627,17 @@ class GcovrReportinator < GcovReportinator
|
|
|
570
627
|
def gcovr_exec_exception?(opts, exitcode, boom, shell_result=nil)
|
|
571
628
|
violations = []
|
|
572
629
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
# Special handling of exit code 4 with --fail-under-branch
|
|
581
|
-
if ((exitcode & 4) == 4) and !opts[:fail_under_branch].nil?
|
|
582
|
-
fallback = "Branch coverage is less than the configured minimum of #{opts[:fail_under_branch]}%"
|
|
583
|
-
violations << "Gcovr ⏩️ #{extract_gcovr_error_message( shell_result ) || fallback}"
|
|
584
|
-
exitcode &= ~4
|
|
585
|
-
end
|
|
586
|
-
|
|
587
|
-
# Special handling of exit code 8 with --fail-under-decision
|
|
588
|
-
if ((exitcode & 8) == 8) and !opts[:fail_under_decision].nil?
|
|
589
|
-
fallback = "Decision coverage is less than the configured minimum of #{opts[:fail_under_decision]}%"
|
|
590
|
-
violations << "Gcovr ⏩️ #{extract_gcovr_error_message( shell_result ) || fallback}"
|
|
591
|
-
exitcode &= ~8
|
|
592
|
-
end
|
|
630
|
+
{
|
|
631
|
+
2 => [:fail_under_line, 'Line'],
|
|
632
|
+
4 => [:fail_under_branch, 'Branch'],
|
|
633
|
+
8 => [:fail_under_decision, 'Decision'],
|
|
634
|
+
16 => [:fail_under_function, 'Function'],
|
|
635
|
+
}.each do |bit, (option, label)|
|
|
636
|
+
next unless ((exitcode & bit) == bit) && !opts[option].nil?
|
|
593
637
|
|
|
594
|
-
|
|
595
|
-
if ((exitcode & 16) == 16) and !opts[:fail_under_function].nil?
|
|
596
|
-
fallback = "Function coverage is less than the configured minimum of #{opts[:fail_under_function]}%"
|
|
638
|
+
fallback = "#{label} coverage is less than the configured minimum of #{opts[option]}%"
|
|
597
639
|
violations << "Gcovr ⏩️ #{extract_gcovr_error_message( shell_result ) || fallback}"
|
|
598
|
-
exitcode &= ~
|
|
640
|
+
exitcode &= ~bit
|
|
599
641
|
end
|
|
600
642
|
|
|
601
643
|
if boom
|
|
@@ -610,8 +652,8 @@ class GcovrReportinator < GcovReportinator
|
|
|
610
652
|
|
|
611
653
|
|
|
612
654
|
# Returns true if the given report type is enabled, otherwise returns false.
|
|
613
|
-
def report_enabled?(
|
|
614
|
-
return
|
|
655
|
+
def report_enabled?(gcovr_opts, report_type)
|
|
656
|
+
return Array( gcovr_opts[:gcov_reports] ).map( &:upcase ).include?( report_type.upcase )
|
|
615
657
|
end
|
|
616
658
|
|
|
617
659
|
end
|