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
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
<link rel="icon" href="../assets/images/favicon.png">
|
|
24
|
-
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.
|
|
24
|
+
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.8.0">
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
<link rel="stylesheet" href="../assets/stylesheets/main.
|
|
32
|
+
<link rel="stylesheet" href="../assets/stylesheets/main.57a0d79d.min.css">
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
<link rel="stylesheet" href="../assets/stylesheets/palette.
|
|
35
|
+
<link rel="stylesheet" href="../assets/stylesheets/palette.fb2fffe2.min.css">
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
@@ -93,6 +93,16 @@
|
|
|
93
93
|
|
|
94
94
|
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
|
|
95
95
|
|
|
96
|
+
<aside class="md-banner md-banner--warning">
|
|
97
|
+
<div class="md-banner__inner md-grid md-typeset">
|
|
98
|
+
You are not viewing the latest version.
|
|
99
|
+
<a href="../..">
|
|
100
|
+
<strong>Click here to go to latest.</strong>
|
|
101
|
+
</a>
|
|
102
|
+
</div>
|
|
103
|
+
<script>var el=document.querySelector("[data-md-component=outdated]"),base=new URL(".."),outdated=__md_get("__outdated",sessionStorage,base);!0===outdated&&el&&(el.hidden=!1)</script>
|
|
104
|
+
</aside>
|
|
105
|
+
|
|
96
106
|
</div>
|
|
97
107
|
|
|
98
108
|
|
|
@@ -332,7 +342,7 @@
|
|
|
332
342
|
|
|
333
343
|
|
|
334
344
|
<li class="md-tabs__item">
|
|
335
|
-
<a href="../project/
|
|
345
|
+
<a href="../project/index.html" class="md-tabs__link">
|
|
336
346
|
|
|
337
347
|
|
|
338
348
|
|
|
@@ -641,6 +651,8 @@
|
|
|
641
651
|
|
|
642
652
|
|
|
643
653
|
|
|
654
|
+
|
|
655
|
+
|
|
644
656
|
|
|
645
657
|
|
|
646
658
|
|
|
@@ -788,6 +800,34 @@
|
|
|
788
800
|
|
|
789
801
|
|
|
790
802
|
|
|
803
|
+
<li class="md-nav__item">
|
|
804
|
+
<a href="../getting-started/builds.html" class="md-nav__link">
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
<span class="md-ellipsis">
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
Builds
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
</span>
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
</a>
|
|
820
|
+
</li>
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
791
831
|
|
|
792
832
|
|
|
793
833
|
|
|
@@ -814,7 +854,7 @@
|
|
|
814
854
|
|
|
815
855
|
|
|
816
856
|
|
|
817
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
857
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
|
|
818
858
|
|
|
819
859
|
|
|
820
860
|
<div class="md-nav__link md-nav__container">
|
|
@@ -836,14 +876,14 @@
|
|
|
836
876
|
</a>
|
|
837
877
|
|
|
838
878
|
|
|
839
|
-
<label class="md-nav__link " for="
|
|
879
|
+
<label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
|
|
840
880
|
<span class="md-nav__icon md-icon"></span>
|
|
841
881
|
</label>
|
|
842
882
|
|
|
843
883
|
</div>
|
|
844
884
|
|
|
845
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
846
|
-
<label class="md-nav__title" for="
|
|
885
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
|
|
886
|
+
<label class="md-nav__title" for="__nav_3_6">
|
|
847
887
|
<span class="md-nav__icon md-icon"></span>
|
|
848
888
|
|
|
849
889
|
|
|
@@ -1199,6 +1239,45 @@
|
|
|
1199
1239
|
</span>
|
|
1200
1240
|
</a>
|
|
1201
1241
|
|
|
1242
|
+
</li>
|
|
1243
|
+
|
|
1244
|
+
<li class="md-nav__item">
|
|
1245
|
+
<a href="#distinguishing-same-named-files" class="md-nav__link">
|
|
1246
|
+
<span class="md-ellipsis">
|
|
1247
|
+
|
|
1248
|
+
Distinguishing same-named files
|
|
1249
|
+
|
|
1250
|
+
</span>
|
|
1251
|
+
</a>
|
|
1252
|
+
|
|
1253
|
+
<nav class="md-nav" aria-label="Distinguishing same-named files">
|
|
1254
|
+
<ul class="md-nav__list">
|
|
1255
|
+
|
|
1256
|
+
<li class="md-nav__item">
|
|
1257
|
+
<a href="#header-source-files" class="md-nav__link">
|
|
1258
|
+
<span class="md-ellipsis">
|
|
1259
|
+
|
|
1260
|
+
Header / source files
|
|
1261
|
+
|
|
1262
|
+
</span>
|
|
1263
|
+
</a>
|
|
1264
|
+
|
|
1265
|
+
</li>
|
|
1266
|
+
|
|
1267
|
+
<li class="md-nav__item">
|
|
1268
|
+
<a href="#test-files-cli-test-tasks" class="md-nav__link">
|
|
1269
|
+
<span class="md-ellipsis">
|
|
1270
|
+
|
|
1271
|
+
Test files (CLI test tasks)
|
|
1272
|
+
|
|
1273
|
+
</span>
|
|
1274
|
+
</a>
|
|
1275
|
+
|
|
1276
|
+
</li>
|
|
1277
|
+
|
|
1278
|
+
</ul>
|
|
1279
|
+
</nav>
|
|
1280
|
+
|
|
1202
1281
|
</li>
|
|
1203
1282
|
|
|
1204
1283
|
<li class="md-nav__item">
|
|
@@ -1305,6 +1384,50 @@
|
|
|
1305
1384
|
</span>
|
|
1306
1385
|
</a>
|
|
1307
1386
|
|
|
1387
|
+
</li>
|
|
1388
|
+
|
|
1389
|
+
<li class="md-nav__item">
|
|
1390
|
+
<a href="#preprocessing-for-include-directives" class="md-nav__link">
|
|
1391
|
+
<span class="md-ellipsis">
|
|
1392
|
+
|
|
1393
|
+
Preprocessing for include directives
|
|
1394
|
+
|
|
1395
|
+
</span>
|
|
1396
|
+
</a>
|
|
1397
|
+
|
|
1398
|
+
</li>
|
|
1399
|
+
|
|
1400
|
+
<li class="md-nav__item">
|
|
1401
|
+
<a href="#preprocessing-for-tests-and-mocks" class="md-nav__link">
|
|
1402
|
+
<span class="md-ellipsis">
|
|
1403
|
+
|
|
1404
|
+
Preprocessing for tests and mocks
|
|
1405
|
+
|
|
1406
|
+
</span>
|
|
1407
|
+
</a>
|
|
1408
|
+
|
|
1409
|
+
</li>
|
|
1410
|
+
|
|
1411
|
+
<li class="md-nav__item">
|
|
1412
|
+
<a href="#preprocessing-for-partials" class="md-nav__link">
|
|
1413
|
+
<span class="md-ellipsis">
|
|
1414
|
+
|
|
1415
|
+
Preprocessing for Partials
|
|
1416
|
+
|
|
1417
|
+
</span>
|
|
1418
|
+
</a>
|
|
1419
|
+
|
|
1420
|
+
</li>
|
|
1421
|
+
|
|
1422
|
+
<li class="md-nav__item">
|
|
1423
|
+
<a href="#fallback-test-build-preprocessing" class="md-nav__link">
|
|
1424
|
+
<span class="md-ellipsis">
|
|
1425
|
+
|
|
1426
|
+
Fallback test build preprocessing
|
|
1427
|
+
|
|
1428
|
+
</span>
|
|
1429
|
+
</a>
|
|
1430
|
+
|
|
1308
1431
|
</li>
|
|
1309
1432
|
|
|
1310
1433
|
<li class="md-nav__item">
|
|
@@ -1404,23 +1527,6 @@
|
|
|
1404
1527
|
</span>
|
|
1405
1528
|
</a>
|
|
1406
1529
|
|
|
1407
|
-
<nav class="md-nav" aria-label="Dependency tracking">
|
|
1408
|
-
<ul class="md-nav__list">
|
|
1409
|
-
|
|
1410
|
-
<li class="md-nav__item">
|
|
1411
|
-
<a href="#not-so-smart-rebuilds" class="md-nav__link">
|
|
1412
|
-
<span class="md-ellipsis">
|
|
1413
|
-
|
|
1414
|
-
(Not so) smart rebuilds
|
|
1415
|
-
|
|
1416
|
-
</span>
|
|
1417
|
-
</a>
|
|
1418
|
-
|
|
1419
|
-
</li>
|
|
1420
|
-
|
|
1421
|
-
</ul>
|
|
1422
|
-
</nav>
|
|
1423
|
-
|
|
1424
1530
|
</li>
|
|
1425
1531
|
|
|
1426
1532
|
<li class="md-nav__item">
|
|
@@ -2759,6 +2865,8 @@
|
|
|
2759
2865
|
|
|
2760
2866
|
|
|
2761
2867
|
|
|
2868
|
+
|
|
2869
|
+
|
|
2762
2870
|
|
|
2763
2871
|
|
|
2764
2872
|
|
|
@@ -3390,10 +3498,63 @@
|
|
|
3390
3498
|
|
|
3391
3499
|
|
|
3392
3500
|
<li class="md-nav__item">
|
|
3393
|
-
<a href="../plugins/
|
|
3501
|
+
<a href="../plugins/sanitize.html" class="md-nav__link">
|
|
3394
3502
|
|
|
3395
3503
|
|
|
3396
3504
|
|
|
3505
|
+
<span class="md-ellipsis">
|
|
3506
|
+
|
|
3507
|
+
|
|
3508
|
+
Sanitize (ASan, UBSan & Leaks)
|
|
3509
|
+
|
|
3510
|
+
|
|
3511
|
+
|
|
3512
|
+
</span>
|
|
3513
|
+
|
|
3514
|
+
|
|
3515
|
+
|
|
3516
|
+
</a>
|
|
3517
|
+
</li>
|
|
3518
|
+
|
|
3519
|
+
|
|
3520
|
+
|
|
3521
|
+
|
|
3522
|
+
|
|
3523
|
+
|
|
3524
|
+
|
|
3525
|
+
|
|
3526
|
+
|
|
3527
|
+
|
|
3528
|
+
|
|
3529
|
+
|
|
3530
|
+
|
|
3531
|
+
|
|
3532
|
+
|
|
3533
|
+
|
|
3534
|
+
|
|
3535
|
+
|
|
3536
|
+
|
|
3537
|
+
|
|
3538
|
+
|
|
3539
|
+
|
|
3540
|
+
|
|
3541
|
+
|
|
3542
|
+
|
|
3543
|
+
|
|
3544
|
+
|
|
3545
|
+
|
|
3546
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
3547
|
+
|
|
3548
|
+
|
|
3549
|
+
|
|
3550
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_13" >
|
|
3551
|
+
|
|
3552
|
+
|
|
3553
|
+
<div class="md-nav__link md-nav__container">
|
|
3554
|
+
<a href="../plugins/bullseye/index.html" class="md-nav__link ">
|
|
3555
|
+
|
|
3556
|
+
|
|
3557
|
+
|
|
3397
3558
|
<span class="md-ellipsis">
|
|
3398
3559
|
|
|
3399
3560
|
|
|
@@ -3401,6 +3562,50 @@
|
|
|
3401
3562
|
|
|
3402
3563
|
|
|
3403
3564
|
|
|
3565
|
+
</span>
|
|
3566
|
+
|
|
3567
|
+
|
|
3568
|
+
|
|
3569
|
+
</a>
|
|
3570
|
+
|
|
3571
|
+
|
|
3572
|
+
<label class="md-nav__link " for="__nav_6_13" id="__nav_6_13_label" tabindex="0">
|
|
3573
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3574
|
+
</label>
|
|
3575
|
+
|
|
3576
|
+
</div>
|
|
3577
|
+
|
|
3578
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_13_label" aria-expanded="false">
|
|
3579
|
+
<label class="md-nav__title" for="__nav_6_13">
|
|
3580
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3581
|
+
|
|
3582
|
+
|
|
3583
|
+
Bullseye (Coverage)
|
|
3584
|
+
|
|
3585
|
+
|
|
3586
|
+
</label>
|
|
3587
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
3588
|
+
|
|
3589
|
+
|
|
3590
|
+
|
|
3591
|
+
|
|
3592
|
+
|
|
3593
|
+
|
|
3594
|
+
|
|
3595
|
+
|
|
3596
|
+
|
|
3597
|
+
<li class="md-nav__item">
|
|
3598
|
+
<a href="../plugins/bullseye/licensing.html" class="md-nav__link">
|
|
3599
|
+
|
|
3600
|
+
|
|
3601
|
+
|
|
3602
|
+
<span class="md-ellipsis">
|
|
3603
|
+
|
|
3604
|
+
|
|
3605
|
+
Licensing
|
|
3606
|
+
|
|
3607
|
+
|
|
3608
|
+
|
|
3404
3609
|
</span>
|
|
3405
3610
|
|
|
3406
3611
|
|
|
@@ -3411,6 +3616,14 @@
|
|
|
3411
3616
|
|
|
3412
3617
|
|
|
3413
3618
|
|
|
3619
|
+
</ul>
|
|
3620
|
+
</nav>
|
|
3621
|
+
|
|
3622
|
+
</li>
|
|
3623
|
+
|
|
3624
|
+
|
|
3625
|
+
|
|
3626
|
+
|
|
3414
3627
|
|
|
3415
3628
|
|
|
3416
3629
|
|
|
@@ -3880,6 +4093,12 @@
|
|
|
3880
4093
|
|
|
3881
4094
|
|
|
3882
4095
|
|
|
4096
|
+
|
|
4097
|
+
|
|
4098
|
+
|
|
4099
|
+
|
|
4100
|
+
|
|
4101
|
+
|
|
3883
4102
|
|
|
3884
4103
|
|
|
3885
4104
|
|
|
@@ -3899,8 +4118,9 @@
|
|
|
3899
4118
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
|
3900
4119
|
|
|
3901
4120
|
|
|
3902
|
-
<
|
|
3903
|
-
|
|
4121
|
+
<div class="md-nav__link md-nav__container">
|
|
4122
|
+
<a href="../project/index.html" class="md-nav__link ">
|
|
4123
|
+
|
|
3904
4124
|
|
|
3905
4125
|
|
|
3906
4126
|
<span class="md-ellipsis">
|
|
@@ -3914,8 +4134,14 @@
|
|
|
3914
4134
|
|
|
3915
4135
|
|
|
3916
4136
|
|
|
3917
|
-
|
|
3918
|
-
|
|
4137
|
+
</a>
|
|
4138
|
+
|
|
4139
|
+
|
|
4140
|
+
<label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0">
|
|
4141
|
+
<span class="md-nav__icon md-icon"></span>
|
|
4142
|
+
</label>
|
|
4143
|
+
|
|
4144
|
+
</div>
|
|
3919
4145
|
|
|
3920
4146
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
|
|
3921
4147
|
<label class="md-nav__title" for="__nav_8">
|
|
@@ -3929,6 +4155,8 @@
|
|
|
3929
4155
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
3930
4156
|
|
|
3931
4157
|
|
|
4158
|
+
|
|
4159
|
+
|
|
3932
4160
|
|
|
3933
4161
|
|
|
3934
4162
|
|
|
@@ -3962,6 +4190,34 @@
|
|
|
3962
4190
|
|
|
3963
4191
|
|
|
3964
4192
|
|
|
4193
|
+
<li class="md-nav__item">
|
|
4194
|
+
<a href="../project/sbom.html" class="md-nav__link">
|
|
4195
|
+
|
|
4196
|
+
|
|
4197
|
+
|
|
4198
|
+
<span class="md-ellipsis">
|
|
4199
|
+
|
|
4200
|
+
|
|
4201
|
+
Software Bill of Materials
|
|
4202
|
+
|
|
4203
|
+
|
|
4204
|
+
|
|
4205
|
+
</span>
|
|
4206
|
+
|
|
4207
|
+
|
|
4208
|
+
|
|
4209
|
+
</a>
|
|
4210
|
+
</li>
|
|
4211
|
+
|
|
4212
|
+
|
|
4213
|
+
|
|
4214
|
+
|
|
4215
|
+
|
|
4216
|
+
|
|
4217
|
+
|
|
4218
|
+
|
|
4219
|
+
|
|
4220
|
+
|
|
3965
4221
|
<li class="md-nav__item">
|
|
3966
4222
|
<a href="../project/upgrade.html" class="md-nav__link">
|
|
3967
4223
|
|
|
@@ -4033,6 +4289,8 @@
|
|
|
4033
4289
|
|
|
4034
4290
|
|
|
4035
4291
|
|
|
4292
|
+
|
|
4293
|
+
|
|
4036
4294
|
|
|
4037
4295
|
|
|
4038
4296
|
|
|
@@ -4123,6 +4381,34 @@
|
|
|
4123
4381
|
|
|
4124
4382
|
|
|
4125
4383
|
|
|
4384
|
+
<li class="md-nav__item">
|
|
4385
|
+
<a href="../development/releases.html" class="md-nav__link">
|
|
4386
|
+
|
|
4387
|
+
|
|
4388
|
+
|
|
4389
|
+
<span class="md-ellipsis">
|
|
4390
|
+
|
|
4391
|
+
|
|
4392
|
+
Branching & Releases
|
|
4393
|
+
|
|
4394
|
+
|
|
4395
|
+
|
|
4396
|
+
</span>
|
|
4397
|
+
|
|
4398
|
+
|
|
4399
|
+
|
|
4400
|
+
</a>
|
|
4401
|
+
</li>
|
|
4402
|
+
|
|
4403
|
+
|
|
4404
|
+
|
|
4405
|
+
|
|
4406
|
+
|
|
4407
|
+
|
|
4408
|
+
|
|
4409
|
+
|
|
4410
|
+
|
|
4411
|
+
|
|
4126
4412
|
|
|
4127
4413
|
|
|
4128
4414
|
|
|
@@ -4149,7 +4435,7 @@
|
|
|
4149
4435
|
|
|
4150
4436
|
|
|
4151
4437
|
|
|
4152
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
4438
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_4" >
|
|
4153
4439
|
|
|
4154
4440
|
|
|
4155
4441
|
<div class="md-nav__link md-nav__container">
|
|
@@ -4171,14 +4457,14 @@
|
|
|
4171
4457
|
</a>
|
|
4172
4458
|
|
|
4173
4459
|
|
|
4174
|
-
<label class="md-nav__link " for="
|
|
4460
|
+
<label class="md-nav__link " for="__nav_10_4" id="__nav_10_4_label" tabindex="0">
|
|
4175
4461
|
<span class="md-nav__icon md-icon"></span>
|
|
4176
4462
|
</label>
|
|
4177
4463
|
|
|
4178
4464
|
</div>
|
|
4179
4465
|
|
|
4180
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
4181
|
-
<label class="md-nav__title" for="
|
|
4466
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_4_label" aria-expanded="false">
|
|
4467
|
+
<label class="md-nav__title" for="__nav_10_4">
|
|
4182
4468
|
<span class="md-nav__icon md-icon"></span>
|
|
4183
4469
|
|
|
4184
4470
|
|
|
@@ -4324,6 +4610,45 @@
|
|
|
4324
4610
|
</span>
|
|
4325
4611
|
</a>
|
|
4326
4612
|
|
|
4613
|
+
</li>
|
|
4614
|
+
|
|
4615
|
+
<li class="md-nav__item">
|
|
4616
|
+
<a href="#distinguishing-same-named-files" class="md-nav__link">
|
|
4617
|
+
<span class="md-ellipsis">
|
|
4618
|
+
|
|
4619
|
+
Distinguishing same-named files
|
|
4620
|
+
|
|
4621
|
+
</span>
|
|
4622
|
+
</a>
|
|
4623
|
+
|
|
4624
|
+
<nav class="md-nav" aria-label="Distinguishing same-named files">
|
|
4625
|
+
<ul class="md-nav__list">
|
|
4626
|
+
|
|
4627
|
+
<li class="md-nav__item">
|
|
4628
|
+
<a href="#header-source-files" class="md-nav__link">
|
|
4629
|
+
<span class="md-ellipsis">
|
|
4630
|
+
|
|
4631
|
+
Header / source files
|
|
4632
|
+
|
|
4633
|
+
</span>
|
|
4634
|
+
</a>
|
|
4635
|
+
|
|
4636
|
+
</li>
|
|
4637
|
+
|
|
4638
|
+
<li class="md-nav__item">
|
|
4639
|
+
<a href="#test-files-cli-test-tasks" class="md-nav__link">
|
|
4640
|
+
<span class="md-ellipsis">
|
|
4641
|
+
|
|
4642
|
+
Test files (CLI test tasks)
|
|
4643
|
+
|
|
4644
|
+
</span>
|
|
4645
|
+
</a>
|
|
4646
|
+
|
|
4647
|
+
</li>
|
|
4648
|
+
|
|
4649
|
+
</ul>
|
|
4650
|
+
</nav>
|
|
4651
|
+
|
|
4327
4652
|
</li>
|
|
4328
4653
|
|
|
4329
4654
|
<li class="md-nav__item">
|
|
@@ -4430,6 +4755,50 @@
|
|
|
4430
4755
|
</span>
|
|
4431
4756
|
</a>
|
|
4432
4757
|
|
|
4758
|
+
</li>
|
|
4759
|
+
|
|
4760
|
+
<li class="md-nav__item">
|
|
4761
|
+
<a href="#preprocessing-for-include-directives" class="md-nav__link">
|
|
4762
|
+
<span class="md-ellipsis">
|
|
4763
|
+
|
|
4764
|
+
Preprocessing for include directives
|
|
4765
|
+
|
|
4766
|
+
</span>
|
|
4767
|
+
</a>
|
|
4768
|
+
|
|
4769
|
+
</li>
|
|
4770
|
+
|
|
4771
|
+
<li class="md-nav__item">
|
|
4772
|
+
<a href="#preprocessing-for-tests-and-mocks" class="md-nav__link">
|
|
4773
|
+
<span class="md-ellipsis">
|
|
4774
|
+
|
|
4775
|
+
Preprocessing for tests and mocks
|
|
4776
|
+
|
|
4777
|
+
</span>
|
|
4778
|
+
</a>
|
|
4779
|
+
|
|
4780
|
+
</li>
|
|
4781
|
+
|
|
4782
|
+
<li class="md-nav__item">
|
|
4783
|
+
<a href="#preprocessing-for-partials" class="md-nav__link">
|
|
4784
|
+
<span class="md-ellipsis">
|
|
4785
|
+
|
|
4786
|
+
Preprocessing for Partials
|
|
4787
|
+
|
|
4788
|
+
</span>
|
|
4789
|
+
</a>
|
|
4790
|
+
|
|
4791
|
+
</li>
|
|
4792
|
+
|
|
4793
|
+
<li class="md-nav__item">
|
|
4794
|
+
<a href="#fallback-test-build-preprocessing" class="md-nav__link">
|
|
4795
|
+
<span class="md-ellipsis">
|
|
4796
|
+
|
|
4797
|
+
Fallback test build preprocessing
|
|
4798
|
+
|
|
4799
|
+
</span>
|
|
4800
|
+
</a>
|
|
4801
|
+
|
|
4433
4802
|
</li>
|
|
4434
4803
|
|
|
4435
4804
|
<li class="md-nav__item">
|
|
@@ -4529,23 +4898,6 @@
|
|
|
4529
4898
|
</span>
|
|
4530
4899
|
</a>
|
|
4531
4900
|
|
|
4532
|
-
<nav class="md-nav" aria-label="Dependency tracking">
|
|
4533
|
-
<ul class="md-nav__list">
|
|
4534
|
-
|
|
4535
|
-
<li class="md-nav__item">
|
|
4536
|
-
<a href="#not-so-smart-rebuilds" class="md-nav__link">
|
|
4537
|
-
<span class="md-ellipsis">
|
|
4538
|
-
|
|
4539
|
-
(Not so) smart rebuilds
|
|
4540
|
-
|
|
4541
|
-
</span>
|
|
4542
|
-
</a>
|
|
4543
|
-
|
|
4544
|
-
</li>
|
|
4545
|
-
|
|
4546
|
-
</ul>
|
|
4547
|
-
</nav>
|
|
4548
|
-
|
|
4549
4901
|
</li>
|
|
4550
4902
|
|
|
4551
4903
|
<li class="md-nav__item">
|
|
@@ -4678,10 +5030,10 @@
|
|
|
4678
5030
|
|
|
4679
5031
|
|
|
4680
5032
|
<h1 id="conventions-behaviors">Conventions & Behaviors</h1>
|
|
4681
|
-
<p><strong>How to get things done and understand what
|
|
5033
|
+
<p><strong>How to get things done and understand what’s happening during builds</strong></p>
|
|
4682
5034
|
<h2 id="directory-structure-filenames">Directory structure & filenames</h2>
|
|
4683
|
-
<p>Much of Ceedling
|
|
4684
|
-
matching certain patterns inside the paths it
|
|
5035
|
+
<p>Much of Ceedling’s functionality is driven by collecting files
|
|
5036
|
+
matching certain patterns inside the paths it’s configured
|
|
4685
5037
|
to search. See the documentation for the <code>:extension</code> section
|
|
4686
5038
|
of your configuration file (found in the <a href="../configuration/index.html">configuration reference</a>) to
|
|
4687
5039
|
configure the file extensions Ceedling uses to match and collect
|
|
@@ -4689,14 +5041,70 @@ files. Test file naming is covered later in this section.</p>
|
|
|
4689
5041
|
<p>Test files and source files must be segregated by directories.
|
|
4690
5042
|
Any directory structure will do. Tests can be held in subdirectories
|
|
4691
5043
|
within source directories, or tests and source directories
|
|
4692
|
-
can be wholly separated at the top of your project
|
|
5044
|
+
can be wholly separated at the top of your project’s directory
|
|
4693
5045
|
tree.</p>
|
|
5046
|
+
<h2 id="distinguishing-same-named-files">Distinguishing same-named files</h2>
|
|
5047
|
+
<h3 id="header-source-files">Header / source files</h3>
|
|
5048
|
+
<p>Ceedling distinguishes files by their full relative path, not just their
|
|
5049
|
+
filename. A project may have, for example, both <code>src/drivers/uart.c</code> and
|
|
5050
|
+
<code>src/sensors/uart.c</code> without one hiding or colliding with the other.</p>
|
|
5051
|
+
<p>Distinguishing files is mostly an issue in test builds. If two files share
|
|
5052
|
+
a name without enough path to distinguish them, Ceedling resolves the reference
|
|
5053
|
+
to the first match among the file collection. File collections are ordered per
|
|
5054
|
+
your project configuration (<code>:paths</code>). The ordering of collected files is
|
|
5055
|
+
identical to the search path ordering provided to the compiler from the same
|
|
5056
|
+
<code>:paths</code> configuration plus any use of
|
|
5057
|
+
<a href="build-directives.html#test_include_path"><code>TEST_INCLUDE_PATH()</code></a> directives in
|
|
5058
|
+
a test file. When Ceedling finds more than one reference, it uses the first
|
|
5059
|
+
in the ordered file list but logs an informational notice naming multi-file
|
|
5060
|
+
matches, so the choice is not silent.</p>
|
|
5061
|
+
<p>If Ceedling uses the wrong match for lack of path information, your test build
|
|
5062
|
+
fails downstream with an ordinary compilation error indirectly revealing the
|
|
5063
|
+
issue. Add enough path at the point of reference to select the file you actually
|
|
5064
|
+
meant.</p>
|
|
5065
|
+
<ul>
|
|
5066
|
+
<li>Use paths in <code>#include</code> directives in your test files to distinguish header
|
|
5067
|
+
files of the same name (mocks are distiguished by the same filepath as the
|
|
5068
|
+
headers from which they are generated). Examples: <code>#include "foo/bar/file.h"</code>
|
|
5069
|
+
and/or <code>#include "foo/bar/mock_file.h"</code>.</li>
|
|
5070
|
+
<li>Use the <a href="build-directives.html"><code>TEST_SOURCE_FILE()</code> build directive macro</a>
|
|
5071
|
+
to provide a path to distinguish source files of the same name to be
|
|
5072
|
+
compiled and linked with a test executable.</li>
|
|
5073
|
+
</ul>
|
|
5074
|
+
<div class="admonition tip">
|
|
5075
|
+
<p class="admonition-title">Mocking two same-named headers in one test file</p>
|
|
5076
|
+
<p>Include each mock through its folder, as in <code>#include "drivers/uart/mock_config.h"</code>
|
|
5077
|
+
and <code>#include "drivers/spi/mock_config.h"</code>. With
|
|
5078
|
+
<a href="../configuration/reference/cmock.html#mock_name_include_folder"><code>:cmock</code> ↳ <code>:mock_name_include_folder</code></a>,
|
|
5079
|
+
enabled by default, each mock is named by that folder, and the two do not collide.</p>
|
|
5080
|
+
</div>
|
|
5081
|
+
<p><code>TEST_SOURCE_FILE()</code> also takes precedence over the header/source correspondence
|
|
5082
|
+
convention above. If a test both <code>#include</code>s a header and separately names a
|
|
5083
|
+
same-named source via <code>TEST_SOURCE_FILE()</code>, the directive’s own path wins outright
|
|
5084
|
+
— its source is the one compiled, and the header/source convention does not also
|
|
5085
|
+
compile whatever it would otherwise have found on its own for that same name. This
|
|
5086
|
+
holds even when the header’s own <code>#include</code> was already unambiguous; a
|
|
5087
|
+
<code>TEST_SOURCE_FILE()</code> entry sharing that basename is always authoritative. (The
|
|
5088
|
+
header itself is still validated/resolved as usual — only which <em>source</em> file gets
|
|
5089
|
+
compiled for a shared basename is affected.) Like the search-path resolution
|
|
5090
|
+
above, this override is logged with an informational notice naming the winning
|
|
5091
|
+
<code>TEST_SOURCE_FILE()</code> entry and the <code>#include</code> it overrode, so the substitution
|
|
5092
|
+
is not silent either.</p>
|
|
5093
|
+
<h3 id="test-files-cli-test-tasks">Test files (CLI test tasks)</h3>
|
|
5094
|
+
<p>Execute <a href="../getting-started/command-line.html"><code>ceedling test:</code> tasks</a> at the command line with an
|
|
5095
|
+
optional partial path to distinguish test executables (e.g. <code>test:foo/bar.c</code>),
|
|
5096
|
+
recalling that multiple conventions exist for finding/executing a test
|
|
5097
|
+
executable via <code>test:</code> task.</p>
|
|
5098
|
+
<p>Unlike the cases above, a same-named test file given at the command line is
|
|
5099
|
+
<strong>not</strong> auto-resolved. You must supply enough path yourself in the task
|
|
5100
|
+
name. Ceedling will complain about colliding task names and provide a list
|
|
5101
|
+
of matching candidates to help you provide path to disambiguate test files.</p>
|
|
4694
5102
|
<h2 id="test-build-search-paths">Test build search paths</h2>
|
|
4695
5103
|
<p>Test builds in C are fairly complex. Each test file becomes a test
|
|
4696
5104
|
executable. Each test executable needs generated runner code and
|
|
4697
5105
|
optionally generated mocks. Slicing and dicing what files are
|
|
4698
5106
|
compiled and linked and how search paths are assembled is tricky
|
|
4699
|
-
business. That
|
|
5107
|
+
business. That’s why Ceedling exists in the first place. Because
|
|
4700
5108
|
of these issues, search paths, in particular, require quite a bit
|
|
4701
5109
|
of special handling.</p>
|
|
4702
5110
|
<p>Unless your project is relying exclusively on <code>extern</code> statements and
|
|
@@ -4734,8 +5142,8 @@ it is assembled from a variety of sources. In order:</p>
|
|
|
4734
5142
|
<li><code>:paths</code> ↳ <code>:support</code> list from your project configuration</li>
|
|
4735
5143
|
<li><code>:paths</code> ↳ <code>:include</code> list from your project configuration</li>
|
|
4736
5144
|
<li><code>:paths</code> ↳ <code>:libraries</code> list from your project configuration</li>
|
|
4737
|
-
<li>Internal path for Unity
|
|
4738
|
-
<li>Internal paths for CMock
|
|
5145
|
+
<li>Internal path for Unity’s unit test framework C code</li>
|
|
5146
|
+
<li>Internal paths for CMock’s C code (if respective feature enabled)</li>
|
|
4739
5147
|
<li><code>:paths</code> ↳ <code>:test_toolchain_include</code> list from your project
|
|
4740
5148
|
configuration</li>
|
|
4741
5149
|
</ol>
|
|
@@ -4776,7 +5184,7 @@ source file is compiled into an object file. All object files are linked.
|
|
|
4776
5184
|
A Ceedling release build may optionally compile and link in CException
|
|
4777
5185
|
and can handle linking in libraries as well.</p>
|
|
4778
5186
|
<p>Search paths for release builds are configured with <code>:paths</code> ↳ <code>:include</code>
|
|
4779
|
-
in your project configuration. That
|
|
5187
|
+
in your project configuration. That’s about all there is to it.</p>
|
|
4780
5188
|
<h2 id="source-files-release-artifacts">Source files & release artifacts</h2>
|
|
4781
5189
|
<p>Your binary release artifact results from the compilation and
|
|
4782
5190
|
linking of all source files Ceedling finds in the specified source
|
|
@@ -4800,6 +5208,38 @@ For example, <code>test_some_super_functionality.c</code>, <code>TestYourSourceF
|
|
|
4800
5208
|
or <code>testing_MyAwesomeCode.C</code> could each be valid test file
|
|
4801
5209
|
names. Note, however, that Ceedling can recognize only one test
|
|
4802
5210
|
file naming convention per project.</p>
|
|
5211
|
+
<h4 id="installer-like-test-filenames-on-windows">Installer-like test filenames on Windows</h4>
|
|
5212
|
+
<p>On Windows, Ceedling writes a manifest beside each test executable. It lets a
|
|
5213
|
+
test executable run whatever its name.</p>
|
|
5214
|
+
<p>A test executable is named after its test file. Windows treats an executable
|
|
5215
|
+
whose name contains <em>install</em>, <em>setup</em>, <em>update</em>, or <em>patch</em> as an installer.
|
|
5216
|
+
The Installer Detection feature of User Account Control (UAC) then demands
|
|
5217
|
+
administrator privileges to run it. A test file such as <code>test_setup_parser.c</code>
|
|
5218
|
+
would otherwise build a test executable Windows will not run.</p>
|
|
5219
|
+
<p>The manifest, <code><test executable>.manifest</code>, asks Windows to run the executable
|
|
5220
|
+
with your own privileges. That turns Installer Detection off for it. When a
|
|
5221
|
+
test filename contains one of these words, Ceedling logs a warning noting that
|
|
5222
|
+
it generated the manifest.</p>
|
|
5223
|
+
<p>Windows ignores a manifest file when the executable already embeds a manifest
|
|
5224
|
+
of its own. Whether yours does depends on your toolchain.</p>
|
|
5225
|
+
<ul>
|
|
5226
|
+
<li><strong>MinGW-w64 GCC from <a href="https://www.msys2.org">MSYS2</a></strong> links a default manifest into every executable
|
|
5227
|
+
when its <code>windows-default-manifest</code> package is installed. That manifest
|
|
5228
|
+
already asks Windows to run the executable with your own privileges, so
|
|
5229
|
+
these names cause no trouble, and the manifest file is unused. This GCC is
|
|
5230
|
+
also the one RubyInstaller’s DevKit provides.</li>
|
|
5231
|
+
<li><strong>Other MinGW-w64 distributions</strong> may or may not include that default
|
|
5232
|
+
manifest. GCC links it only when it finds <code>default-manifest.o</code> among its
|
|
5233
|
+
libraries. Without it, the manifest file Ceedling writes is what lets these
|
|
5234
|
+
test executables run.</li>
|
|
5235
|
+
<li><strong>The original MinGW</strong> (mingw.org) is believed to embed no manifest, so it
|
|
5236
|
+
relies on the manifest file.</li>
|
|
5237
|
+
</ul>
|
|
5238
|
+
<p>To see whether an executable embeds a manifest, search it for the text
|
|
5239
|
+
<code>requestedExecutionLevel</code>. A match means Windows uses the embedded manifest.</p>
|
|
5240
|
+
<p>Before 1.2.0, Ceedling wrote no manifest. With a toolchain that embeds none,
|
|
5241
|
+
test files with these words in their names could not be run on Windows without
|
|
5242
|
+
administrator privileges.</p>
|
|
4803
5243
|
<h3 id="source-mock-files-to-compile-and-link">Source & mock files to compile and link</h3>
|
|
4804
5244
|
<p>Ceedling knows what files to compile and link into each individual
|
|
4805
5245
|
test executable by way of the <code>#include</code> list contained in each
|
|
@@ -4815,12 +5255,23 @@ test file and optional test directive macros.</p>
|
|
|
4815
5255
|
compile & link that generated code into into the test executable
|
|
4816
5256
|
as well.</li>
|
|
4817
5257
|
</ol>
|
|
5258
|
+
<p>A mock is generated into the directory mirroring the header it came from, so two
|
|
5259
|
+
same-named headers in different directories produce two mocks in different
|
|
5260
|
+
directories. A single test file can mock both when it includes each mock through
|
|
5261
|
+
its folder (e.g. <code>#include "folder/mock_foo.h"</code>), since each mock is then named
|
|
5262
|
+
by that folder.</p>
|
|
4818
5263
|
<p>Sometimes the source file you need to add to your test executable has
|
|
4819
5264
|
no corresponding header file — e.g. <code>file_abc.h</code> contains symbols
|
|
4820
5265
|
present in <code>file_xyz.c</code>. In these cases, you can use the test
|
|
4821
5266
|
directive macro <code>TEST_SOURCE_FILE(...)</code> to tell Ceedling to compile
|
|
4822
5267
|
and link the desired source file into the test executable (see
|
|
4823
5268
|
<a href="build-directives.html">macro documentation</a>).</p>
|
|
5269
|
+
<p>Conversely, sometimes you may need to remove from a test executable
|
|
5270
|
+
build a source file that corresponds to an <code>#include</code> directive in your
|
|
5271
|
+
test file. A <code>TEST_SOURCE_FILE()</code> entry prefixed with a <code>-:</code> decorator
|
|
5272
|
+
removes a named file from a test‘s compile/link list. See
|
|
5273
|
+
<a href="build-directives.html#test_source_file-subtractive-notation"><code>TEST_SOURCE_FILE()</code> Subtractive Notation</a>
|
|
5274
|
+
for the full discussion.</p>
|
|
4824
5275
|
<p>That was a lot of information and many clauses in a very few
|
|
4825
5276
|
sentences; the commented example test file code that follows in a
|
|
4826
5277
|
bit will make it clearer.</p>
|
|
@@ -4847,13 +5298,39 @@ the naming convention of your test case functions.</p>
|
|
|
4847
5298
|
<p>Ceedling and CMock are advanced tools that both perform fairly sophisticated
|
|
4848
5299
|
parsing.</p>
|
|
4849
5300
|
<p>However, neither of these tools fully understands the entire C language,
|
|
4850
|
-
especially C
|
|
5301
|
+
especially C’s preprocessing statements.</p>
|
|
5302
|
+
<p>Ceedling’s preprocessing features rely on <code>gcc</code>’s preprocessing mode to strip
|
|
5303
|
+
down / expand test files and headers to their raw code content that can then
|
|
5304
|
+
be parsed as text by Ceedling and CMock. These tools must be in your search
|
|
5305
|
+
path if Ceedling’s preprocessing is enabled.</p>
|
|
5306
|
+
<p>See the <a href="../configuration/reference/project.html"><code>:project</code> ↳ <code>:use_test_preprocessor</code></a> project
|
|
5307
|
+
configuration setting.</p>
|
|
5308
|
+
<div class="admonition warning">
|
|
5309
|
+
<p class="admonition-title">Warning</p>
|
|
5310
|
+
<p>Ceedling’s test preprocessing abilities are directly tied to the features and
|
|
5311
|
+
output of <code>gcc</code>. The default tool definitions for these should not be
|
|
5312
|
+
redefined for other toolchains. Future Ceedling improvements will allow for a
|
|
5313
|
+
plugin-style ability to use your own tools in this highly specialized capacity.</p>
|
|
5314
|
+
</div>
|
|
5315
|
+
<h3 id="preprocessing-for-include-directives">Preprocessing for include directives</h3>
|
|
5316
|
+
<p>In order for Ceedling to do its job, it needs an accurate picture of <code>#include</code>
|
|
5317
|
+
directives used by mockable headers and test files. For simple projects, this can
|
|
5318
|
+
be done with simple text scanning.</p>
|
|
5319
|
+
<p>For projects with conditional compilation (e.g. <code>#ifdef</code>) around include
|
|
5320
|
+
directives or include directives with macros as targets, preprocessing is required.
|
|
5321
|
+
Ceedling uses various passes of preprocessor modes to successfully extract
|
|
5322
|
+
<code>#include</code> directives.</p>
|
|
5323
|
+
<p>A test file’s <code>#include</code> directives are extracted with the preprocessor only when
|
|
5324
|
+
test files are preprocessed, with <code>:use_test_preprocessor</code> set to <code>:tests</code> or <code>:all</code>.
|
|
5325
|
+
With <code>:mocks</code>, only mockable headers are preprocessed, and a test file’s
|
|
5326
|
+
<code>#include</code> directives come from text scanning.</p>
|
|
5327
|
+
<h3 id="preprocessing-for-tests-and-mocks">Preprocessing for tests and mocks</h3>
|
|
4851
5328
|
<p>If your test files rely on macros and <code>#ifdef</code> conditionals used in certain
|
|
4852
|
-
ways (see examples below), there
|
|
5329
|
+
ways (see examples below), there’s a chance that Ceedling will break on trying
|
|
4853
5330
|
to process your test files, or, alternatively, your test suite will build but
|
|
4854
5331
|
not execute as expected.</p>
|
|
4855
5332
|
<p>Similarly, generating mocks of header files with macros and <code>#ifdef</code>
|
|
4856
|
-
conditionals around or in function signatures can get weird. Of course, it
|
|
5333
|
+
conditionals around or in function signatures can get weird. Of course, it’s
|
|
4857
5334
|
often in sophisticated projects with complex header files that mocking is most
|
|
4858
5335
|
desired in the first place.</p>
|
|
4859
5336
|
<p>Ceedling includes an optional ability to preprocess the following files before
|
|
@@ -4863,38 +5340,60 @@ then extracting test cases and functions to be mocked with text parsing.</p>
|
|
|
4863
5340
|
<li>Mockable header files, or</li>
|
|
4864
5341
|
<li>Both of the above </li>
|
|
4865
5342
|
</ol>
|
|
4866
|
-
<
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
|
|
4871
|
-
|
|
4872
|
-
<
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
|
|
5343
|
+
<h3 id="preprocessing-for-partials">Preprocessing for Partials</h3>
|
|
5344
|
+
<p>When <a href="partials/index.html">Partials</a> are enabled, Ceedling expands the use of preprocessing
|
|
5345
|
+
beyond only include directives, mockable headers, and test files to partialized
|
|
5346
|
+
source files as well. In order to extract and surgically alter your source code
|
|
5347
|
+
to become a generated Partial, your source code must be run through various passes
|
|
5348
|
+
of preprocessig to resolve conditional compilation, expand macros, etc.</p>
|
|
5349
|
+
<div class="admonition note">
|
|
5350
|
+
<p class="admonition-title">Note</p>
|
|
5351
|
+
<p>The use of Partials automatically enables test preprocessing regardless of
|
|
5352
|
+
your configuration setting and logs the setting update.</p>
|
|
5353
|
+
</div>
|
|
5354
|
+
<h3 id="fallback-test-build-preprocessing">Fallback test build preprocessing</h3>
|
|
5355
|
+
<p>Ceedling depends on the GNU Compiler Collection (<code>gcc</code>) for many of its advanced
|
|
5356
|
+
features (such as in the preceding sections).</p>
|
|
5357
|
+
<p>Older versions of <code>gcc</code> or <code>clang</code> standins may not support certain preprocessing
|
|
5358
|
+
features Ceedling requires. Ceedling probes for those features; if they are not
|
|
5359
|
+
found then Ceedling falls back to a simpler, best-effort
|
|
5360
|
+
<a href="../configuration/reference/test-build.html#preprocess_force_fallback">fallback preprocessing</a>.</p>
|
|
5361
|
+
<p>Fallback preprocessing is a best effort with no guarantees. It is not as capable
|
|
5362
|
+
as full preprocessing, but it can usually handle the most common preprocessing
|
|
5363
|
+
needs (i.e. conditional compilation). Ceedling does what it can to find and log
|
|
5364
|
+
issues related to inadequate preprocessing before you get to mysterious
|
|
5365
|
+
compilation errors.</p>
|
|
5366
|
+
<div class="admonition tip">
|
|
5367
|
+
<p class="admonition-title">Fallback preprocessing for faster test builds</p>
|
|
5368
|
+
<p>Ceedling’s internal <a href="../configuration/reference/test-build.html#preprocess_force_fallback">fallback preprocessing mode can be forced</a>,
|
|
5369
|
+
and, for <strong><em>some</em></strong> projects this can be a shortcut to running advanced
|
|
5370
|
+
Ceedling features such as Partials with faster builds.</p>
|
|
5371
|
+
<p><strong><em>If using Partials, there’s a good chance your code is too complex for fallback preprocessing.</em></strong></p>
|
|
5372
|
+
</div>
|
|
4877
5373
|
<h3 id="limitations-gotchas">Limitations & gotchas</h3>
|
|
4878
5374
|
<h4 id="preprocessing-limitations-cheatsheet">Preprocessing limitations cheatsheet</h4>
|
|
4879
|
-
<p>Ceedling
|
|
5375
|
+
<p>Ceedling’s preprocessing abilities are generally quite useful — especially in
|
|
4880
5376
|
projects with multiple build configurations for different feature sets or
|
|
4881
5377
|
multiple targets, legacy code that cannot be refactored, and complex header
|
|
4882
5378
|
files provided by vendors.</p>
|
|
4883
|
-
<p>However, best applying Ceedling
|
|
5379
|
+
<p>However, best applying Ceedling’s preprocessing abilities requires understanding
|
|
4884
5380
|
how the feature works, when to use it, and its limitations.</p>
|
|
4885
|
-
<p>At a high level, Ceedling
|
|
5381
|
+
<p>At a high level, Ceedling’s preprocessing is applicable for cases where macros
|
|
4886
5382
|
or conditional compilation preprocessing statements (e.g. <code>#ifdef</code>):</p>
|
|
4887
5383
|
<ul>
|
|
4888
5384
|
<li>Generate or hide/reveal your test files' <code>#include</code> statements.</li>
|
|
4889
5385
|
<li>Generate or hide/reveal your test files' test case function signatures
|
|
4890
|
-
(e.g. <code>void test_foo()</code
|
|
5386
|
+
(e.g. <code>void test_foo()</code>).</li>
|
|
4891
5387
|
<li>Generate or hide/reveal mockable header files' <code>#include</code> statements.</li>
|
|
4892
5388
|
<li>Generate or hide/reveal header files' mockable function signatures.</li>
|
|
4893
5389
|
</ul>
|
|
4894
|
-
<
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
5390
|
+
<div class="admonition note">
|
|
5391
|
+
<p class="admonition-title">Note</p>
|
|
5392
|
+
<p>You do not necessarily need to enable Ceedling’s preprocessing only
|
|
5393
|
+
because you have preprocessing statements in your test files or mockable
|
|
5394
|
+
header files. The feature is only truly needed if your project meets the
|
|
5395
|
+
conditions above.</p>
|
|
5396
|
+
</div>
|
|
4898
5397
|
<p>The sections that follow flesh out the details of the bulleted list above.</p>
|
|
4899
5398
|
<h4 id="preprocessing-gotchas">Preprocessing gotchas</h4>
|
|
4900
5399
|
<h5 id="test_include_path-incompatibe-with-ifdef"><code>TEST_INCLUDE_PATH()</code> incompatibe with <code>#ifdef</code></h5>
|
|
@@ -4909,7 +5408,7 @@ statements.</p>
|
|
|
4909
5408
|
for advanced abilities discovered by Ceedling parsing a test file as plain text.
|
|
4910
5409
|
Whether or not Ceedling preprocessing is enabled, Ceedling will always discover
|
|
4911
5410
|
this marker macro in the plain text of a test file.</p>
|
|
4912
|
-
<p>Why is <code>TEST_INCLUDE_PATH()</code> incompatible with <code>#ifdef</code>? Well, it
|
|
5411
|
+
<p>Why is <code>TEST_INCLUDE_PATH()</code> incompatible with <code>#ifdef</code>? Well, it’s because of
|
|
4913
5412
|
a cyclical dependency that cannot be resolved. In order to perform test
|
|
4914
5413
|
preprocessing, we need a full complement of <code>#include</code> search paths. These
|
|
4915
5414
|
could be provided, in part, by <code>TEST_INCLUDE_PATH()</code>. But, if we allow
|
|
@@ -4921,7 +5420,7 @@ plain text looking for this macro at the beginning of a test build.</p>
|
|
|
4921
5420
|
<ul>
|
|
4922
5421
|
<li><code>TEST_SOURCE_FILE()</code> <em>can</em> be placed within conditional compilation
|
|
4923
5422
|
C preprocessing statements.</li>
|
|
4924
|
-
<li><code>TEST_INCLUDE_PATH()</code> & <code>TEST_SOURCE_FILE()</code> can be “hidden” from Ceedling
|
|
5423
|
+
<li><code>TEST_INCLUDE_PATH()</code> & <code>TEST_SOURCE_FILE()</code> can be “hidden” from Ceedling’s
|
|
4925
5424
|
text scanning with traditional C comments.</li>
|
|
4926
5425
|
</ul>
|
|
4927
5426
|
<h3 id="test-file-preprocessing">Test file preprocessing</h3>
|
|
@@ -4930,9 +5429,9 @@ statements in test files before extracting <code>#include</code> conventions and
|
|
|
4930
5429
|
signatures. That is, preprocessing output is used to generate test runners
|
|
4931
5430
|
and assemble the components of a test executable build.</p>
|
|
4932
5431
|
<div class="admonition tip">
|
|
4933
|
-
<p class="admonition-title">Preprocessing
|
|
5432
|
+
<p class="admonition-title">Preprocessing not needed inside test functions</p>
|
|
4934
5433
|
<p>Conditional directives <em>inside</em> test case functions generally do not require
|
|
4935
|
-
Ceedling
|
|
5434
|
+
Ceedling’s test preprocessing ability. Assuming your code is correct, the C
|
|
4936
5435
|
preprocessor within your toolchain will do the right thing for you in your
|
|
4937
5436
|
test build. Read on for more details and the other cases of interest.</p>
|
|
4938
5437
|
</div>
|
|
@@ -4941,21 +5440,21 @@ preprocessor directives generate the <code>#include</code> statements for your t
|
|
|
4941
5440
|
and/or generate or enclose full test case functions. Ceedling will not be able
|
|
4942
5441
|
to properly discover your <code>#include</code> statements or test case functions unless
|
|
4943
5442
|
they are plainly available in an expanded, raw code version of your test file.
|
|
4944
|
-
Ceedling
|
|
5443
|
+
Ceedling’s preprocessing abilities provide that expansion.</p>
|
|
4945
5444
|
<h4 id="examples-of-when-ceedling-preprocessing-is-needed-for-test-files">Examples of when Ceedling preprocessing <strong><em>is</em></strong> needed for test files</h4>
|
|
4946
5445
|
<p>Generally, Ceedling preprocessing is needed when:</p>
|
|
4947
5446
|
<ol>
|
|
4948
|
-
<li><code>#include</code>
|
|
5447
|
+
<li><code>#include</code> directives targets are macros</li>
|
|
4949
5448
|
<li><code>#include</code> statements are conditionally present due to <code>#ifdef</code> statements</li>
|
|
4950
5449
|
<li>Test case function signatures are generated by macros</li>
|
|
4951
5450
|
<li>Test case function signatures are conditionaly present due to <code>#ifdef</code> statements</li>
|
|
4952
5451
|
</ol>
|
|
4953
|
-
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1">// #include
|
|
4954
|
-
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="
|
|
5452
|
+
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1">// #include directive targeting a macor</span>
|
|
5453
|
+
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="cp">#include INCLUDE_STATEMENT_MAGIC("header_file")</span>
|
|
4955
5454
|
</code></pre></div>
|
|
4956
5455
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="c1">// Test file scanning will always see this #include statement</span>
|
|
4957
5456
|
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
|
|
4958
|
-
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"
|
|
5457
|
+
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">"mock_FooBar.h"</span>
|
|
4959
5458
|
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="cp">#endif</span>
|
|
4960
5459
|
</code></pre></div>
|
|
4961
5460
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="c1">// Test runner generation scanning will see the test case function signature and think this test case exists in every build variation</span>
|
|
@@ -4966,33 +5465,61 @@ Ceedling's preprocessing abilities provide that expansion.</p>
|
|
|
4966
5465
|
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="cp">#endif</span>
|
|
4967
5466
|
</code></pre></div>
|
|
4968
5467
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="c1">// Test runner generation will not recognize this as a test case when scanning the file</span>
|
|
4969
|
-
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="kt">void</span><span class="w"> </span><span class="n">TEST_CASE_MAGIC</span><span class="p">(</span><span class="s"
|
|
5468
|
+
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="kt">void</span><span class="w"> </span><span class="n">TEST_CASE_MAGIC</span><span class="p">(</span><span class="s">"foo_bar_case"</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
4970
5469
|
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
|
|
4971
5470
|
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="p">}</span>
|
|
4972
5471
|
</code></pre></div></p>
|
|
5472
|
+
<h4 id="where-the-macros-deciding-an-include-come-from">Where the macros deciding an <code>#include</code> come from</h4>
|
|
5473
|
+
<p>With test preprocessing, a conditional <code>#include</code> (item 2 above) is decided by the same
|
|
5474
|
+
macros your compiler will see, wherever they are defined. A macro may come from your
|
|
5475
|
+
project’s <code>:defines</code>, from the test file itself, or from a header the test file includes.
|
|
5476
|
+
That header can even be one the test file mocks, since a mock includes its real header.</p>
|
|
5477
|
+
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1">// config.h</span>
|
|
5478
|
+
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="cp">#define FEATURE_X_ENABLED</span>
|
|
5479
|
+
</code></pre></div>
|
|
5480
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1">// test_feature.c</span>
|
|
5481
|
+
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">"mock_config.h"</span><span class="w"> </span><span class="c1">// The mock includes config.h, defining FEATURE_X_ENABLED</span>
|
|
5482
|
+
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>
|
|
5483
|
+
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="cp">#ifdef FEATURE_X_ENABLED</span>
|
|
5484
|
+
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">"mock_feature_x.h"</span><span class="w"> </span><span class="c1">// Ceedling finds and generates this mock</span>
|
|
5485
|
+
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="cp">#endif</span>
|
|
5486
|
+
</code></pre></div></p>
|
|
5487
|
+
<div class="admonition warning">
|
|
5488
|
+
<p class="admonition-title">Warning</p>
|
|
5489
|
+
<p>One combination is out of reach. An <code>#include</code> whose target is a macro (item 1
|
|
5490
|
+
above) cannot name a mock when only a header defines that macro. Define the macro
|
|
5491
|
+
under <code>:defines</code> ↳ <code>:test</code> instead, so the test file sees it directly.</p>
|
|
5492
|
+
</div>
|
|
5493
|
+
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="c1">// config.h</span>
|
|
5494
|
+
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="cp">#define FEATURE_MOCK "mock_feature_x.h"</span>
|
|
5495
|
+
</code></pre></div>
|
|
5496
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="c1">// test_feature.c</span>
|
|
5497
|
+
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf">"config.h"</span>
|
|
5498
|
+
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="cp">#include FEATURE_MOCK </span><span class="c1">// Ceedling cannot find this mock</span>
|
|
5499
|
+
</code></pre></div></p>
|
|
4973
5500
|
<h4 id="examples-of-when-test-preprocessing-is-not-needed-for-test-files">Examples of when test preprocessing is <strong><em>not</em></strong> needed for test files</h4>
|
|
4974
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
4975
|
-
<a id="__codelineno-
|
|
4976
|
-
<a id="__codelineno-
|
|
4977
|
-
<a id="__codelineno-
|
|
4978
|
-
<a id="__codelineno-
|
|
4979
|
-
<a id="__codelineno-
|
|
4980
|
-
<a id="__codelineno-
|
|
4981
|
-
<a id="__codelineno-
|
|
4982
|
-
<a id="__codelineno-
|
|
4983
|
-
<a id="__codelineno-
|
|
4984
|
-
<a id="__codelineno-
|
|
5501
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="c1">// Code inside a test case is simply code that your toolchain will expand and build as you desire</span>
|
|
5502
|
+
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="c1">// You can manage your compile time symbols with the :defines section of your project configuration file</span>
|
|
5503
|
+
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="kt">void</span><span class="w"> </span><span class="nf">test_some_test_case</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
5504
|
+
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
|
|
5505
|
+
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
|
|
5506
|
+
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a><span class="cp">#endif</span>
|
|
5507
|
+
<a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a>
|
|
5508
|
+
<a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a><span class="cp">#ifdef BUILD_VARIANT_B</span>
|
|
5509
|
+
<a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a><span class="w"> </span><span class="n">TEST_ASSERT_EQUALS</span><span class="p">(...);</span>
|
|
5510
|
+
<a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a><span class="cp">#endif</span>
|
|
5511
|
+
<a id="__codelineno-8-11" name="__codelineno-8-11" href="#__codelineno-8-11"></a><span class="p">}</span>
|
|
4985
5512
|
</code></pre></div>
|
|
4986
5513
|
<h3 id="header-file-preprocessing">Header file preprocessing</h3>
|
|
4987
5514
|
<p>When preprocessing is enabled for mocking, Ceedling will expand preprocessor
|
|
4988
5515
|
statements in header files before generating mocks from them. CMock requires
|
|
4989
5516
|
a clear look at function definitions and types in order to do its work.</p>
|
|
4990
5517
|
<p>Header files with preprocessor directives and conditional macros can easily
|
|
4991
|
-
obscure details from CMock
|
|
5518
|
+
obscure details from CMock’s limited C parser. Advanced C projects tend
|
|
4992
5519
|
to rely on preprocessing directives and macros to accomplish everything from
|
|
4993
5520
|
build variants to OS calls to register access to managing proprietary language
|
|
4994
5521
|
extensions.</p>
|
|
4995
|
-
<p>Mocking is often most useful in complicated codebases. As such Ceedling
|
|
5522
|
+
<p>Mocking is often most useful in complicated codebases. As such Ceedling’s
|
|
4996
5523
|
preprocessing abilities tend to be quite necessary to properly expand header
|
|
4997
5524
|
files so CMock can parse them.</p>
|
|
4998
5525
|
<h4 id="examples-of-when-ceedling-preprocessing-is-needed-for-mockable-headers">Examples of when Ceedling preprocessing <strong><em>is</em></strong> needed for mockable headers</h4>
|
|
@@ -5006,15 +5533,15 @@ files so CMock can parse them.</p>
|
|
|
5006
5533
|
<p><strong><em>Important Notes:</em></strong></p>
|
|
5007
5534
|
<ul>
|
|
5008
5535
|
<li>
|
|
5009
|
-
<p>Sometimes CMock
|
|
5536
|
+
<p>Sometimes CMock’s parsing features can be configured to handle scenarios
|
|
5010
5537
|
that fall within (3) above. CMock can match and remove most text strings,
|
|
5011
5538
|
match and replace certain text strings, map custom types to mockable
|
|
5012
5539
|
alternatives, and be extended with a Unity helper to handle complex and
|
|
5013
|
-
compound types. See <a href="http://github.com/ThrowTheSwitch/CMock">CMock</a
|
|
5540
|
+
compound types. See <a href="http://github.com/ThrowTheSwitch/CMock">CMock</a>’s documentation for more.</p>
|
|
5014
5541
|
</li>
|
|
5015
5542
|
<li>
|
|
5016
5543
|
<p>Test preprocessing causes any macros or symbols in a mockable header to
|
|
5017
|
-
"disappear" in the generated mock. It
|
|
5544
|
+
"disappear" in the generated mock. It’s quite common to have needed symbols
|
|
5018
5545
|
or macros in a header file that do not directly impact the function
|
|
5019
5546
|
signatures to be mocked. This can break compilation of your test suite.</p>
|
|
5020
5547
|
</li>
|
|
@@ -5022,21 +5549,21 @@ files so CMock can parse them.</p>
|
|
|
5022
5549
|
<p>Possible solutions to this problem include:</p>
|
|
5023
5550
|
<div class="highlight"><pre><span></span><code>1. Move symbols and macros in your header file that do not impact function
|
|
5024
5551
|
signatures to another source header file that will not be filtered
|
|
5025
|
-
by Ceedling
|
|
5552
|
+
by Ceedling’s header file preprocessing.
|
|
5026
5553
|
1. If (1) is not possible, you may duplicate the needed symbols and macros
|
|
5027
5554
|
in a header file that is only available in your test build search paths
|
|
5028
5555
|
and include it in your test file.
|
|
5029
5556
|
</code></pre></div>
|
|
5030
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5031
|
-
<a id="__codelineno-
|
|
5557
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="c1">// Header file scanning will see this function signature but mistakenly mock the name of the macro</span>
|
|
5558
|
+
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="kt">void</span><span class="w"> </span><span class="nf">FUNCTION_SIGNATURE_MAGIC</span><span class="p">(...);</span>
|
|
5032
5559
|
</code></pre></div>
|
|
5033
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5034
|
-
<a id="__codelineno-
|
|
5035
|
-
<a id="__codelineno-
|
|
5036
|
-
<a id="__codelineno-
|
|
5560
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="c1">// Header file scanning will always see this function signature</span>
|
|
5561
|
+
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="cp">#ifdef BUILD_VARIANT_A</span>
|
|
5562
|
+
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">someFunction</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
|
|
5563
|
+
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="cp">#endif</span>
|
|
5037
5564
|
</code></pre></div>
|
|
5038
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5039
|
-
<a id="__codelineno-
|
|
5565
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="c1">// Header file scanning will either fail for this function signature or extract erroneous type names</span>
|
|
5566
|
+
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="n">INLINE_MAGIC</span><span class="w"> </span><span class="n">RETURN_TYPE_MAGIC</span><span class="w"> </span><span class="n">someFunction</span><span class="p">(</span><span class="n">PARAMETER_MAGIC</span><span class="p">);</span>
|
|
5040
5567
|
</code></pre></div>
|
|
5041
5568
|
<h2 id="duration-reporting">Duration reporting</h2>
|
|
5042
5569
|
<h3 id="logged-run-times">Logged run times</h3>
|
|
@@ -5044,11 +5571,11 @@ files so CMock can parse them.</p>
|
|
|
5044
5571
|
<p>It first logs the set up time necessary to process your project file, parse code
|
|
5045
5572
|
files, build an internal representation of your project, etc. This duration does
|
|
5046
5573
|
not capture the time necessary to load the Ruby runtime itself.</p>
|
|
5047
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5574
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>Ceedling set up completed in 223 milliseconds
|
|
5048
5575
|
</code></pre></div>
|
|
5049
5576
|
<p>Secondly, each Ceedling run also logs the time necessary to run all the tasks
|
|
5050
5577
|
you specify at the command line.</p>
|
|
5051
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5578
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>Ceedling operations completed in 1.03 seconds
|
|
5052
5579
|
</code></pre></div>
|
|
5053
5580
|
<h3 id="test-suite-executable-durations">Test suite & executable durations</h3>
|
|
5054
5581
|
<p>A test suite comprises one or more Unity test executables (see
|
|
@@ -5061,8 +5588,8 @@ effort is usually required to map Ceedling duration values to a relevant test
|
|
|
5061
5588
|
suite abstraction within a given test report format.</p>
|
|
5062
5589
|
<p>Because Ceedling can execute builds with multiple threads, care must be taken
|
|
5063
5590
|
to interpret test suite duration values — particularly in relation to
|
|
5064
|
-
Ceedling
|
|
5065
|
-
<p>In a multi-threaded build it
|
|
5591
|
+
Ceedling’s logged run times.</p>
|
|
5592
|
+
<p>In a multi-threaded build it’s quite common for the logged Ceedling project run
|
|
5066
5593
|
time to be less than the total suite time in a test report. In multi-threaded
|
|
5067
5594
|
builds on multi-core machines, test executables are run on different processors
|
|
5068
5595
|
simultaneously. As such, the total on-processor time in a test report can
|
|
@@ -5076,13 +5603,13 @@ a in a comparable single-threaded build.</p>
|
|
|
5076
5603
|
supports the time mechanism Unity relies on, Ceedling will automatically
|
|
5077
5604
|
collect test case time values — generally made use of by test report plugins.</p>
|
|
5078
5605
|
<p>To enable test case duration measurements, they must be enabled as a Unity
|
|
5079
|
-
compilation option. Add <code>UNITY_INCLUDE_EXEC_TIME</code> to Unity
|
|
5606
|
+
compilation option. Add <code>UNITY_INCLUDE_EXEC_TIME</code> to Unity’s compilation
|
|
5080
5607
|
symbols (<code>:unity</code> ↳ <code>:defines</code>) in your Ceedling project file (see example
|
|
5081
5608
|
below). Unity test case durations as reported by Ceedling default to 0 if the
|
|
5082
5609
|
compilation option is not set.</p>
|
|
5083
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5084
|
-
<a id="__codelineno-
|
|
5085
|
-
<a id="__codelineno-
|
|
5610
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="nt">:unity</span><span class="p">:</span>
|
|
5611
|
+
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span><span class="nt">:defines</span><span class="p">:</span>
|
|
5612
|
+
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">UNITY_INCLUDE_EXEC_TIME</span>
|
|
5086
5613
|
</code></pre></div>
|
|
5087
5614
|
<p><em>NOTE:</em> Most test cases are quite short, and most computers are quite fast. As
|
|
5088
5615
|
such, Unity test case execution time is often reported as 0 milliseconds as
|
|
@@ -5090,46 +5617,30 @@ compilation option is not set.</p>
|
|
|
5090
5617
|
range. Unity would require special rigging that is inconsistently available
|
|
5091
5618
|
across platforms to measure test case durations at a finer resolution.</p>
|
|
5092
5619
|
<h2 id="dependency-tracking">Dependency tracking</h2>
|
|
5093
|
-
<p>
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
test
|
|
5103
|
-
Ceedling undergoes a major overhaul.</p>
|
|
5104
|
-
<p>Please see the <a href="https://github.com/ThrowTheSwitch/Ceedling/blob/master/docs/ReleaseNotes.md">Release Notes</a>.</p>
|
|
5105
|
-
<h3 id="not-so-smart-rebuilds">(Not so) smart rebuilds</h3>
|
|
5106
|
-
<ul>
|
|
5107
|
-
<li>
|
|
5108
|
-
<p>New features that are a part of the Ceedling overhaul can
|
|
5109
|
-
significantly speed up test suite execution and release builds
|
|
5110
|
-
despite the present behavior of brute force running all build
|
|
5111
|
-
steps. See the discussion of enabling multi-threaded builds in
|
|
5112
|
-
later sections.</p>
|
|
5113
|
-
</li>
|
|
5114
|
-
<li>
|
|
5115
|
-
<p>When smart rebuilds return, they will further speed up builds as
|
|
5116
|
-
will other planned optimizations.</p>
|
|
5117
|
-
</li>
|
|
5118
|
-
</ul>
|
|
5620
|
+
<p>Ceedling only regenerates, compiles, links, or runs an element of the build
|
|
5621
|
+
pipeline if a change in the dependency tree requires it. This includes “deep
|
|
5622
|
+
dependencies” wherein a change in a header file several nested layers deep in
|
|
5623
|
+
<code>#include</code> statements correctly triggers a rebuild of every test executable
|
|
5624
|
+
that depends on it, directly or indirectly.</p>
|
|
5625
|
+
<p>This is called a delta build. Delta builds are automatic, need no
|
|
5626
|
+
configuration, and complement Ceedling’s parallel build steps for further
|
|
5627
|
+
build time speedups. See <a href="../getting-started/builds.html">Delta Builds</a> for the
|
|
5628
|
+
full picture, including how test result caching works and the
|
|
5629
|
+
<code>--force-test-rerun</code> flag.</p>
|
|
5119
5630
|
<h2 id="build-output">Build output</h2>
|
|
5120
5631
|
<p>Ceedling requires a top-level build directory for all the stuff
|
|
5121
5632
|
that it, the accompanying test tools, and your toolchain generate.
|
|
5122
|
-
That build directory
|
|
5633
|
+
That build directory’s location is configured in the top-level
|
|
5123
5634
|
<code>:project</code> section of your configuration file (discussed in the
|
|
5124
5635
|
<a href="../configuration/index.html">configuration reference</a>). There
|
|
5125
5636
|
can be a ton of generated files. By and large, you can live a full
|
|
5126
5637
|
and meaningful life knowing absolutely nothing at all about
|
|
5127
5638
|
the files and directories generated below the root build directory.</p>
|
|
5128
|
-
<p>As noted already, it
|
|
5639
|
+
<p>As noted already, it’s good practice to add your top-level build
|
|
5129
5640
|
directory to source control but nothing generated beneath it.
|
|
5130
5641
|
you'll spare yourself headache if you let Ceedling delete and
|
|
5131
5642
|
regenerate files and directories in a non-versioned corner
|
|
5132
|
-
of your project
|
|
5643
|
+
of your project’s filesystem beneath the top-level build directory.</p>
|
|
5133
5644
|
<p>The <code>artifacts/</code> directory is the one and only directory you may
|
|
5134
5645
|
want to know about beneath the top-level build directory. The
|
|
5135
5646
|
subdirectories beneath <code>artifacts</code> will hold your binary release
|
|
@@ -5167,18 +5678,18 @@ no problem-o. You may be of the mind that running a test suite to
|
|
|
5167
5678
|
completion should yield a successful exit code (even if tests failed).
|
|
5168
5679
|
Add the following to your project file to force Ceedling to finish a
|
|
5169
5680
|
build with an exit code of 0 even upon test case failures.</p>
|
|
5170
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5171
|
-
<a id="__codelineno-
|
|
5172
|
-
<a id="__codelineno-
|
|
5681
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="c1"># Ceedling terminates with happy `exit(0)` even if test cases fail</span>
|
|
5682
|
+
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="nt">:test_build</span><span class="p">:</span>
|
|
5683
|
+
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span><span class="nt">:graceful_fail</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
|
5173
5684
|
</code></pre></div>
|
|
5174
5685
|
<p>If you use the option for graceful failures in CI, you'll want to
|
|
5175
|
-
rig up some kind of logging monitor that scans Ceedling
|
|
5686
|
+
rig up some kind of logging monitor that scans Ceedling’s test
|
|
5176
5687
|
summary report sent to <code>$stdout</code> and/or a log file. Otherwise, you
|
|
5177
5688
|
could have a successful build but failing tests.</p>
|
|
5178
5689
|
<h3 id="test-executable-exit-codes">Test executable exit codes</h3>
|
|
5179
5690
|
<p>Ceedling works by collecting multiple Unity test executables together
|
|
5180
5691
|
into a test suite (more here: <a href="test-suite-anatomy.html">Anatomy of a Test Suite</a>).</p>
|
|
5181
|
-
<p>A Unity test executable
|
|
5692
|
+
<p>A Unity test executable’s exit code is the number of failed tests. An
|
|
5182
5693
|
exit code of <code>0</code> means all tests passed while anything larger than zero
|
|
5183
5694
|
is the number of test failures.</p>
|
|
5184
5695
|
<p>Because of platform limitations on how big an exit code number can be
|
|
@@ -5253,10 +5764,10 @@ much simpler exit code convention than Unity: <code>0</code> = 🙂 while <code>
|
|
|
5253
5764
|
|
|
5254
5765
|
|
|
5255
5766
|
|
|
5256
|
-
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.
|
|
5767
|
+
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.a7633da7.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script>
|
|
5257
5768
|
|
|
5258
5769
|
|
|
5259
|
-
<script src="../assets/javascripts/bundle.
|
|
5770
|
+
<script src="../assets/javascripts/bundle.c21346df.min.js"></script>
|
|
5260
5771
|
|
|
5261
5772
|
|
|
5262
5773
|
</body>
|