ceedling 1.1.10 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +64 -45
- data/Rakefile +769 -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 +28 -0
- data/bin/cli.rb +78 -47
- data/bin/cli_handler.rb +96 -58
- data/bin/cli_helper.rb +95 -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 +337 -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 +35 -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 +370 -531
- 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 +360 -616
- 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 +275 -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/rake_app/test_task_name.rb +29 -0
- data/lib/ceedling/rakefile.rb +3 -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/{rules_tests.rake → rakefiles/tests/rules_tests.rake} +4 -18
- data/lib/ceedling/rakefiles/tests/rules_tests_generate.rake +54 -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 +13 -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 +800 -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 +71 -111
- 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 +16 -15
- 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 +37 -15
- data/site-local/404.html +239 -19
- data/site-local/assets/javascripts/{bundle.d7400e89.min.js → bundle.c21346df.min.js} +3 -3
- data/site-local/assets/javascripts/{bundle.d7400e89.min.js.map → bundle.c21346df.min.js.map} +2 -2
- data/site-local/assets/javascripts/workers/{search.2c215733.min.js → search.a7633da7.min.js} +2 -2
- data/site-local/assets/javascripts/workers/{search.2c215733.min.js.map → search.a7633da7.min.js.map} +1 -1
- data/site-local/assets/stylesheets/main.57a0d79d.min.css +6 -0
- data/site-local/assets/stylesheets/main.57a0d79d.min.css.map +1 -0
- data/site-local/assets/stylesheets/palette.fb2fffe2.min.css +4 -0
- data/site-local/assets/stylesheets/palette.fb2fffe2.min.css.map +1 -0
- data/site-local/configuration/environment-vars.html +239 -19
- data/site-local/configuration/global-collections.html +239 -24
- data/site-local/configuration/index.html +240 -20
- data/site-local/configuration/loading.html +251 -27
- data/site-local/configuration/mixins.html +247 -26
- data/site-local/configuration/parallel-builds.html +239 -19
- data/site-local/configuration/project-file.html +268 -37
- data/site-local/configuration/reference/cexception.html +246 -25
- data/site-local/configuration/reference/cmock.html +272 -19
- data/site-local/configuration/reference/defines.html +263 -34
- data/site-local/configuration/reference/environment.html +246 -26
- data/site-local/configuration/reference/extension.html +352 -21
- data/site-local/configuration/reference/files.html +258 -24
- data/site-local/configuration/reference/flags.html +268 -31
- data/site-local/configuration/reference/index.html +239 -19
- data/site-local/configuration/reference/libraries.html +239 -19
- data/site-local/configuration/reference/mixins.html +239 -19
- data/site-local/configuration/reference/partials.html +240 -24
- data/site-local/configuration/reference/paths.html +269 -23
- data/site-local/configuration/reference/plugins.html +239 -19
- data/site-local/configuration/reference/project.html +292 -29
- data/site-local/configuration/reference/release-build.html +247 -19
- data/site-local/configuration/reference/test-build.html +281 -29
- data/site-local/configuration/reference/test-runner.html +279 -22
- data/site-local/configuration/reference/tools.html +257 -31
- data/site-local/configuration/reference/unity.html +271 -20
- data/site-local/configuration/which-ceedling.html +239 -19
- data/site-local/development/index.html +245 -19
- data/site-local/development/plugins/configuration.html +260 -22
- data/site-local/development/plugins/index.html +258 -20
- data/site-local/development/plugins/plugin-subclass.html +912 -174
- data/site-local/development/plugins/rake-tasks.html +269 -21
- data/site-local/development/releases.html +4759 -0
- data/site-local/development/workflow.html +1023 -58
- data/site-local/getting-started/builds.html +4593 -0
- data/site-local/getting-started/command-line.html +409 -39
- data/site-local/getting-started/example-projects/cipher-quest.html +239 -19
- data/site-local/getting-started/example-projects/index.html +240 -20
- data/site-local/getting-started/example-projects/temp-sensor.html +239 -19
- data/site-local/getting-started/example-projects/wondrous-forest.html +239 -19
- data/site-local/getting-started/index.html +246 -19
- data/site-local/getting-started/installation.html +249 -27
- data/site-local/getting-started/quick-start.html +242 -20
- data/site-local/help.html +246 -19
- data/site-local/index.html +284 -27
- data/site-local/overview/build-system.html +240 -20
- data/site-local/overview/index.html +239 -19
- data/site-local/overview/test-environments.html +248 -19
- data/site-local/overview/tools-and-frameworks.html +239 -19
- data/site-local/plugins/beep.html +242 -19
- data/site-local/plugins/bullseye/index.html +5068 -0
- data/site-local/plugins/bullseye/licensing.html +4826 -0
- data/site-local/plugins/command-hooks.html +258 -34
- data/site-local/plugins/compile-commands-json-db.html +247 -22
- data/site-local/plugins/cppcheck.html +1073 -268
- data/site-local/plugins/dependencies.html +927 -249
- data/site-local/plugins/fff.html +288 -21
- data/site-local/plugins/gcov/examples.html +243 -20
- data/site-local/plugins/gcov/gcovr.html +559 -71
- data/site-local/plugins/gcov/index.html +242 -19
- data/site-local/plugins/gcov/overview.html +253 -23
- data/site-local/plugins/gcov/reportgenerator.html +380 -46
- data/site-local/plugins/gcov/reporting.html +339 -105
- data/site-local/plugins/gcov/setup.html +244 -20
- data/site-local/plugins/gcov/tool-versions.html +292 -24
- data/site-local/plugins/gcov/troubleshooting.html +265 -42
- data/site-local/plugins/index.html +285 -41
- data/site-local/plugins/module-generator.html +770 -200
- data/site-local/plugins/report-build-warnings-log.html +569 -38
- data/site-local/plugins/report-tests-gtestlike-stdout.html +458 -89
- data/site-local/plugins/report-tests-ide-stdout.html +645 -56
- data/site-local/plugins/report-tests-log-factory.html +364 -111
- data/site-local/plugins/report-tests-pretty-stdout.html +243 -20
- data/site-local/plugins/report-tests-raw-output-log.html +242 -19
- data/site-local/plugins/report-tests-teamcity-stdout.html +252 -29
- data/site-local/plugins/sanitize.html +5322 -0
- data/site-local/plugins/valgrind.html +414 -34
- data/site-local/{plugins/bullseye.html → project/index.html} +288 -222
- data/site-local/project/release-history.html +242 -22
- data/site-local/project/sbom.html +4712 -0
- data/site-local/project/upgrade.html +241 -21
- data/site-local/reference/build-directives.html +248 -19
- data/site-local/reference/command-line.html +364 -21
- data/site-local/reference/environment-vars.html +239 -19
- data/site-local/reference/gcov-plugin.html +483 -23
- data/site-local/reference/global-collections.html +240 -20
- data/site-local/reference/index.html +239 -19
- data/site-local/reference/partials-macros.html +249 -19
- data/site-local/reference/project-configuration.html +239 -19
- 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 +249 -29
- data/site-local/snapshot/examples/temp_sensor/index.html +241 -21
- data/site-local/snapshot/examples/wondrous_forest/index.html +256 -30
- 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 +331 -35
- data/site-local/testing-guide/conventions.html +671 -160
- data/site-local/testing-guide/frameworks.html +244 -24
- data/site-local/testing-guide/index.html +239 -26
- data/site-local/testing-guide/partials/configuration.html +241 -21
- data/site-local/testing-guide/partials/conventions.html +308 -23
- data/site-local/testing-guide/partials/directives.html +452 -58
- data/site-local/testing-guide/partials/example.html +247 -27
- data/site-local/testing-guide/partials/index.html +246 -19
- data/site-local/testing-guide/partials/overview.html +239 -19
- data/site-local/testing-guide/partials/variables.html +244 -24
- data/site-local/testing-guide/test-cases.html +246 -26
- data/site-local/testing-guide/test-sample.html +245 -25
- data/site-local/testing-guide/test-suite-anatomy.html +239 -19
- 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 +190 -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 +284 -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/rake_task_registry_plugins_spec.rb +95 -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 +178 -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 +162 -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 +100 -0
- data/spec/units/bin/cli_handler_spec.rb +205 -0
- data/spec/units/bin/cli_helper_spec.rb +248 -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 +724 -6
- data/spec/units/config/configurator_spec.rb +961 -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 +486 -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/rake_app/test_task_name_spec.rb +47 -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 +1693 -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 +783 -295
- 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/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/assets/stylesheets/main.ec1eaa64.min.css +0 -1
- data/site-local/assets/stylesheets/main.ec1eaa64.min.css.map +0 -1
- data/site-local/assets/stylesheets/palette.ab4e12ef.min.css +0 -1
- data/site-local/assets/stylesheets/palette.ab4e12ef.min.css.map +0 -1
- 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
|
@@ -11,13 +11,19 @@ require 'ceedling/partials/partials'
|
|
|
11
11
|
require 'ceedling/includes/includes'
|
|
12
12
|
require 'ceedling/c_extractor/c_extractor_types'
|
|
13
13
|
require 'stringio'
|
|
14
|
+
require 'include_guard_helper'
|
|
14
15
|
|
|
15
16
|
describe GeneratorPartials do
|
|
17
|
+
include IncludeGuardHelper
|
|
18
|
+
|
|
16
19
|
before(:each) do
|
|
17
20
|
@file_wrapper = double( "FileWrapper" )
|
|
18
21
|
@file_path_utils = double( "FilePathUtils" )
|
|
19
22
|
@loginator = double( "Loginator" ).as_null_object
|
|
20
23
|
|
|
24
|
+
# Every generator creates its target's own directory before writing.
|
|
25
|
+
allow(@file_wrapper).to receive(:mkdir)
|
|
26
|
+
|
|
21
27
|
@generator = described_class.new(
|
|
22
28
|
{
|
|
23
29
|
:file_wrapper => @file_wrapper,
|
|
@@ -77,6 +83,72 @@ describe GeneratorPartials do
|
|
|
77
83
|
end
|
|
78
84
|
|
|
79
85
|
context "#generate_implementation" do
|
|
86
|
+
# A bare module name implies no directory of its own, so the directory created is
|
|
87
|
+
# just the output path it was handed.
|
|
88
|
+
it "creates the output path for a module named without a directory" do
|
|
89
|
+
allow(@file_path_utils).to receive(:form_partial_implementation_source_filename).and_return( 'm_impl.c' )
|
|
90
|
+
allow(@file_path_utils).to receive(:form_partial_implementation_header_filename).and_return( 'm_impl.h' )
|
|
91
|
+
allow(@file_wrapper).to receive(:open).and_yield( double('handle').as_null_object )
|
|
92
|
+
allow(@generator).to receive(:generate_header)
|
|
93
|
+
allow(@generator).to receive(:generate_source)
|
|
94
|
+
|
|
95
|
+
expect(@file_wrapper).to receive(:mkdir).with( '/path/to/output' ).at_least(:once)
|
|
96
|
+
|
|
97
|
+
@generator.generate_implementation(
|
|
98
|
+
test: 'test_m', name: 'm', function_definitions: [],
|
|
99
|
+
source_includes: [], header_includes: [],
|
|
100
|
+
c_module: empty_module, output_path: '/path/to/output'
|
|
101
|
+
)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# A module named by directory produces a nested filename, so the directory has to
|
|
105
|
+
# exist before the write. Nothing else creates it.
|
|
106
|
+
it "creates the nested directory for a module named by directory" do
|
|
107
|
+
allow(@file_path_utils).to receive(:form_partial_implementation_source_filename)
|
|
108
|
+
.and_return( 'drivers/uart/ceedling_partial_config_impl.c' )
|
|
109
|
+
allow(@file_path_utils).to receive(:form_partial_implementation_header_filename)
|
|
110
|
+
.and_return( 'drivers/uart/ceedling_partial_config_impl.h' )
|
|
111
|
+
allow(@file_wrapper).to receive(:open).and_yield( double('handle').as_null_object )
|
|
112
|
+
allow(@generator).to receive(:generate_header)
|
|
113
|
+
allow(@generator).to receive(:generate_source)
|
|
114
|
+
|
|
115
|
+
expect(@file_wrapper).to receive(:mkdir).with( '/path/to/output/drivers/uart' ).at_least(:once)
|
|
116
|
+
|
|
117
|
+
@generator.generate_implementation(
|
|
118
|
+
test: 'test_config', name: 'drivers/uart/config', function_definitions: [],
|
|
119
|
+
source_includes: [], header_includes: [],
|
|
120
|
+
c_module: empty_module, output_path: '/path/to/output'
|
|
121
|
+
)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Two modules sharing a basename generate two headers sharing one basename. A guard
|
|
125
|
+
# built from the basename alone is the same in both, so whichever header the compiler
|
|
126
|
+
# reads second is emptied and its declarations vanish.
|
|
127
|
+
it "builds an include guard distinguishing modules that share a basename" do
|
|
128
|
+
guards = []
|
|
129
|
+
|
|
130
|
+
['drivers/uart', 'drivers/spi'].each do |dir|
|
|
131
|
+
handle = StringIO.new
|
|
132
|
+
allow(@file_path_utils).to receive(:form_partial_implementation_source_filename)
|
|
133
|
+
.and_return( "#{dir}/ceedling_partial_config_impl.c" )
|
|
134
|
+
allow(@file_path_utils).to receive(:form_partial_implementation_header_filename)
|
|
135
|
+
.and_return( "#{dir}/ceedling_partial_config_impl.h" )
|
|
136
|
+
allow(@file_wrapper).to receive(:mkdir)
|
|
137
|
+
allow(@file_wrapper).to receive(:open).and_yield( handle )
|
|
138
|
+
|
|
139
|
+
@generator.generate_implementation(
|
|
140
|
+
test: 'test_both', name: "#{dir}/config", function_definitions: [],
|
|
141
|
+
source_includes: [], header_includes: [],
|
|
142
|
+
c_module: empty_module, output_path: '/path/to/output'
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
guards << handle.string[/#ifndef (\S+)/, 1]
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
expect( guards.first ).to_not be_nil
|
|
149
|
+
expect( guards.first ).to_not eq( guards.last )
|
|
150
|
+
end
|
|
151
|
+
|
|
80
152
|
it "should call generate_header() and generate_source() with correct parameters" do
|
|
81
153
|
# Setup
|
|
82
154
|
output_path = '/path/to/output'
|
|
@@ -146,7 +218,7 @@ describe GeneratorPartials do
|
|
|
146
218
|
header_includes,
|
|
147
219
|
defns,
|
|
148
220
|
c_module,
|
|
149
|
-
include_variables: true, include_guard: nil
|
|
221
|
+
{ include_variables: true, include_guard: nil }
|
|
150
222
|
)
|
|
151
223
|
|
|
152
224
|
# Verify generate_source was called with correct parameters
|
|
@@ -223,7 +295,7 @@ describe GeneratorPartials do
|
|
|
223
295
|
includes,
|
|
224
296
|
decls,
|
|
225
297
|
c_module,
|
|
226
|
-
include_variables: false, include_guard: nil
|
|
298
|
+
{ include_variables: false, include_guard: nil }
|
|
227
299
|
)
|
|
228
300
|
|
|
229
301
|
# Verify file path utilities were called
|
|
@@ -256,16 +328,35 @@ describe GeneratorPartials do
|
|
|
256
328
|
expect(result).to be_nil
|
|
257
329
|
end
|
|
258
330
|
|
|
331
|
+
it "writes nothing when the module's only CStatement is a bare macro invocation (not type-defining)" do
|
|
332
|
+
allow(@file_wrapper).to receive(:open)
|
|
333
|
+
|
|
334
|
+
invocation = CExtractorTypes::CStatement.new(text: "FOO(0)", line_num: 1)
|
|
335
|
+
c_module = CExtractorTypes::CModule.new(
|
|
336
|
+
macro_invocations: [invocation],
|
|
337
|
+
element_sequence: [invocation]
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
result = @generator.generate_types(
|
|
341
|
+
name: 'my_module',
|
|
342
|
+
c_module: c_module,
|
|
343
|
+
output_path: '/path/to/output'
|
|
344
|
+
)
|
|
345
|
+
|
|
346
|
+
expect(@file_wrapper).not_to have_received(:open)
|
|
347
|
+
expect(result).to be_nil
|
|
348
|
+
end
|
|
349
|
+
|
|
259
350
|
it "writes the typedefs and aggregate definitions, guarded and in element_sequence order, carrying forward a macro that precedes one of them, and returns the bare filename" do
|
|
260
351
|
file_contents = <<~CONTENTS
|
|
261
|
-
#ifndef
|
|
262
|
-
#define
|
|
352
|
+
#ifndef GEN<HASH>_MY_MODULE_TYPES_H_CEEDLING
|
|
353
|
+
#define GEN<HASH>_MY_MODULE_TYPES_H_CEEDLING
|
|
263
354
|
|
|
264
355
|
typedef uint8_t Byte;
|
|
265
356
|
#define FOO 1
|
|
266
357
|
struct Config { int id; };
|
|
267
358
|
|
|
268
|
-
#endif //
|
|
359
|
+
#endif // GEN<HASH>_MY_MODULE_TYPES_H_CEEDLING
|
|
269
360
|
|
|
270
361
|
CONTENTS
|
|
271
362
|
|
|
@@ -308,16 +399,114 @@ describe GeneratorPartials do
|
|
|
308
399
|
output_path: output_path
|
|
309
400
|
)
|
|
310
401
|
|
|
311
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
402
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
312
403
|
expect(@file_wrapper).to have_received(:open).with(expected_filepath, 'wb')
|
|
313
404
|
expect(result).to eq(header_filename)
|
|
314
405
|
end
|
|
315
406
|
|
|
407
|
+
# The spoof and the carried includes are what make this header compile wherever it lands.
|
|
408
|
+
# Order between them is load-bearing: a carried header can transitively reach the real
|
|
409
|
+
# module header, so the guard has to be satisfied before any include is processed.
|
|
410
|
+
it "states the module's own guard before the includes it carries, then the types" do
|
|
411
|
+
file_contents = <<~CONTENTS
|
|
412
|
+
#ifndef GEN<HASH>_MY_MODULE_TYPES_H_CEEDLING
|
|
413
|
+
#define GEN<HASH>_MY_MODULE_TYPES_H_CEEDLING
|
|
414
|
+
|
|
415
|
+
#define MY_MODULE_H
|
|
416
|
+
|
|
417
|
+
#include "foundation.h"
|
|
418
|
+
#include <stdint.h>
|
|
419
|
+
|
|
420
|
+
typedef uint8_t Byte;
|
|
421
|
+
|
|
422
|
+
#endif // GEN<HASH>_MY_MODULE_TYPES_H_CEEDLING
|
|
423
|
+
|
|
424
|
+
CONTENTS
|
|
425
|
+
|
|
426
|
+
buf = types_buffer( 'my_module', 'my_module_types.h' )
|
|
427
|
+
typedef_stmt = CExtractorTypes::CStatement.new(text: "typedef uint8_t Byte;", line_num: 1)
|
|
428
|
+
|
|
429
|
+
@generator.generate_types(
|
|
430
|
+
name: 'my_module',
|
|
431
|
+
c_module: CExtractorTypes::CModule.new(
|
|
432
|
+
type_definitions: [typedef_stmt],
|
|
433
|
+
element_sequence: [typedef_stmt]
|
|
434
|
+
),
|
|
435
|
+
output_path: '/path/to/output',
|
|
436
|
+
includes: [UserInclude.new('foundation.h'), SystemInclude.new('stdint.h')],
|
|
437
|
+
include_guard: 'MY_MODULE_H'
|
|
438
|
+
)
|
|
439
|
+
|
|
440
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
it "states no guard when the module's header has none to spoof" do
|
|
444
|
+
buf = types_buffer( 'my_module', 'my_module_types.h' )
|
|
445
|
+
typedef_stmt = CExtractorTypes::CStatement.new(text: "typedef uint8_t Byte;", line_num: 1)
|
|
446
|
+
|
|
447
|
+
@generator.generate_types(
|
|
448
|
+
name: 'my_module',
|
|
449
|
+
c_module: CExtractorTypes::CModule.new(
|
|
450
|
+
type_definitions: [typedef_stmt],
|
|
451
|
+
element_sequence: [typedef_stmt]
|
|
452
|
+
),
|
|
453
|
+
output_path: '/path/to/output',
|
|
454
|
+
includes: [UserInclude.new('foundation.h')],
|
|
455
|
+
include_guard: nil
|
|
456
|
+
)
|
|
457
|
+
|
|
458
|
+
expect( buf.string ).to include('#include "foundation.h"')
|
|
459
|
+
expect( buf.string.scan(/^#define /).length ).to eq(1) # the generated guard alone
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
# The real header's own guard also arrives among the extracted macros, since it survives
|
|
463
|
+
# preprocessing. Stating it deliberately and carrying it too would duplicate it.
|
|
464
|
+
it "drops the carried copy of the guard it states itself" do
|
|
465
|
+
buf = types_buffer( 'my_module', 'my_module_types.h' )
|
|
466
|
+
guard_macro = CExtractorTypes::CStatement.new(text: "#define MY_MODULE_H", line_num: 1)
|
|
467
|
+
typedef_stmt = CExtractorTypes::CStatement.new(text: "typedef uint8_t Byte;", line_num: 2)
|
|
468
|
+
|
|
469
|
+
@generator.generate_types(
|
|
470
|
+
name: 'my_module',
|
|
471
|
+
c_module: CExtractorTypes::CModule.new(
|
|
472
|
+
type_definitions: [typedef_stmt],
|
|
473
|
+
macro_definitions: [guard_macro],
|
|
474
|
+
element_sequence: [guard_macro, typedef_stmt]
|
|
475
|
+
),
|
|
476
|
+
output_path: '/path/to/output',
|
|
477
|
+
include_guard: 'MY_MODULE_H'
|
|
478
|
+
)
|
|
479
|
+
|
|
480
|
+
expect( buf.string.scan(/^#define MY_MODULE_H$/).length ).to eq(1)
|
|
481
|
+
end
|
|
482
|
+
|
|
483
|
+
# GH #1266's shape, one level over: a macro whose name merely begins with the guard's, and
|
|
484
|
+
# a guard-named macro that actually carries a value. Neither is the guard statement.
|
|
485
|
+
it "keeps a macro whose name only resembles the guard" do
|
|
486
|
+
buf = types_buffer( 'my_module', 'my_module_types.h' )
|
|
487
|
+
near_macro = CExtractorTypes::CStatement.new(text: "#define MY_MODULE_H_LIMIT 8", line_num: 1)
|
|
488
|
+
valued_macro = CExtractorTypes::CStatement.new(text: "#define MY_MODULE_H 2", line_num: 2)
|
|
489
|
+
typedef_stmt = CExtractorTypes::CStatement.new(text: "typedef uint8_t Byte;", line_num: 3)
|
|
490
|
+
|
|
491
|
+
@generator.generate_types(
|
|
492
|
+
name: 'my_module',
|
|
493
|
+
c_module: CExtractorTypes::CModule.new(
|
|
494
|
+
type_definitions: [typedef_stmt],
|
|
495
|
+
macro_definitions: [near_macro, valued_macro],
|
|
496
|
+
element_sequence: [near_macro, valued_macro, typedef_stmt]
|
|
497
|
+
),
|
|
498
|
+
output_path: '/path/to/output',
|
|
499
|
+
include_guard: 'MY_MODULE_H'
|
|
500
|
+
)
|
|
501
|
+
|
|
502
|
+
expect( buf.string ).to include('#define MY_MODULE_H_LIMIT 8')
|
|
503
|
+
expect( buf.string ).to include('#define MY_MODULE_H 2')
|
|
504
|
+
end
|
|
505
|
+
|
|
316
506
|
it "carries a macro forward directly before the single typedef it immediately precedes" do
|
|
317
507
|
output_path = '/path/to/output'
|
|
318
508
|
name = 'my_module'
|
|
319
509
|
header_filename = 'my_module_types.h'
|
|
320
|
-
expected_filepath = File.join(output_path, header_filename)
|
|
321
510
|
|
|
322
511
|
allow(@file_path_utils).to receive(:form_partial_types_header_filename).and_return(header_filename)
|
|
323
512
|
|
|
@@ -462,104 +651,6 @@ describe GeneratorPartials do
|
|
|
462
651
|
|
|
463
652
|
expect( buf.string ).to include( "struct Point { int x; int y; };\nstruct Color { int r; int g; int b; };\n" )
|
|
464
653
|
end
|
|
465
|
-
# The spoof and the carried includes are what make this header compile wherever it lands.
|
|
466
|
-
# Order between them is load-bearing: a carried header can transitively reach the real
|
|
467
|
-
# module header, so the guard has to be satisfied before any include is processed.
|
|
468
|
-
it "states the module's own guard before the includes it carries, then the types" do
|
|
469
|
-
file_contents = <<~CONTENTS
|
|
470
|
-
#ifndef __CEEDLING_GENERATED_MY_MODULE_TYPES_H__
|
|
471
|
-
#define __CEEDLING_GENERATED_MY_MODULE_TYPES_H__
|
|
472
|
-
|
|
473
|
-
#define MY_MODULE_H
|
|
474
|
-
|
|
475
|
-
#include "foundation.h"
|
|
476
|
-
#include <stdint.h>
|
|
477
|
-
|
|
478
|
-
typedef uint8_t Byte;
|
|
479
|
-
|
|
480
|
-
#endif // __CEEDLING_GENERATED_MY_MODULE_TYPES_H__
|
|
481
|
-
|
|
482
|
-
CONTENTS
|
|
483
|
-
|
|
484
|
-
buf = types_buffer( 'my_module', 'my_module_types.h' )
|
|
485
|
-
typedef_stmt = CExtractorTypes::CStatement.new(text: "typedef uint8_t Byte;", line_num: 1)
|
|
486
|
-
|
|
487
|
-
@generator.generate_types(
|
|
488
|
-
name: 'my_module',
|
|
489
|
-
c_module: CExtractorTypes::CModule.new(
|
|
490
|
-
type_definitions: [typedef_stmt],
|
|
491
|
-
element_sequence: [typedef_stmt]
|
|
492
|
-
),
|
|
493
|
-
output_path: '/path/to/output',
|
|
494
|
-
includes: [UserInclude.new('foundation.h'), SystemInclude.new('stdint.h')],
|
|
495
|
-
include_guard: 'MY_MODULE_H'
|
|
496
|
-
)
|
|
497
|
-
|
|
498
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
499
|
-
end
|
|
500
|
-
|
|
501
|
-
it "states no guard when the module's header has none to spoof" do
|
|
502
|
-
buf = types_buffer( 'my_module', 'my_module_types.h' )
|
|
503
|
-
typedef_stmt = CExtractorTypes::CStatement.new(text: "typedef uint8_t Byte;", line_num: 1)
|
|
504
|
-
|
|
505
|
-
@generator.generate_types(
|
|
506
|
-
name: 'my_module',
|
|
507
|
-
c_module: CExtractorTypes::CModule.new(
|
|
508
|
-
type_definitions: [typedef_stmt],
|
|
509
|
-
element_sequence: [typedef_stmt]
|
|
510
|
-
),
|
|
511
|
-
output_path: '/path/to/output',
|
|
512
|
-
includes: [UserInclude.new('foundation.h')],
|
|
513
|
-
include_guard: nil
|
|
514
|
-
)
|
|
515
|
-
|
|
516
|
-
expect( buf.string ).to include('#include "foundation.h"')
|
|
517
|
-
expect( buf.string.scan(/^#define /).length ).to eq(1) # the generated guard alone
|
|
518
|
-
end
|
|
519
|
-
|
|
520
|
-
# The real header's guard also arrives among the extracted macros, since it survives
|
|
521
|
-
# preprocessing. Stating it deliberately and carrying it too would duplicate it.
|
|
522
|
-
it "drops the carried copy of the guard it states itself" do
|
|
523
|
-
buf = types_buffer( 'my_module', 'my_module_types.h' )
|
|
524
|
-
guard_macro = CExtractorTypes::CStatement.new(text: "#define MY_MODULE_H", line_num: 1)
|
|
525
|
-
typedef_stmt = CExtractorTypes::CStatement.new(text: "typedef uint8_t Byte;", line_num: 2)
|
|
526
|
-
|
|
527
|
-
@generator.generate_types(
|
|
528
|
-
name: 'my_module',
|
|
529
|
-
c_module: CExtractorTypes::CModule.new(
|
|
530
|
-
type_definitions: [typedef_stmt],
|
|
531
|
-
macro_definitions: [guard_macro],
|
|
532
|
-
element_sequence: [guard_macro, typedef_stmt]
|
|
533
|
-
),
|
|
534
|
-
output_path: '/path/to/output',
|
|
535
|
-
include_guard: 'MY_MODULE_H'
|
|
536
|
-
)
|
|
537
|
-
|
|
538
|
-
expect( buf.string.scan(/^#define MY_MODULE_H$/).length ).to eq(1)
|
|
539
|
-
end
|
|
540
|
-
|
|
541
|
-
# A macro whose name merely begins with the guard's, and a guard-named macro that actually
|
|
542
|
-
# carries a value. Neither is the guard statement.
|
|
543
|
-
it "keeps a macro whose name only resembles the guard" do
|
|
544
|
-
buf = types_buffer( 'my_module', 'my_module_types.h' )
|
|
545
|
-
near_macro = CExtractorTypes::CStatement.new(text: "#define MY_MODULE_H_LIMIT 8", line_num: 1)
|
|
546
|
-
valued_macro = CExtractorTypes::CStatement.new(text: "#define MY_MODULE_H 2", line_num: 2)
|
|
547
|
-
typedef_stmt = CExtractorTypes::CStatement.new(text: "typedef uint8_t Byte;", line_num: 3)
|
|
548
|
-
|
|
549
|
-
@generator.generate_types(
|
|
550
|
-
name: 'my_module',
|
|
551
|
-
c_module: CExtractorTypes::CModule.new(
|
|
552
|
-
type_definitions: [typedef_stmt],
|
|
553
|
-
macro_definitions: [near_macro, valued_macro],
|
|
554
|
-
element_sequence: [near_macro, valued_macro, typedef_stmt]
|
|
555
|
-
),
|
|
556
|
-
output_path: '/path/to/output',
|
|
557
|
-
include_guard: 'MY_MODULE_H'
|
|
558
|
-
)
|
|
559
|
-
|
|
560
|
-
expect( buf.string ).to include('#define MY_MODULE_H_LIMIT 8')
|
|
561
|
-
expect( buf.string ).to include('#define MY_MODULE_H 2')
|
|
562
|
-
end
|
|
563
654
|
end
|
|
564
655
|
|
|
565
656
|
context "#generate_header (private method)" do
|
|
@@ -568,26 +659,26 @@ describe GeneratorPartials do
|
|
|
568
659
|
|
|
569
660
|
it "should generate a nearly empty header file" do
|
|
570
661
|
file_contents = <<~CONTENTS
|
|
571
|
-
#ifndef
|
|
572
|
-
#define
|
|
662
|
+
#ifndef GEN<HASH>_FOO_BAR_H_CEEDLING
|
|
663
|
+
#define GEN<HASH>_FOO_BAR_H_CEEDLING
|
|
573
664
|
|
|
574
|
-
#endif //
|
|
665
|
+
#endif // GEN<HASH>_FOO_BAR_H_CEEDLING
|
|
575
666
|
|
|
576
667
|
CONTENTS
|
|
577
668
|
|
|
578
669
|
@generator.send(:generate_header, buf, 'foo_bar', [], [], empty_module, include_variables: false)
|
|
579
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
670
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
580
671
|
end
|
|
581
672
|
|
|
582
673
|
it "should generate a header file with #include statements but nothing else" do
|
|
583
674
|
file_contents = <<~CONTENTS
|
|
584
|
-
#ifndef
|
|
585
|
-
#define
|
|
675
|
+
#ifndef GEN<HASH>_APPLES_AND_BANANAS_H_CEEDLING
|
|
676
|
+
#define GEN<HASH>_APPLES_AND_BANANAS_H_CEEDLING
|
|
586
677
|
|
|
587
678
|
#include "foo.h"
|
|
588
679
|
#include "bar.h"
|
|
589
680
|
|
|
590
|
-
#endif //
|
|
681
|
+
#endif // GEN<HASH>_APPLES_AND_BANANAS_H_CEEDLING
|
|
591
682
|
|
|
592
683
|
CONTENTS
|
|
593
684
|
|
|
@@ -599,18 +690,18 @@ describe GeneratorPartials do
|
|
|
599
690
|
[], empty_module, include_variables: false
|
|
600
691
|
)
|
|
601
692
|
|
|
602
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
693
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
603
694
|
end
|
|
604
695
|
|
|
605
696
|
it "should generate a header file with variable declarations (extern prefix added automatically)" do
|
|
606
697
|
file_contents = <<~CONTENTS
|
|
607
|
-
#ifndef
|
|
608
|
-
#define
|
|
698
|
+
#ifndef GEN<HASH>_PB_AND_J_H_CEEDLING
|
|
699
|
+
#define GEN<HASH>_PB_AND_J_H_CEEDLING
|
|
609
700
|
|
|
610
701
|
extern unsigned int slices_of_bread;
|
|
611
702
|
extern char crumbs;
|
|
612
703
|
|
|
613
|
-
#endif //
|
|
704
|
+
#endif // GEN<HASH>_PB_AND_J_H_CEEDLING
|
|
614
705
|
|
|
615
706
|
CONTENTS
|
|
616
707
|
|
|
@@ -619,7 +710,7 @@ describe GeneratorPartials do
|
|
|
619
710
|
make_var(name: 'crumbs', type: 'char', text: 'char crumbs[10];')
|
|
620
711
|
)
|
|
621
712
|
@generator.send(:generate_header, buf, 'pb-and-j', [], [], c_module, include_variables: true)
|
|
622
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
713
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
623
714
|
end
|
|
624
715
|
|
|
625
716
|
it "should reapply a leading qualifier decorator to an extern declaration" do
|
|
@@ -642,8 +733,8 @@ describe GeneratorPartials do
|
|
|
642
733
|
|
|
643
734
|
it "should generate a header file with #include statements, variable declarations, and function signatures" do
|
|
644
735
|
file_contents = <<~CONTENTS
|
|
645
|
-
#ifndef
|
|
646
|
-
#define
|
|
736
|
+
#ifndef GEN<HASH>_APPLES_AND_BANANAS_H_CEEDLING
|
|
737
|
+
#define GEN<HASH>_APPLES_AND_BANANAS_H_CEEDLING
|
|
647
738
|
|
|
648
739
|
#include "Eeny.h"
|
|
649
740
|
#include "Meeny.h"
|
|
@@ -655,7 +746,7 @@ describe GeneratorPartials do
|
|
|
655
746
|
|
|
656
747
|
int razzleDazzle(void* ptr);
|
|
657
748
|
|
|
658
|
-
#endif //
|
|
749
|
+
#endif // GEN<HASH>_APPLES_AND_BANANAS_H_CEEDLING
|
|
659
750
|
|
|
660
751
|
CONTENTS
|
|
661
752
|
|
|
@@ -692,19 +783,19 @@ describe GeneratorPartials do
|
|
|
692
783
|
include_variables: true
|
|
693
784
|
)
|
|
694
785
|
|
|
695
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
786
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
696
787
|
end
|
|
697
788
|
|
|
698
789
|
it "should emit CStatement text as-is in the header" do
|
|
699
790
|
file_contents = <<~CONTENTS
|
|
700
|
-
#ifndef
|
|
701
|
-
#define
|
|
791
|
+
#ifndef GEN<HASH>_DEFS_H_CEEDLING
|
|
792
|
+
#define GEN<HASH>_DEFS_H_CEEDLING
|
|
702
793
|
|
|
703
794
|
#define MAX_SIZE 100
|
|
704
795
|
typedef uint8_t Byte;
|
|
705
796
|
struct Point { int x; int y; };
|
|
706
797
|
|
|
707
|
-
#endif //
|
|
798
|
+
#endif // GEN<HASH>_DEFS_H_CEEDLING
|
|
708
799
|
|
|
709
800
|
CONTENTS
|
|
710
801
|
|
|
@@ -715,7 +806,7 @@ describe GeneratorPartials do
|
|
|
715
806
|
)
|
|
716
807
|
|
|
717
808
|
@generator.send(:generate_header, buf, 'defs', [], [], c_module, include_variables: false)
|
|
718
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
809
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
719
810
|
end
|
|
720
811
|
|
|
721
812
|
# #1262: a header with several single-line macros in a row and nothing
|
|
@@ -725,14 +816,14 @@ describe GeneratorPartials do
|
|
|
725
816
|
# own carry-forward logic, which already had its own adjacency coverage.
|
|
726
817
|
it "emits three consecutive macros each on their own line, with nothing following them" do
|
|
727
818
|
file_contents = <<~CONTENTS
|
|
728
|
-
#ifndef
|
|
729
|
-
#define
|
|
819
|
+
#ifndef GEN<HASH>_REGS_H_CEEDLING
|
|
820
|
+
#define GEN<HASH>_REGS_H_CEEDLING
|
|
730
821
|
|
|
731
822
|
#define START_ADDRESS 0x00
|
|
732
823
|
#define IDX_DATARATE (ADS124S08_REG_ADDR_DATARATE - START_ADDRESS)
|
|
733
824
|
#define IDX_REF (ADS124S08_REG_ADDR_REF - START_ADDRESS)
|
|
734
825
|
|
|
735
|
-
#endif //
|
|
826
|
+
#endif // GEN<HASH>_REGS_H_CEEDLING
|
|
736
827
|
|
|
737
828
|
CONTENTS
|
|
738
829
|
|
|
@@ -743,7 +834,7 @@ describe GeneratorPartials do
|
|
|
743
834
|
)
|
|
744
835
|
|
|
745
836
|
@generator.send(:generate_header, buf, 'regs', [], [], c_module, include_variables: false)
|
|
746
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
837
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
747
838
|
end
|
|
748
839
|
|
|
749
840
|
# #1262 regression: the actual reported shape -- one macro's trailing // comment
|
|
@@ -784,13 +875,13 @@ describe GeneratorPartials do
|
|
|
784
875
|
# element_sequence — not typed-array membership — governs emit order for the items
|
|
785
876
|
# that do remain inline.
|
|
786
877
|
file_contents = <<~CONTENTS
|
|
787
|
-
#ifndef
|
|
788
|
-
#define
|
|
878
|
+
#ifndef GEN<HASH>_ALL_STATEMENTS_H_CEEDLING
|
|
879
|
+
#define GEN<HASH>_ALL_STATEMENTS_H_CEEDLING
|
|
789
880
|
|
|
790
881
|
#define MAX_ITEMS 16
|
|
791
882
|
extern int item_count;
|
|
792
883
|
|
|
793
|
-
#endif //
|
|
884
|
+
#endif // GEN<HASH>_ALL_STATEMENTS_H_CEEDLING
|
|
794
885
|
|
|
795
886
|
CONTENTS
|
|
796
887
|
|
|
@@ -808,19 +899,19 @@ describe GeneratorPartials do
|
|
|
808
899
|
)
|
|
809
900
|
|
|
810
901
|
@generator.send(:generate_header, buf, 'all_statements', [], [], c_module, include_variables: true)
|
|
811
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
902
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
812
903
|
end
|
|
813
904
|
|
|
814
905
|
it "should emit mixed CStatement and CVariableDeclaration items in element_sequence order" do
|
|
815
906
|
file_contents = <<~CONTENTS
|
|
816
|
-
#ifndef
|
|
817
|
-
#define
|
|
907
|
+
#ifndef GEN<HASH>_MIXED_H_CEEDLING
|
|
908
|
+
#define GEN<HASH>_MIXED_H_CEEDLING
|
|
818
909
|
|
|
819
910
|
#define FOO 1
|
|
820
911
|
extern int counter;
|
|
821
912
|
typedef uint8_t Byte;
|
|
822
913
|
|
|
823
|
-
#endif //
|
|
914
|
+
#endif // GEN<HASH>_MIXED_H_CEEDLING
|
|
824
915
|
|
|
825
916
|
CONTENTS
|
|
826
917
|
|
|
@@ -832,17 +923,17 @@ describe GeneratorPartials do
|
|
|
832
923
|
)
|
|
833
924
|
|
|
834
925
|
@generator.send(:generate_header, buf, 'mixed', [], [], c_module, include_variables: true)
|
|
835
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
926
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
836
927
|
end
|
|
837
928
|
|
|
838
929
|
it "should not emit variable declarations when include_variables is false" do
|
|
839
930
|
file_contents = <<~CONTENTS
|
|
840
|
-
#ifndef
|
|
841
|
-
#define
|
|
931
|
+
#ifndef GEN<HASH>_INTERFACE_H_CEEDLING
|
|
932
|
+
#define GEN<HASH>_INTERFACE_H_CEEDLING
|
|
842
933
|
|
|
843
934
|
#define FOO 1
|
|
844
935
|
|
|
845
|
-
#endif //
|
|
936
|
+
#endif // GEN<HASH>_INTERFACE_H_CEEDLING
|
|
846
937
|
|
|
847
938
|
CONTENTS
|
|
848
939
|
|
|
@@ -852,13 +943,74 @@ describe GeneratorPartials do
|
|
|
852
943
|
)
|
|
853
944
|
|
|
854
945
|
@generator.send(:generate_header, buf, 'interface', [], [], c_module, include_variables: false)
|
|
855
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
946
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
947
|
+
end
|
|
948
|
+
|
|
949
|
+
# make_module bins every CStatement into macro_definitions, the wrong bucket for a
|
|
950
|
+
# macro_invocations item -- CModule is constructed by hand here instead, same as
|
|
951
|
+
# this describe block's other macro_invocations-specific tests below.
|
|
952
|
+
#
|
|
953
|
+
# A bare macro invocation is never emitted into any header, implementation or
|
|
954
|
+
# interface, include_variables true or false -- unlike a #define (safe to repeat
|
|
955
|
+
# identically across translation units), its expansion is real executable code
|
|
956
|
+
# (typically a function definition), and both kinds of generated header routinely
|
|
957
|
+
# get #include'd into more than one separately-compiled source for one test build
|
|
958
|
+
# (the implementation source file, the test file itself, and the generated test
|
|
959
|
+
# runner all #include the implementation header) -- landing it in any header risks
|
|
960
|
+
# a one-definition-rule violation the moment more than one of those objects ends up
|
|
961
|
+
# containing it. See #generate_source for where it actually belongs.
|
|
962
|
+
it "should not emit a bare macro invocation in the implementation header (include_variables true)" do
|
|
963
|
+
file_contents = <<~CONTENTS
|
|
964
|
+
#ifndef GEN<HASH>_IMPL_INVOCATION_H_CEEDLING
|
|
965
|
+
#define GEN<HASH>_IMPL_INVOCATION_H_CEEDLING
|
|
966
|
+
|
|
967
|
+
#define FOO(x) void bar##x(void) { }
|
|
968
|
+
|
|
969
|
+
#endif // GEN<HASH>_IMPL_INVOCATION_H_CEEDLING
|
|
970
|
+
|
|
971
|
+
CONTENTS
|
|
972
|
+
|
|
973
|
+
macro_stmt = make_stmt(text: "#define FOO(x) void bar##x(void) { }", line_num: 1)
|
|
974
|
+
invocation = make_stmt(text: "FOO(0)", line_num: 2)
|
|
975
|
+
|
|
976
|
+
c_module = CExtractorTypes::CModule.new(
|
|
977
|
+
macro_definitions: [macro_stmt],
|
|
978
|
+
macro_invocations: [invocation],
|
|
979
|
+
element_sequence: [macro_stmt, invocation]
|
|
980
|
+
)
|
|
981
|
+
|
|
982
|
+
@generator.send(:generate_header, buf, 'impl_invocation', [], [], c_module, include_variables: true)
|
|
983
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
984
|
+
end
|
|
985
|
+
|
|
986
|
+
it "should not emit a bare macro invocation in the mockable interface header (include_variables false)" do
|
|
987
|
+
file_contents = <<~CONTENTS
|
|
988
|
+
#ifndef GEN<HASH>_INTERFACE_INVOCATION_H_CEEDLING
|
|
989
|
+
#define GEN<HASH>_INTERFACE_INVOCATION_H_CEEDLING
|
|
990
|
+
|
|
991
|
+
#define FOO(x) void bar##x(void) { }
|
|
992
|
+
|
|
993
|
+
#endif // GEN<HASH>_INTERFACE_INVOCATION_H_CEEDLING
|
|
994
|
+
|
|
995
|
+
CONTENTS
|
|
996
|
+
|
|
997
|
+
macro_stmt = make_stmt(text: "#define FOO(x) void bar##x(void) { }", line_num: 1)
|
|
998
|
+
invocation = make_stmt(text: "FOO(0)", line_num: 2)
|
|
999
|
+
|
|
1000
|
+
c_module = CExtractorTypes::CModule.new(
|
|
1001
|
+
macro_definitions: [macro_stmt],
|
|
1002
|
+
macro_invocations: [invocation],
|
|
1003
|
+
element_sequence: [macro_stmt, invocation]
|
|
1004
|
+
)
|
|
1005
|
+
|
|
1006
|
+
@generator.send(:generate_header, buf, 'interface_invocation', [], [], c_module, include_variables: false)
|
|
1007
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
856
1008
|
end
|
|
857
1009
|
|
|
858
1010
|
it "should interleave functions with other elements in element_sequence order, skipping a leading typedef routed to the shared types header" do
|
|
859
1011
|
file_contents = <<~CONTENTS
|
|
860
|
-
#ifndef
|
|
861
|
-
#define
|
|
1012
|
+
#ifndef GEN<HASH>_INTERLEAVED_H_CEEDLING
|
|
1013
|
+
#define GEN<HASH>_INTERLEAVED_H_CEEDLING
|
|
862
1014
|
|
|
863
1015
|
void foo(void);
|
|
864
1016
|
|
|
@@ -866,7 +1018,7 @@ describe GeneratorPartials do
|
|
|
866
1018
|
|
|
867
1019
|
int bar(int x);
|
|
868
1020
|
|
|
869
|
-
#endif //
|
|
1021
|
+
#endif // GEN<HASH>_INTERLEAVED_H_CEEDLING
|
|
870
1022
|
|
|
871
1023
|
CONTENTS
|
|
872
1024
|
|
|
@@ -894,7 +1046,7 @@ describe GeneratorPartials do
|
|
|
894
1046
|
)
|
|
895
1047
|
|
|
896
1048
|
@generator.send(:generate_header, buf, 'interleaved', [], [foo_decl, bar_decl], c_module, include_variables: true)
|
|
897
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
1049
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
898
1050
|
end
|
|
899
1051
|
|
|
900
1052
|
it "emits function signature with __declspec(dllexport) verbatim in header" do
|
|
@@ -929,12 +1081,12 @@ describe GeneratorPartials do
|
|
|
929
1081
|
|
|
930
1082
|
it "should generate a nearly empty source file" do
|
|
931
1083
|
@generator.send(:generate_source, buf, [], [], empty_module)
|
|
932
|
-
expect( buf.string.strip() ).to eq '//
|
|
1084
|
+
expect( buf.string.strip() ).to eq '// Ceedling generated file'
|
|
933
1085
|
end
|
|
934
1086
|
|
|
935
1087
|
it "should generate a source file with #include directives" do
|
|
936
1088
|
file_contents = <<~CONTENTS
|
|
937
|
-
//
|
|
1089
|
+
// Ceedling generated file
|
|
938
1090
|
#include "foo.h"
|
|
939
1091
|
#include <bar.h>
|
|
940
1092
|
|
|
@@ -947,12 +1099,12 @@ describe GeneratorPartials do
|
|
|
947
1099
|
[], empty_module
|
|
948
1100
|
)
|
|
949
1101
|
|
|
950
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
1102
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
951
1103
|
end
|
|
952
1104
|
|
|
953
1105
|
it "should preserve internal whitespace of function code block for coverage instrumentation line mapping" do
|
|
954
1106
|
file_contents = <<~CONTENTS
|
|
955
|
-
//
|
|
1107
|
+
// Ceedling generated file
|
|
956
1108
|
|
|
957
1109
|
void foobar(int x, int y)
|
|
958
1110
|
|
|
@@ -977,7 +1129,7 @@ describe GeneratorPartials do
|
|
|
977
1129
|
c_module = make_module( CExtractorTypes::CFunctionDefinition.new(name: 'foobar') )
|
|
978
1130
|
|
|
979
1131
|
@generator.send(:generate_source, buf, [], defns, c_module)
|
|
980
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
1132
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
981
1133
|
end
|
|
982
1134
|
|
|
983
1135
|
it "should reapply a leading qualifier decorator to a variable definition" do
|
|
@@ -990,9 +1142,33 @@ describe GeneratorPartials do
|
|
|
990
1142
|
expect(buf.string).to include('volatile cmd_t cmd = { 0 };')
|
|
991
1143
|
end
|
|
992
1144
|
|
|
1145
|
+
it "should emit a bare macro invocation -- this is the one file that compiles to the one object its real function definition can safely live in" do
|
|
1146
|
+
invocation = make_stmt(text: "FOO(0)", line_num: 1)
|
|
1147
|
+
c_module = CExtractorTypes::CModule.new(
|
|
1148
|
+
macro_invocations: [invocation],
|
|
1149
|
+
element_sequence: [invocation]
|
|
1150
|
+
)
|
|
1151
|
+
|
|
1152
|
+
@generator.send(:generate_source, buf, [], [], c_module)
|
|
1153
|
+
|
|
1154
|
+
expect(buf.string).to include('FOO(0)')
|
|
1155
|
+
end
|
|
1156
|
+
|
|
1157
|
+
it "should not emit a plain macro definition or other non-invocation CStatement in source (headers only)" do
|
|
1158
|
+
macro_stmt = make_stmt(text: "#define FOO 1", line_num: 1)
|
|
1159
|
+
c_module = CExtractorTypes::CModule.new(
|
|
1160
|
+
macro_definitions: [macro_stmt],
|
|
1161
|
+
element_sequence: [macro_stmt]
|
|
1162
|
+
)
|
|
1163
|
+
|
|
1164
|
+
@generator.send(:generate_source, buf, [], [], c_module)
|
|
1165
|
+
|
|
1166
|
+
expect(buf.string).not_to include('#define FOO 1')
|
|
1167
|
+
end
|
|
1168
|
+
|
|
993
1169
|
it "should generate a source file with include directives, variable declarations, and functions" do
|
|
994
1170
|
file_contents = <<~CONTENTS
|
|
995
|
-
//
|
|
1171
|
+
// Ceedling generated file
|
|
996
1172
|
#include "foobar.h"
|
|
997
1173
|
#include "baz.h"
|
|
998
1174
|
|
|
@@ -1025,12 +1201,12 @@ describe GeneratorPartials do
|
|
|
1025
1201
|
[defn],
|
|
1026
1202
|
c_module
|
|
1027
1203
|
)
|
|
1028
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
1204
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
1029
1205
|
end
|
|
1030
1206
|
|
|
1031
1207
|
it "should generate a source file with functions and #line directives" do
|
|
1032
1208
|
file_contents = <<~CONTENTS
|
|
1033
|
-
//
|
|
1209
|
+
// Ceedling generated file
|
|
1034
1210
|
|
|
1035
1211
|
#line 9 "../foo/bar/fubar.c"
|
|
1036
1212
|
void foobarbaz(int x, int y) {
|
|
@@ -1072,7 +1248,7 @@ describe GeneratorPartials do
|
|
|
1072
1248
|
)
|
|
1073
1249
|
|
|
1074
1250
|
@generator.send(:generate_source, buf, [], defns, c_module)
|
|
1075
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
1251
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
1076
1252
|
end
|
|
1077
1253
|
|
|
1078
1254
|
it "should pass a code_block's line endings through unchanged, including embedded CRLF" do
|
|
@@ -1107,7 +1283,7 @@ describe GeneratorPartials do
|
|
|
1107
1283
|
# All four categories are present in element_sequence to confirm the full
|
|
1108
1284
|
# filtering and emission behavior in a single test.
|
|
1109
1285
|
file_contents = <<~CONTENTS
|
|
1110
|
-
//
|
|
1286
|
+
// Ceedling generated file
|
|
1111
1287
|
|
|
1112
1288
|
int counter = 0;
|
|
1113
1289
|
|
|
@@ -1137,12 +1313,12 @@ describe GeneratorPartials do
|
|
|
1137
1313
|
)
|
|
1138
1314
|
|
|
1139
1315
|
@generator.send(:generate_source, buf, [], [defn], c_module)
|
|
1140
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
1316
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
1141
1317
|
end
|
|
1142
1318
|
|
|
1143
1319
|
it "should emit only CVariableDeclaration items from element_sequence, skipping CStatement items" do
|
|
1144
1320
|
file_contents = <<~CONTENTS
|
|
1145
|
-
//
|
|
1321
|
+
// Ceedling generated file
|
|
1146
1322
|
|
|
1147
1323
|
int counter = 0;
|
|
1148
1324
|
|
|
@@ -1156,12 +1332,12 @@ describe GeneratorPartials do
|
|
|
1156
1332
|
)
|
|
1157
1333
|
|
|
1158
1334
|
@generator.send(:generate_source, buf, [], [], c_module)
|
|
1159
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
1335
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
1160
1336
|
end
|
|
1161
1337
|
|
|
1162
1338
|
it "should interleave variables and functions in element_sequence order" do
|
|
1163
1339
|
file_contents = <<~CONTENTS
|
|
1164
|
-
//
|
|
1340
|
+
// Ceedling generated file
|
|
1165
1341
|
|
|
1166
1342
|
int x = 1;
|
|
1167
1343
|
|
|
@@ -1205,7 +1381,7 @@ describe GeneratorPartials do
|
|
|
1205
1381
|
)
|
|
1206
1382
|
|
|
1207
1383
|
@generator.send(:generate_source, buf, [], [foo_defn, bar_defn], c_module)
|
|
1208
|
-
expect( buf.string.strip() ).to eq file_contents.strip()
|
|
1384
|
+
expect( mask_include_guard_hashes(buf.string).strip() ).to eq file_contents.strip()
|
|
1209
1385
|
end
|
|
1210
1386
|
|
|
1211
1387
|
it "emits function code_block with __attribute__((noreturn)) verbatim in source" do
|