ceedling 1.2.1 → 1.2.2
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/GIT_COMMIT_SHA +1 -1
- data/README.md +11 -9
- data/Rakefile +2 -1
- data/assets/features/ceedling +1 -1
- data/assets/fixtures/test_source_file_duplicate_basenames/test_calc_typo.c +14 -0
- data/assets/fixtures/tests_with_duplicate_test_names/test_foo.c +21 -0
- data/bin/actionator.rb +6 -12
- data/bin/app_cfg.rb +14 -1
- data/bin/ceedling +13 -3
- data/bin/cli.rb +25 -6
- data/bin/cli_handler.rb +113 -73
- data/bin/cli_helper.rb +51 -78
- data/bin/installation_selector.rb +81 -0
- data/bin/launchinator.rb +69 -0
- data/bin/mixin_resolvinator.rb +26 -36
- data/bin/objects.yml +13 -0
- data/bin/path_validator.rb +25 -29
- data/bin/versionator.rb +47 -48
- data/ceedling.gemspec +19 -15
- data/docs/BreakingChanges.md +70 -1
- data/docs/Changelog.md +74 -3
- data/docs/KnownIssues.md +90 -4
- data/docs/ReleaseNotes.md +13 -0
- data/lib/ceedling/build_log_writer.rb +33 -0
- data/lib/ceedling/config/build_root_policy.rb +70 -0
- data/lib/ceedling/config/configurator.rb +14 -16
- data/lib/ceedling/config/configurator_builder.rb +58 -28
- data/lib/ceedling/config/configurator_paths_validator.rb +179 -0
- data/lib/ceedling/config/configurator_plugins.rb +1 -1
- data/lib/ceedling/config/configurator_setup.rb +15 -28
- data/lib/ceedling/config/configurator_validator.rb +1 -110
- data/lib/ceedling/defaults.rb +4 -4
- data/lib/ceedling/dependencies/README.md +18 -16
- data/lib/ceedling/dependencies/dependency_cache_store.rb +20 -3
- data/lib/ceedling/dependencies/dependency_hasher.rb +35 -1
- data/lib/ceedling/filename_extension.rb +7 -1
- data/lib/ceedling/filesystem/FILE_TREE.md +253 -0
- data/lib/ceedling/filesystem/PATH_HANDLING.md +304 -0
- data/lib/ceedling/filesystem/README.md +41 -0
- data/lib/ceedling/filesystem/build_subpath.rb +102 -0
- data/lib/ceedling/filesystem/destination_collision.rb +25 -0
- data/lib/ceedling/{file_finder.rb → filesystem/file_finder.rb} +159 -104
- data/lib/ceedling/{file_finder_helper.rb → filesystem/file_finder_helper.rb} +36 -31
- data/lib/ceedling/filesystem/file_path_collection_utils.rb +183 -0
- data/lib/ceedling/{file_path_utils.rb → filesystem/file_path_utils.rb} +108 -97
- data/lib/ceedling/{file_system_wrapper.rb → filesystem/file_system_wrapper.rb} +6 -5
- data/lib/ceedling/filesystem/file_tree.rb +241 -0
- data/lib/ceedling/{file_wrapper.rb → filesystem/file_wrapper.rb} +45 -38
- data/lib/ceedling/filesystem/path_exclusions.rb +30 -0
- data/lib/ceedling/{path_matcher.rb → filesystem/path_matcher.rb} +27 -23
- data/lib/ceedling/{path_mirror.rb → filesystem/path_mirror.rb} +19 -18
- data/lib/ceedling/filesystem/path_spellings.rb +55 -0
- data/lib/ceedling/filesystem/project_paths.rb +184 -0
- data/lib/ceedling/filesystem/working_dir.rb +40 -0
- data/lib/ceedling/generators/generator.rb +5 -6
- data/lib/ceedling/generators/generator_partials.rb +1 -1
- data/lib/ceedling/generators/generator_test_results_backtrace.rb +7 -7
- data/lib/ceedling/handoff.rb +121 -0
- data/lib/ceedling/includes/include_factory.rb +3 -3
- data/lib/ceedling/includes/include_pathinator.rb +67 -10
- data/lib/ceedling/includes/includes.rb +1 -1
- data/lib/ceedling/installation.rb +92 -0
- data/lib/ceedling/library_resolver.rb +99 -0
- data/lib/ceedling/objects.yml +23 -2
- data/lib/ceedling/partials/partializer.rb +4 -4
- data/lib/ceedling/partials/partializer_config.rb +3 -1
- data/lib/ceedling/plugins/report_log_writer_plugin.rb +3 -5
- data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +1 -1
- data/lib/ceedling/preprocess/preprocessinator_includes_handler.rb +1 -1
- data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +1 -1
- data/lib/ceedling/rake_app/rakefile_component_resolver.rb +10 -17
- data/lib/ceedling/rakefile.rb +15 -1
- data/lib/ceedling/rakefiles/base/tasks_base.rake +1 -1
- data/lib/ceedling/rakefiles/release/rules_release.rake +4 -7
- data/lib/ceedling/release_invoker/release_build_executor.rb +33 -44
- data/lib/ceedling/release_invoker/release_build_planner.rb +14 -6
- data/lib/ceedling/reportinator.rb +3 -4
- data/lib/ceedling/setupinator.rb +94 -90
- data/lib/ceedling/test_context_extractor.rb +5 -1
- data/lib/ceedling/test_invoker/PIPELINE.md +9 -7
- data/lib/ceedling/test_invoker/mock_locator.rb +60 -2
- data/lib/ceedling/test_invoker/partials_manager.rb +12 -0
- data/lib/ceedling/test_invoker/standin_headerinator.rb +22 -13
- data/lib/ceedling/test_invoker/test_build_executor.rb +24 -40
- data/lib/ceedling/test_invoker/test_build_planner.rb +37 -18
- data/lib/ceedling/test_invoker/test_build_setup.rb +17 -12
- data/lib/ceedling/test_invoker/test_build_validations.rb +16 -31
- data/lib/ceedling/test_invoker/test_file_preprocessinator.rb +1 -1
- data/lib/ceedling/test_invoker/test_invoker.rb +6 -1
- data/lib/ceedling/test_invoker/test_pipeline_helpers.rb +1 -1
- data/lib/ceedling/test_invoker/test_source_file_directive_resolver.rb +40 -20
- data/lib/ceedling/tool_executor.rb +9 -3
- data/lib/ceedling/yaml_wrapper.rb +3 -2
- data/lib/version.rb +1 -1
- data/plugins/bullseye/config/defaults_bullseye.rb +1 -1
- data/plugins/bullseye/lib/bullseye.rb +9 -7
- data/plugins/cppcheck/config/defaults_cppcheck.rb +1 -1
- data/plugins/dependencies/config/defaults.yml +6 -6
- data/plugins/dependencies/dependencies.rake +4 -1
- data/plugins/dependencies/lib/dependencies.rb +18 -8
- data/plugins/dependencies/lib/dependency_spec.rb +17 -5
- data/plugins/fff/lib/fff.rb +45 -39
- data/plugins/fff/spec/fff_cmock_wrapper_spec.rb +128 -0
- data/plugins/gcov/config/defaults_gcov.rb +1 -1
- data/plugins/gcov/lib/console_reportinator.rb +4 -18
- data/plugins/gcov/lib/gcov.rb +9 -2
- data/plugins/gcov/lib/gcovr_reportinator.rb +8 -40
- data/plugins/gcov/lib/gcovr_thresholds.rb +74 -0
- data/plugins/gcov/lib/reportgenerator_reportinator.rb +1 -1
- data/plugins/module_generator/lib/module_generator.rb +3 -3
- data/plugins/report_tests_teamcity_stdout/lib/report_tests_teamcity_stdout.rb +53 -80
- data/plugins/sanitize/lib/sanitize_records.rb +3 -6
- data/plugins/valgrind/lib/valgrind.rb +14 -7
- data/site-local/configuration/reference/cmock.html +2 -1
- data/site-local/configuration/reference/files.html +9 -3
- data/site-local/configuration/reference/libraries.html +21 -3
- data/site-local/configuration/reference/paths.html +29 -6
- data/site-local/configuration/reference/project.html +17 -7
- data/site-local/configuration/reference/release-build.html +2 -0
- data/site-local/configuration/reference/tools.html +9 -0
- data/site-local/configuration/which-ceedling.html +377 -17
- data/site-local/development/releases.html +5 -1
- data/site-local/development/workflow.html +48 -43
- data/site-local/getting-started/builds.html +2 -0
- data/site-local/getting-started/command-line.html +56 -4
- data/site-local/plugins/dependencies.html +6 -3
- data/site-local/plugins/fff.html +42 -11
- data/site-local/plugins/gcov/gcovr.html +15 -12
- data/site-local/plugins/gcov/setup.html +2 -1
- data/site-local/plugins/report-tests-raw-output-log.html +3 -1
- data/site-local/plugins/report-tests-teamcity-stdout.html +6 -3
- data/site-local/plugins/sanitize.html +7 -6
- data/site-local/plugins/valgrind.html +8 -7
- data/site-local/project/upgrade.html +3 -0
- data/site-local/reference/command-line.html +9 -2
- data/site-local/sitemap.xml.gz +0 -0
- data/site-local/snapshot/plugins/bullseye/config/defaults_bullseye.rb +1 -1
- data/site-local/snapshot/plugins/gcov/config/defaults_gcov.rb +1 -1
- data/site-local/testing-guide/conventions.html +53 -0
- data/spec/integration/actionator_file_operations_spec.rb +91 -1
- data/spec/integration/compile_commands_json_db_spec.rb +1 -1
- data/spec/integration/configurator_validation_spec.rb +1 -1
- data/spec/integration/dependencies/dependency_tracker_cache_hardening_spec.rb +26 -0
- data/spec/integration/dependencies/dependency_tracker_core_spec.rb +22 -0
- data/spec/integration/launcher_handoff_spec.rb +297 -0
- data/spec/integration/mixin_loading_spec.rb +1 -1
- data/spec/integration/module_generator_spec.rb +3 -3
- data/spec/integration/nested_test_artifacts_spec.rb +99 -0
- data/spec/integration/partials_module_resolution_spec.rb +7 -4
- data/spec/integration/path_intake_scenarios_spec.rb +101 -0
- data/spec/integration/path_scenarios_spec.rb +322 -0
- data/spec/integration/quote_include_isolator_spec.rb +1 -1
- data/spec/integration/report_build_warnings_log_spec.rb +1 -1
- data/spec/integration/report_tests_log_factory_spec.rb +1 -1
- data/spec/integration/test_executable_manifest_spec.rb +1 -1
- data/spec/integration/test_includes_extractinator_spec.rb +2 -1
- data/spec/integration/test_naming_spec.rb +198 -0
- data/spec/integration/test_source_file_checks_spec.rb +166 -0
- data/spec/integration/tool_validator_spec.rb +1 -1
- data/spec/integration/upgrade_docs_spec.rb +84 -0
- data/spec/integration/vendor_copy_transient_io_retry_spec.rb +74 -5
- data/spec/support/file_tree_helper.rb +88 -0
- data/spec/support/integration/configurator_integration_helper.rb +6 -6
- data/spec/support/integration/dependency_tracker_integration_helper.rb +1 -1
- data/spec/support/integration/partials_generation_integration_helper.rb +2 -2
- data/spec/support/integration/path_scenario_harness.rb +173 -0
- data/spec/support/integration/spec_integration_helper.rb +1 -1
- data/spec/support/integration/test_includes_harness.rb +13 -2
- data/spec/support/spec_helper.rb +2 -0
- data/spec/support/system/spec_system_helper.rb +7 -6
- data/spec/support/system/system_context.rb +21 -3
- data/spec/support/working_dir_tracking.rb +49 -0
- data/spec/system/build_output_mirroring_spec.rb +2 -2
- data/spec/system/conditional_mock_includes_spec.rb +1 -1
- data/spec/system/delta_builds_spec.rb +137 -11
- data/spec/system/gcov_deployment_spec.rb +1 -0
- data/spec/system/header_include_path_validation_spec.rb +4 -4
- data/spec/system/launcher_handoff_spec.rb +82 -0
- data/spec/system/mock_include_folders_spec.rb +91 -0
- data/spec/system/parent_directory_reference_spec.rb +5 -3
- data/spec/system/path_handling_probes_spec.rb +192 -0
- data/spec/system/preprocessing_parameterized_tests_spec.rb +1 -1
- data/spec/system/rake_release_task_path_disambiguation_spec.rb +6 -6
- data/spec/system/rake_test_task_path_disambiguation_spec.rb +85 -0
- data/spec/system/special_path_characters_spec.rb +86 -0
- data/spec/system/support/common_test_cases.rb +23 -21
- data/spec/system/support/gcov_common_test_cases.rb +37 -9
- data/spec/system/support/sanitize_common_test_cases.rb +2 -2
- data/spec/system/support/valgrind_common_test_cases.rb +12 -12
- data/spec/system/test_pipeline_stop_points_spec.rb +4 -4
- data/spec/system/test_runner_system_include_spec.rb +1 -1
- data/spec/system/test_source_file_directive_spec.rb +34 -5
- data/spec/units/bin/actionator_spec.rb +14 -17
- data/spec/units/bin/app_cfg_spec.rb +37 -0
- data/spec/units/bin/cli_handler_spec.rb +282 -6
- data/spec/units/bin/cli_helper_spec.rb +116 -45
- data/spec/units/bin/installation_selector_spec.rb +114 -0
- data/spec/units/bin/launchinator_spec.rb +171 -0
- data/spec/units/bin/path_validator_spec.rb +10 -0
- data/spec/units/bin/versionator_spec.rb +38 -6
- data/spec/units/build_log_writer_spec.rb +57 -0
- data/spec/units/config/build_root_policy_spec.rb +61 -0
- data/spec/units/config/configurator_builder_spec.rb +37 -6
- data/spec/units/config/configurator_paths_validator_spec.rb +292 -0
- data/spec/units/config/configurator_setup_spec.rb +9 -65
- data/spec/units/config/configurator_spec.rb +27 -5
- data/spec/units/config/configurator_validator_spec.rb +1 -172
- data/spec/units/default_tools_quoting_spec.rb +83 -0
- data/spec/units/dependencies/dependency_cache_store_spec.rb +33 -2
- data/spec/units/dependencies/dependency_debug_tree_spec.rb +1 -1
- data/spec/units/dependencies/dependency_hasher_spec.rb +42 -1
- data/spec/units/dependencies/dependency_path_normalizer_spec.rb +1 -1
- data/spec/units/dependencies/dependency_tracker_spec.rb +3 -1
- data/spec/units/filename_extension_spec.rb +11 -0
- data/spec/units/filesystem/build_subpath_spec.rb +122 -0
- data/spec/units/filesystem/destination_collision_spec.rb +30 -0
- data/spec/units/{file_finder_helper_spec.rb → filesystem/file_finder_helper_spec.rb} +46 -1
- data/spec/units/{file_finder_spec.rb → filesystem/file_finder_spec.rb} +188 -22
- data/spec/units/{file_path_collection_utils_spec.rb → filesystem/file_path_collection_utils_spec.rb} +181 -1
- data/spec/units/{file_path_utils_spec.rb → filesystem/file_path_utils_spec.rb} +204 -87
- data/spec/units/filesystem/file_system_wrapper_spec.rb +33 -0
- data/spec/units/filesystem/file_tree_spec.rb +511 -0
- data/spec/units/filesystem/file_tree_windows_spec.rb +78 -0
- data/spec/units/{file_wrapper_spec.rb → filesystem/file_wrapper_spec.rb} +95 -12
- data/spec/units/{path_matcher_spec.rb → filesystem/path_matcher_spec.rb} +12 -1
- data/spec/units/{path_mirror_spec.rb → filesystem/path_mirror_spec.rb} +32 -4
- data/spec/units/filesystem/project_paths_spec.rb +147 -0
- data/spec/units/filesystem/working_dir_spec.rb +71 -0
- data/spec/units/generators/generator_spec.rb +12 -6
- data/spec/units/generators/generator_test_results_backtrace_spec.rb +50 -46
- data/spec/units/generators/generator_test_results_spec.rb +1 -1
- data/spec/units/handoff_spec.rb +205 -0
- data/spec/units/includes/include_factory_spec.rb +3 -3
- data/spec/units/includes/include_pathinator_spec.rb +46 -0
- data/spec/units/installation_spec.rb +228 -0
- data/spec/units/library_resolver_spec.rb +157 -0
- data/spec/units/mock_locator_spec.rb +76 -1
- data/spec/units/partials/partializer_config_spec.rb +7 -0
- data/spec/units/partials/partializer_spec.rb +1 -0
- data/spec/units/partials_manager_spec.rb +17 -0
- data/spec/units/plugins/bullseye_spec.rb +15 -2
- data/spec/units/plugins/console_reportinator_spec.rb +18 -20
- data/spec/units/plugins/dependencies_spec.rb +33 -7
- data/spec/units/plugins/dependency_spec_spec.rb +17 -0
- data/spec/units/plugins/gcov_spec.rb +28 -3
- data/spec/units/plugins/gcovr_reportinator_spec.rb +19 -47
- data/spec/units/plugins/gcovr_thresholds_spec.rb +95 -0
- data/spec/units/plugins/module_generator_spec.rb +5 -5
- data/spec/units/plugins/report_build_warnings_log_spec.rb +3 -3
- data/spec/units/plugins/report_log_writer_plugin_spec.rb +10 -1
- data/spec/units/plugins/report_tests_raw_output_log_spec.rb +13 -2
- data/spec/units/plugins/report_tests_teamcity_stdout_spec.rb +77 -3
- data/spec/units/plugins/reportgenerator_reportinator_spec.rb +1 -1
- data/spec/units/plugins/sanitize_records_spec.rb +3 -1
- data/spec/units/plugins/sanitize_spec.rb +1 -1
- data/spec/units/plugins/valgrind_spec.rb +23 -8
- data/spec/units/preprocess/preprocessinator_comment_stripper_spec.rb +1 -1
- data/spec/units/rake_app/rakefile_component_resolver_spec.rb +21 -0
- data/spec/units/release_build_executor_spec.rb +53 -14
- data/spec/units/release_build_planner_spec.rb +15 -3
- data/spec/units/reportinator_spec.rb +5 -5
- data/spec/units/standin_headerinator_spec.rb +31 -1
- data/spec/units/test_build_executor_spec.rb +65 -3
- data/spec/units/test_build_planner_spec.rb +104 -2
- data/spec/units/test_build_setup_spec.rb +96 -12
- data/spec/units/test_context_extractor_spec.rb +25 -0
- data/spec/units/test_file_preprocessinator_spec.rb +17 -1
- data/spec/units/test_includes_extractinator_spec.rb +5 -1
- data/spec/units/test_invoker/objects_wiring_spec.rb +6 -3
- data/spec/units/test_invoker_spec.rb +14 -1
- data/spec/units/test_source_file_directive_resolver_spec.rb +38 -7
- data/spec/units/tool_executor_spec.rb +26 -0
- data/spec/units/yaml_wrapper_spec.rb +11 -0
- metadata +109 -25
- data/lib/ceedling/file_path_collection_utils.rb +0 -164
|
@@ -5595,9 +5595,16 @@ new project (default is your working directory).</p>
|
|
|
5595
5595
|
</table>
|
|
5596
5596
|
<hr />
|
|
5597
5597
|
<h3 id="ceedling-upgrade-path"><code>ceedling upgrade PATH</code></h3>
|
|
5598
|
-
<p>Upgrade vendored installation of Ceedling for an existing project
|
|
5599
|
-
|
|
5600
|
-
|
|
5598
|
+
<p>Upgrade vendored installation of Ceedling for an existing project. <code>PATH</code>
|
|
5599
|
+
is required and should be the root of the project to upgrade.</p>
|
|
5600
|
+
<p>If the project holds documentation that <code>new --docs</code> or <code>example --docs</code>
|
|
5601
|
+
exported, <code>upgrade</code> replaces it with the documentation of the Ceedling it
|
|
5602
|
+
copies. It replaces only what the export wrote, and leaves your own files in
|
|
5603
|
+
<code>docs/</code>. If that Ceedling has no HTML documentation bundle (a <code>--local</code> copy
|
|
5604
|
+
carries none), <code>upgrade</code> keeps the project’s existing bundle.</p>
|
|
5605
|
+
<p><code>upgrade</code> copies the Ceedling you run, or the installation the
|
|
5606
|
+
<code>WHICH_CEEDLING</code> environment variable names. It never copies from a
|
|
5607
|
+
<code>vendor/ceedling/</code> it finds in your working directory.</p>
|
|
5601
5608
|
<table>
|
|
5602
5609
|
<thead>
|
|
5603
5610
|
<tr>
|
|
@@ -5620,6 +5627,10 @@ required and should be the root of the project to upgrade.</p>
|
|
|
5620
5627
|
<h3 id="ceedling-docs-dest"><code>ceedling docs [DEST]</code></h3>
|
|
5621
5628
|
<p>Exports the Ceedling documentation bundle to the filesystem. <code>DEST</code> is
|
|
5622
5629
|
an optional destination path (default is your working directory).</p>
|
|
5630
|
+
<p><code>docs</code> exports the documentation of the installation <a href="../configuration/which-ceedling.html"><em>Which Ceedling</em></a>
|
|
5631
|
+
selects. A <code>--local</code> copy carries no documentation bundle, so for a vendored
|
|
5632
|
+
copy <code>docs</code> exports the documentation of the <code>ceedling</code> command you ran, with a
|
|
5633
|
+
notice naming both installations.</p>
|
|
5623
5634
|
<p><em>No parameters.</em></p>
|
|
5624
5635
|
<hr />
|
|
5625
5636
|
<h3 id="ceedling-version"><code>ceedling version</code></h3>
|
|
@@ -5637,7 +5648,48 @@ an optional destination path (default is your working directory).</p>
|
|
|
5637
5648
|
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a> CException => #.#.#
|
|
5638
5649
|
</code></pre></div>
|
|
5639
5650
|
<p>If the short SHA information is unavailable such as in local development, the SHA is omitted. The source for this string is generated and captured in the Gem at the time of Ceedling’s automated build in CI.</p>
|
|
5640
|
-
<p><em>
|
|
5651
|
+
<p><code>version</code> reads your project file when one is available. When your project selects another Ceedling installation through <a href="../configuration/which-ceedling.html"><em>Which Ceedling</em></a>, <code>version</code> reports the <code>ceedling</code> command you ran and the selected installation separately, each with its own version:</p>
|
|
5652
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>🌱 Welcome to Ceedling!
|
|
5653
|
+
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>
|
|
5654
|
+
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a> Ceedling Launcher => #.#.#-<Short SHA>
|
|
5655
|
+
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a> ----------------------
|
|
5656
|
+
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a> <Ceedling launcher install path>
|
|
5657
|
+
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a>
|
|
5658
|
+
<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a> Ceedling App => #.#.#-<Short SHA>
|
|
5659
|
+
<a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a> ----------------------
|
|
5660
|
+
<a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a> <Ceedling application install path>
|
|
5661
|
+
<a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a>
|
|
5662
|
+
<a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a> Build Frameworks
|
|
5663
|
+
<a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a> ----------------------
|
|
5664
|
+
<a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a> CMock => #.#.#
|
|
5665
|
+
<a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a> Unity => #.#.#
|
|
5666
|
+
<a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a> CException => #.#.#
|
|
5667
|
+
</code></pre></div>
|
|
5668
|
+
<p>The build frameworks are always those of the Ceedling application.</p>
|
|
5669
|
+
<table>
|
|
5670
|
+
<thead>
|
|
5671
|
+
<tr>
|
|
5672
|
+
<th>Flag</th>
|
|
5673
|
+
<th>Alias</th>
|
|
5674
|
+
<th>Description</th>
|
|
5675
|
+
<th>Default</th>
|
|
5676
|
+
</tr>
|
|
5677
|
+
</thead>
|
|
5678
|
+
<tbody>
|
|
5679
|
+
<tr>
|
|
5680
|
+
<td><code>--project</code></td>
|
|
5681
|
+
<td><code>-p</code></td>
|
|
5682
|
+
<td>Project filepath. A project file named this way must load. Without it, a default project file that cannot be loaded is skipped.</td>
|
|
5683
|
+
<td><code>project.yml</code> or <code>ceedling.yml</code> in your working directory</td>
|
|
5684
|
+
</tr>
|
|
5685
|
+
<tr>
|
|
5686
|
+
<td><code>--mixin</code></td>
|
|
5687
|
+
<td><code>-m</code></td>
|
|
5688
|
+
<td>Merge a mixin into the project configuration. Repeatable.</td>
|
|
5689
|
+
<td></td>
|
|
5690
|
+
</tr>
|
|
5691
|
+
</tbody>
|
|
5692
|
+
</table>
|
|
5641
5693
|
<hr />
|
|
5642
5694
|
<h2 id="build-plugin-tasks">Build & plugin tasks</h2>
|
|
5643
5695
|
<p>Build task are loaded from your project configuration. Unlike
|
|
@@ -5064,8 +5064,9 @@ project’s own files.</p>
|
|
|
5064
5064
|
<p>If the dependency is part of your repository (its fetch <code>:method</code> is <code>:none</code>), <code>:source</code>
|
|
5065
5065
|
is where its code already lives. Paths may lie outside your project, such as
|
|
5066
5066
|
<code>../shared/lib</code>, and headers found there work in test and release builds alike.</p>
|
|
5067
|
-
<p>Every artifact is relative to the <code>:artifact</code> path
|
|
5068
|
-
|
|
5067
|
+
<p>Every artifact is relative to the <code>:artifact</code> path, unless it is an absolute path, which
|
|
5068
|
+
names the artifact itself. With several include directories, choose the highest level
|
|
5069
|
+
and list the rest relative to it. A path may begin with <code>~</code> to name your home directory.</p>
|
|
5069
5070
|
<h2 id="fetching-dependencies">Fetching dependencies</h2>
|
|
5070
5071
|
<p>The plugin fetches a dependency with one of several common methods, configured under its
|
|
5071
5072
|
<code>:fetch</code>:</p>
|
|
@@ -5237,7 +5238,9 @@ under <code>:tools</code>:</p>
|
|
|
5237
5238
|
<p>The compiler, assembler, and archiver are checked just before <code>:build_lib</code> uses them, so
|
|
5238
5239
|
a project without <code>:build_lib</code> needs none of them.</p>
|
|
5239
5240
|
<p><code>:build_lib</code> compiles every C file anywhere under the dependency’s <code>:source</code> path, with
|
|
5240
|
-
every directory holding a header there as a search path.
|
|
5241
|
+
every directory holding a header there as a search path. Each object, and its list file,
|
|
5242
|
+
sits in the <code>:build</code> path at its source’s path below the <code>:source</code> path, so same-named
|
|
5243
|
+
sources in different directories keep apart. It then archives the objects
|
|
5241
5244
|
into the first library under <code>:artifacts</code> ↳ <code>:static_libraries</code>, built in the <code>:build</code>
|
|
5242
5245
|
path and copied to the <code>:artifact</code> path when the two differ. A dependency’s own
|
|
5243
5246
|
<code>:defines</code> and <code>:flags</code> apply to its compilation, and <code>:libraries</code> and <code>:libpaths</code> to its
|
data/site-local/plugins/fff.html
CHANGED
|
@@ -4844,19 +4844,50 @@ Each example uses fakes for a "display" module, created from a display.h file wi
|
|
|
4844
4844
|
<h2 id="test-setup">Test setup</h2>
|
|
4845
4845
|
<p>All of the fake functions and any fff global state are all reset automatically between each test.</p>
|
|
4846
4846
|
<h2 id="cmock-configuration">CMock configuration</h2>
|
|
4847
|
-
<p>
|
|
4847
|
+
<p>Fakes still use some CMock settings, such as the mock prefix and the extra
|
|
4848
|
+
header files to include.</p>
|
|
4848
4849
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="nt">:cmock</span><span class="p">:</span>
|
|
4849
|
-
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="w">
|
|
4850
|
-
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="w">
|
|
4851
|
-
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="w">
|
|
4852
|
-
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="w">
|
|
4853
|
-
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="w">
|
|
4854
|
-
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a><span class="w">
|
|
4855
|
-
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a><span class="w">
|
|
4856
|
-
<a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a><span class="w">
|
|
4857
|
-
<a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a><span class="w">
|
|
4858
|
-
<a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a><span class="w">
|
|
4850
|
+
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="w"> </span><span class="nt">:mock_prefix</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mock_</span>
|
|
4851
|
+
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="w"> </span><span class="nt">:includes</span><span class="p">:</span>
|
|
4852
|
+
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
|
|
4853
|
+
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="w"> </span><span class="nt">:includes_h_pre_orig_header</span><span class="p">:</span>
|
|
4854
|
+
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
|
|
4855
|
+
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a><span class="w"> </span><span class="nt">:includes_h_post_orig_header</span><span class="p">:</span>
|
|
4856
|
+
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
|
|
4857
|
+
<a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a><span class="w"> </span><span class="nt">:includes_c_pre_header</span><span class="p">:</span>
|
|
4858
|
+
<a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
|
|
4859
|
+
<a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a><span class="w"> </span><span class="nt">:includes_c_post_header</span><span class="p">:</span>
|
|
4860
|
+
<a id="__codelineno-9-12" name="__codelineno-9-12" href="#__codelineno-9-12"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
|
|
4859
4861
|
</code></pre></div>
|
|
4862
|
+
<p>Each include setting puts its headers in a fake where CMock puts them in a mock.</p>
|
|
4863
|
+
<table>
|
|
4864
|
+
<thead>
|
|
4865
|
+
<tr>
|
|
4866
|
+
<th>Setting</th>
|
|
4867
|
+
<th>Where the <code>#include</code> goes</th>
|
|
4868
|
+
</tr>
|
|
4869
|
+
</thead>
|
|
4870
|
+
<tbody>
|
|
4871
|
+
<tr>
|
|
4872
|
+
<td><code>:includes</code>, <code>:includes_h_pre_orig_header</code></td>
|
|
4873
|
+
<td>The fake’s header, before the original header</td>
|
|
4874
|
+
</tr>
|
|
4875
|
+
<tr>
|
|
4876
|
+
<td><code>:includes_h_post_orig_header</code></td>
|
|
4877
|
+
<td>The fake’s header, after the original header</td>
|
|
4878
|
+
</tr>
|
|
4879
|
+
<tr>
|
|
4880
|
+
<td><code>:includes_c_pre_header</code></td>
|
|
4881
|
+
<td>The fake’s source, before the fake’s header</td>
|
|
4882
|
+
</tr>
|
|
4883
|
+
<tr>
|
|
4884
|
+
<td><code>:includes_c_post_header</code></td>
|
|
4885
|
+
<td>The fake’s source, after the fake’s header</td>
|
|
4886
|
+
</tr>
|
|
4887
|
+
</tbody>
|
|
4888
|
+
</table>
|
|
4889
|
+
<p>A <a href="../configuration/reference/cmock.html#unity_helper_path">Unity helper</a> is
|
|
4890
|
+
included in a fake’s header and source, as it is in a mock’s.</p>
|
|
4860
4891
|
<h3 id="fakes-of-same-named-headers">Fakes of same-named headers</h3>
|
|
4861
4892
|
<p>With <code>:cmock</code> ↳ <code>:mock_name_include_folder</code> enabled, Ceedling’s default, a fake
|
|
4862
4893
|
included through a folder is named by that folder, as a CMock mock is. A fake
|
|
@@ -5777,7 +5777,7 @@ settings with other CLI arguments derived from plugin configuration. You must
|
|
|
5777
5777
|
provide any settings that would have been provided by the Gcov plugin, either
|
|
5778
5778
|
in the config file itself or via <code>:custom_args:</code>.</p>
|
|
5779
5779
|
</div>
|
|
5780
|
-
<p>A Gcovr config file replaces Ceedling
|
|
5780
|
+
<p>A Gcovr config file replaces Ceedling’s own automatically generated exclusion
|
|
5781
5781
|
patterns (see <a href="#results-filtering">Results filtering</a> below) entirely — it is
|
|
5782
5782
|
the only way to override or remove one of those defaults, since the
|
|
5783
5783
|
project-configuration <code>:report_exclude</code> option can only add further
|
|
@@ -5812,7 +5812,7 @@ Ceedling itself generates as part of a build all skew that number if left in.</p
|
|
|
5812
5812
|
<code>test/</code>:</p>
|
|
5813
5813
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>.*(?:^|/)test/(?:.*/)?test_[^/]+(?:\.c)$
|
|
5814
5814
|
</code></pre></div>
|
|
5815
|
-
<p>A project
|
|
5815
|
+
<p>A project’s <code>:extension</code> ↳ <code>:source</code> can list more than one source
|
|
5816
5816
|
extension; every configured extension is joined into this same
|
|
5817
5817
|
alternation. Given <code>:extension</code> ↳ <code>:source</code> ⇒ <code>['.c', '.C']</code>:</p>
|
|
5818
5818
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>.*(?:^|/)test/(?:.*/)?test_[^/]+(?:\.c|\.C)$
|
|
@@ -5836,7 +5836,7 @@ the alternation. Given <code>:extension</code> ↳ <code>:source</code> ⇒ <cod
|
|
|
5836
5836
|
<code>:build_root</code>: generated mocks, test runners, Partials output, and the
|
|
5837
5837
|
vendored Unity/CMock/CException framework sources Ceedling copies in to
|
|
5838
5838
|
build against. Unlike the two patterns above, this one always matches a
|
|
5839
|
-
literal <code>.c</code> extension regardless of your project
|
|
5839
|
+
literal <code>.c</code> extension regardless of your project’s own <code>:extension</code> ↳
|
|
5840
5840
|
<code>:source</code> setting, since every file it catches is one Ceedling itself
|
|
5841
5841
|
writes in plain C.</p>
|
|
5842
5842
|
<p>Given <code>:build_root</code> ⇒ <code>build/</code>:</p>
|
|
@@ -5849,7 +5849,7 @@ provide via <a href="#report_exclude"><code>:report_exclude</code></a> below —
|
|
|
5849
5849
|
(and normally shouldn't) duplicate them yourself.</p>
|
|
5850
5850
|
<div class="admonition warning">
|
|
5851
5851
|
<p class="admonition-title">Not applied when using a Gcovr configuration file</p>
|
|
5852
|
-
<p>These defaults are only generated when Ceedling builds <code>gcovr</code
|
|
5852
|
+
<p>These defaults are only generated when Ceedling builds <code>gcovr</code>’s command
|
|
5853
5853
|
line directly. As covered in
|
|
5854
5854
|
<a href="#gcovr-configuration-file">Gcovr configuration file</a> above, setting
|
|
5855
5855
|
<code>:config_file</code> bypasses this entirely — none of the three patterns above
|
|
@@ -5865,7 +5865,7 @@ own three patterns ahead of anything you configure there. Neither
|
|
|
5865
5865
|
either: <code>:report_include</code> narrows which files are considered at all, but an
|
|
5866
5866
|
exclude pattern still wins over it for any file matching both; <code>:custom_args</code>
|
|
5867
5867
|
lets you pass additional raw <code>gcovr</code> flags, but a raw <code>--filter</code>/<code>--exclude</code>
|
|
5868
|
-
of your own is just as additive as <code>:report_exclude</code> — there
|
|
5868
|
+
of your own is just as additive as <code>:report_exclude</code> — there’s no <code>gcovr</code>
|
|
5869
5869
|
flag that removes or replaces an exclusion already given, only ones that add
|
|
5870
5870
|
more.</p>
|
|
5871
5871
|
<p>The only way to actually remove or replace one of these defaults — for
|
|
@@ -5912,7 +5912,7 @@ Ceedling from overriding config file values with its CLI arguments.
|
|
|
5912
5912
|
different working directory than your project root, and <code>:custom_args:</code> is
|
|
5913
5913
|
still applied too — the one way to pass Gcovr flags of your own alongside a
|
|
5914
5914
|
config file (see <code>:custom_args</code> below).</p>
|
|
5915
|
-
<p>To preserve the plugin
|
|
5915
|
+
<p>To preserve the plugin’s base filtering behavior, include exclusion patterns
|
|
5916
5916
|
matching your project layout in the config file itself — see
|
|
5917
5917
|
<a href="#gcovr-configuration-file">Gcovr configuration file</a> above.</p>
|
|
5918
5918
|
<p><strong>Default:</strong> unset — Ceedling does not look for or autodetect a config file
|
|
@@ -5937,7 +5937,10 @@ percentage. Can be ORed with the exit status of other <code>:fail_under_*</code>
|
|
|
5937
5937
|
(<code>gcovr --fail-under-decision</code>)</p>
|
|
5938
5938
|
<p><code>gcovr</code> treats <code>--fail-under-decision</code> as a no-op without <code>--decisions</code> also
|
|
5939
5939
|
present — setting this option implies <code>:decisions</code> (below) automatically, so
|
|
5940
|
-
it
|
|
5940
|
+
it’s never silently non-functional.</p>
|
|
5941
|
+
<p>From <code>gcovr</code> 8.7, <code>--fail-under-decision</code> also checks condition coverage, which
|
|
5942
|
+
<code>:mcdc</code> produces. A run below the minimum for either reports each failure on its
|
|
5943
|
+
own line of the build failure summary.</p>
|
|
5941
5944
|
<p><strong>Values:</strong> <code>1</code>–<code>100</code></p>
|
|
5942
5945
|
<p><strong>Requires:</strong> <code>gcovr</code> 7.0 or higher</p>
|
|
5943
5946
|
<hr />
|
|
@@ -5987,7 +5990,7 @@ is in addition to any other configured reports. (<code>gcovr --print-summary</co
|
|
|
5987
5990
|
<p>Keep only source files that match this filter. Filters are regular
|
|
5988
5991
|
expressions. (<code>gcovr --filter</code>)</p>
|
|
5989
5992
|
<p>This narrows which files are considered at all, but does not override
|
|
5990
|
-
<a href="#results-filtering">Results filtering</a
|
|
5993
|
+
<a href="#results-filtering">Results filtering</a>’s automatic exclusion defaults — a
|
|
5991
5994
|
file excluded by one of those three default patterns stays excluded even if
|
|
5992
5995
|
it also matches <code>:report_include</code>. See
|
|
5993
5996
|
<a href="#overriding-the-defaults">Overriding the defaults</a> if you need to remove one
|
|
@@ -6021,7 +6024,7 @@ files. Filters are regular expressions. (<code>gcovr --exclude-directories</code
|
|
|
6021
6024
|
<hr />
|
|
6022
6025
|
<h3 id="gcov_executable"><code>:gcov_executable</code></h3>
|
|
6023
6026
|
<p>Use a particular <code>gcov</code> executable. This may be appropriate and necessary in
|
|
6024
|
-
special circumstances — review Ceedling
|
|
6027
|
+
special circumstances — review Ceedling’s options for modifying tools first.
|
|
6025
6028
|
(<code>gcovr --gcov-executable</code>)</p>
|
|
6026
6029
|
<hr />
|
|
6027
6030
|
<h3 id="exclude_unreachable_branches"><code>:exclude_unreachable_branches</code></h3>
|
|
@@ -6039,7 +6042,7 @@ the same source function, this is a real risk. This option controls how
|
|
|
6039
6042
|
<code>gcovr</code> merges those repeated entries. See the
|
|
6040
6043
|
<a href="https://gcovr.com/en/stable/guide/merging.html">gcovr merging docs</a> for all
|
|
6041
6044
|
valid values. Ignored on <code>gcovr</code> versions below 6.0.</p>
|
|
6042
|
-
<p><strong>Default:</strong> <code>merge-use-line-max</code> (<code>gcovr</code
|
|
6045
|
+
<p><strong>Default:</strong> <code>merge-use-line-max</code> (<code>gcovr</code>’s own default, <code>strict</code>, raises an
|
|
6043
6046
|
exception for many Ceedling projects)</p>
|
|
6044
6047
|
<hr />
|
|
6045
6048
|
<h3 id="use_gcov_files"><code>:use_gcov_files</code></h3>
|
|
@@ -6067,12 +6070,12 @@ error. (<code>gcovr --gcov-ignore-parse-errors</code>)</p>
|
|
|
6067
6070
|
<h3 id="custom_args"><code>:custom_args</code></h3>
|
|
6068
6071
|
<p>Optional list of one or more raw command line arguments to pass to <code>gcovr</code>.
|
|
6069
6072
|
Useful as an escape hatch for any <code>gcovr</code> flag Ceedling has no named option
|
|
6070
|
-
for (e.g. limiting <code>gcovr</code
|
|
6073
|
+
for (e.g. limiting <code>gcovr</code>’s search root).</p>
|
|
6071
6074
|
<p>Unlike every other option above, these arguments are still applied even when
|
|
6072
6075
|
<code>:config_file</code> is set — the one way to pass <code>gcovr</code> flags of your own
|
|
6073
6076
|
alongside a config file.</p>
|
|
6074
6077
|
<p>This does not, on its own, let you override
|
|
6075
|
-
<a href="#results-filtering">Results filtering</a
|
|
6078
|
+
<a href="#results-filtering">Results filtering</a>’s automatic exclusion defaults when
|
|
6076
6079
|
<code>:config_file</code> is unset — a raw <code>--filter</code>/<code>--exclude</code> passed here is just as
|
|
6077
6080
|
additive as <a href="#report_exclude"><code>:report_exclude</code></a>; see
|
|
6078
6081
|
<a href="#overriding-the-defaults">Overriding the defaults</a> for the one option that
|
|
@@ -4694,7 +4694,8 @@ are not exercised by any test. It takes one of three values:</p>
|
|
|
4694
4694
|
appear in the final report with 0% coverage (since no test exercises
|
|
4695
4695
|
them). This causes all source files to appear in any generated reporting.
|
|
4696
4696
|
If a source file fails to compile, Ceedling logs guidance at the console,
|
|
4697
|
-
and the build fails
|
|
4697
|
+
and the build fails. Each untested source’s object sits below <code>build/gcov/out/</code>
|
|
4698
|
+
at the source’s path from your project’s root.</li>
|
|
4698
4699
|
</ul>
|
|
4699
4700
|
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="nt">:plugins</span><span class="p">:</span>
|
|
4700
4701
|
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="w"> </span><span class="nt">:enabled</span><span class="p">:</span>
|
|
@@ -4458,7 +4458,9 @@ expected Unity test results as described above. Log files are named for the
|
|
|
4458
4458
|
respective test executables.</p>
|
|
4459
4459
|
<p>Builds are differentiated by build context — <code>test</code>, <code>release</code>, or
|
|
4460
4460
|
plugin-modified build (e.g. <code>gcov</code>). Log files are written to <code><build
|
|
4461
|
-
root>/artifacts/<context>/<test
|
|
4461
|
+
root>/artifacts/<context>/<test name>.raw.log</code>. A <a href="../testing-guide/conventions.html#test-names-build-output">test’s name</a> is its path
|
|
4462
|
+
from your project’s root, so <code>test/unit/test_calc.c</code> logs to
|
|
4463
|
+
<code>build/artifacts/test/test/unit/test_calc.raw.log</code>.</p>
|
|
4462
4464
|
<h2 id="setup">Setup</h2>
|
|
4463
4465
|
<p>Enable the plugin in your Ceedling project:</p>
|
|
4464
4466
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nt">:plugins</span><span class="p">:</span>
|
|
@@ -4444,7 +4444,10 @@ run on a TeamCity build server but not in your local development environment.</p
|
|
|
4444
4444
|
underlying Java language in which TeamCity is written,
|
|
4445
4445
|
<code>package_or_namespace.ClassName.TestName</code>.</p>
|
|
4446
4446
|
<p>This plugin maps Ceedling conventions to TeamCity test service messages as
|
|
4447
|
-
<code>context.TestFilepath.TestCaseName</code
|
|
4447
|
+
<code>context.TestFilepath.TestCaseName</code>. Each test suite is named by its test file’s
|
|
4448
|
+
path from your project’s root, without its file extension (e.g.
|
|
4449
|
+
<code>test/TestUsartModel</code>), so same-named test files in different directories are
|
|
4450
|
+
distinct suites.</p>
|
|
4448
4451
|
<ul>
|
|
4449
4452
|
<li><code>context</code> Your build's context defaults to <code>test</code>. Certain other test build
|
|
4450
4453
|
plugins (e.g. GCov) provide a different context (<code>gcov</code>) for test builds,
|
|
@@ -4455,7 +4458,7 @@ underlying Java language in which TeamCity is written,
|
|
|
4455
4458
|
</ul>
|
|
4456
4459
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="w"> </span>><span class="w"> </span>ceedling<span class="w"> </span>test:UsartModel
|
|
4457
4460
|
</code></pre></div>
|
|
4458
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>##teamcity[testSuiteStarted name='TestUsartModel' flowId='15']
|
|
4461
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>##teamcity[testSuiteStarted name='test/TestUsartModel' flowId='15']
|
|
4459
4462
|
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>##teamcity[testStarted name='test.test/TestUsartModel.testGetBaudRateRegisterSettingShouldReturnAppropriateBaudRateRegisterSetting' flowId='15']
|
|
4460
4463
|
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>##teamcity[testFinished name='test.test/TestUsartModel.testGetBaudRateRegisterSettingShouldReturnAppropriateBaudRateRegisterSetting' duration='81' flowId='15']
|
|
4461
4464
|
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>##teamcity[testStarted name='test.test/TestUsartModel.testShouldReturnErrorMessageUponInvalidTemperatureValue' flowId='15']
|
|
@@ -4464,7 +4467,7 @@ underlying Java language in which TeamCity is written,
|
|
|
4464
4467
|
<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a>##teamcity[testFailed name='test.test/TestUsartModel.testGetFormattedTemperatureFormatsTemperatureFromCalculatorAppropriately' message='Function TemperatureFilter_GetTemperatureInCelcius() called more times than expected.' details='File: test/TestUsartModel.c Line: 25' flowId='15']
|
|
4465
4468
|
<a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>##teamcity[testFinished name='test.test/TestUsartModel.testGetFormattedTemperatureFormatsTemperatureFromCalculatorAppropriately' duration='81' flowId='15']
|
|
4466
4469
|
<a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a>##teamcity[testIgnored name='test.test/TestUsartModel.testShouldReturnWakeupMessage' flowId='15']
|
|
4467
|
-
<a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a>##teamcity[testSuiteFinished name='TestUsartModel' flowId='15']
|
|
4470
|
+
<a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a>##teamcity[testSuiteFinished name='test/TestUsartModel' flowId='15']
|
|
4468
4471
|
</code></pre></div>
|
|
4469
4472
|
<p><br/><br/></p>
|
|
4470
4473
|
|
|
@@ -5103,10 +5103,10 @@ as much of the file’s path as needed to tell same-named test files apart:</p>
|
|
|
5103
5103
|
</ul>
|
|
5104
5104
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>☠️ ERROR: Test executable `test_buffer.out` was stopped by a sanitizer finding.
|
|
5105
5105
|
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a>> AddressSanitizer heap-buffer-overflow at test/test_buffer.c:21
|
|
5106
|
-
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>> Boom log: build/artifacts/sanitize/sanitize/test_buffer.log
|
|
5106
|
+
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>> Boom log: build/artifacts/sanitize/sanitize/test/test_buffer.log
|
|
5107
5107
|
</code></pre></div>
|
|
5108
5108
|
<p>The test’s failure message carries the same on one line:</p>
|
|
5109
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>AddressSanitizer heap-buffer-overflow at test/test_buffer.c:21 (Boom log: build/artifacts/sanitize/sanitize/test_buffer.log)
|
|
5109
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>AddressSanitizer heap-buffer-overflow at test/test_buffer.c:21 (Boom log: build/artifacts/sanitize/sanitize/test/test_buffer.log)
|
|
5110
5110
|
</code></pre></div>
|
|
5111
5111
|
<ul>
|
|
5112
5112
|
<li>
|
|
@@ -5128,12 +5128,12 @@ counts the findings and names the reports written:</p>
|
|
|
5128
5128
|
<p>A halted test, with <code>:reports</code> set to <code>[:text, :json, :sarif]</code>:</p>
|
|
5129
5129
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>☠️ ERROR: Test executable `test_nosanitize_heap_buffer_overflow.out` was stopped by a sanitizer finding.
|
|
5130
5130
|
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>> AddressSanitizer heap-buffer-overflow at test/test_nosanitize_heap_buffer_overflow.c:29
|
|
5131
|
-
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>> Boom log: build/artifacts/sanitize/sanitize/test_nosanitize_heap_buffer_overflow.log
|
|
5131
|
+
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>> Boom log: build/artifacts/sanitize/sanitize/test/test_nosanitize_heap_buffer_overflow.log
|
|
5132
5132
|
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a>
|
|
5133
5133
|
<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a>SANITIZE: FAILED TEST SUMMARY
|
|
5134
5134
|
<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a>[test/test_nosanitize_heap_buffer_overflow.c]
|
|
5135
5135
|
<a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a> Test: test_writes_past_its_buffer
|
|
5136
|
-
<a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a> At line (27): "AddressSanitizer heap-buffer-overflow at test/test_nosanitize_heap_buffer_overflow.c:29 (Boom log: build/artifacts/sanitize/sanitize/test_nosanitize_heap_buffer_overflow.log)"
|
|
5136
|
+
<a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a> At line (27): "AddressSanitizer heap-buffer-overflow at test/test_nosanitize_heap_buffer_overflow.c:29 (Boom log: build/artifacts/sanitize/sanitize/test/test_nosanitize_heap_buffer_overflow.log)"
|
|
5137
5137
|
<a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a>
|
|
5138
5138
|
<a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a>SANITIZE: ❌ OVERALL TEST SUMMARY
|
|
5139
5139
|
<a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a>TESTED: 2
|
|
@@ -5147,7 +5147,7 @@ counts the findings and names the reports written:</p>
|
|
|
5147
5147
|
</code></pre></div>
|
|
5148
5148
|
<p>A leak. Every test passes, and the leak alone fails the build. The test’s
|
|
5149
5149
|
own output section shows the sanitizer’s report:</p>
|
|
5150
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>🪲 ERROR: test_nosanitize_leak: LeakSanitizer memory-leak at test/test_nosanitize_leak.c:32 ➡️ see build/artifacts/sanitize/sanitize/test_nosanitize_leak.log
|
|
5150
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>🪲 ERROR: test/test_nosanitize_leak: LeakSanitizer memory-leak at test/test_nosanitize_leak.c:32 ➡️ see build/artifacts/sanitize/sanitize/test/test_nosanitize_leak.log
|
|
5151
5151
|
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>
|
|
5152
5152
|
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a>SANITIZE: TEST OUTPUT
|
|
5153
5153
|
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a>[test/test_nosanitize_leak.c]
|
|
@@ -5179,7 +5179,8 @@ named by its own finding.</p>
|
|
|
5179
5179
|
The leak sanitizer cannot run under a debugger, and a sanitizer’s own report
|
|
5180
5180
|
already includes the stack.</p>
|
|
5181
5181
|
<h2 id="artifacts">Artifacts</h2>
|
|
5182
|
-
<p>Each test with findings has a log of its sanitizer reports
|
|
5182
|
+
<p>Each test with findings has a log of its sanitizer reports, placed by the
|
|
5183
|
+
<a href="../testing-guide/conventions.html#test-names-build-output">test’s name</a>, its path from your project’s root:</p>
|
|
5183
5184
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>build/artifacts/sanitize/sanitize/<test_name>.log
|
|
5184
5185
|
</code></pre></div>
|
|
5185
5186
|
<p>The configured reports are written beside the logs:</p>
|
|
@@ -4729,7 +4729,7 @@ building and then running test executables under Valgrind’s Memcheck tool.</p>
|
|
|
4729
4729
|
<ul>
|
|
4730
4730
|
<li><strong>Whole test suite</strong>: By running <code>ceedling valgrind:all</code>, all test
|
|
4731
4731
|
executables are built and then each is run under Valgrind. A separate log
|
|
4732
|
-
file is produced for each test executable
|
|
4732
|
+
file is produced for each test executable beneath <code>build/artifacts/valgrind/</code>.</li>
|
|
4733
4733
|
<li><strong>Single test file</strong>: By running <code>ceedling valgrind:<filename></code>, a single
|
|
4734
4734
|
test executable is built and run under Valgrind, producing one log file.</li>
|
|
4735
4735
|
</ul>
|
|
@@ -4861,8 +4861,9 @@ as much of the file’s path as needed to tell same-named test files apart:</p>
|
|
|
4861
4861
|
beside it:</p>
|
|
4862
4862
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>build/artifacts/valgrind/<test_name>.xml
|
|
4863
4863
|
</code></pre></div>
|
|
4864
|
-
<p>
|
|
4865
|
-
<
|
|
4864
|
+
<p>A <a href="../testing-guide/conventions.html#test-names-build-output">test’s name</a> is its path from your project’s root. For example,
|
|
4865
|
+
running <code>ceedling valgrind:test/test_my_module.c</code> produces:</p>
|
|
4866
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>build/artifacts/valgrind/test/test_my_module.log
|
|
4866
4867
|
</code></pre></div>
|
|
4867
4868
|
<p>These log files contain the full Valgrind Memcheck output, including any
|
|
4868
4869
|
detected memory errors, leak summaries, and (with <code>--track-origins=yes</code>)
|
|
@@ -4883,7 +4884,7 @@ the origin of uninitialized values.</p>
|
|
|
4883
4884
|
report. It replaces Ceedling’s generic crash notice:</p>
|
|
4884
4885
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>☠️ ERROR: Test executable `test_nosanitize_crash_sigsegv.out` terminated with Valgrind memory errors.
|
|
4885
4886
|
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>> Invalid read of size 4 at test_nosanitize_crash_sigsegv.c:32
|
|
4886
|
-
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>> Boom log: build/artifacts/valgrind/test_nosanitize_crash_sigsegv.log
|
|
4887
|
+
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>> Boom log: build/artifacts/valgrind/test/test_nosanitize_crash_sigsegv.log
|
|
4887
4888
|
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a>
|
|
4888
4889
|
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a>VALGRIND: FAILED TEST SUMMARY
|
|
4889
4890
|
<a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a>[test/test_nosanitize_crash_sigsegv.c]
|
|
@@ -4905,15 +4906,15 @@ report. It replaces Ceedling’s generic crash notice:</p>
|
|
|
4905
4906
|
<p>With <a href="#fail_build"><code>:fail_build:</code></a> set to <code>false</code>, the same run omits the last
|
|
4906
4907
|
line. Only the test failure fails the build.</p>
|
|
4907
4908
|
<p>A test that completes despite memory errors logs one line as it runs:</p>
|
|
4908
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>🪲 ERROR: Valgrind detected 2 memory errors in test_example ➡️ see build/artifacts/valgrind/test_example.log
|
|
4909
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>🪲 ERROR: Valgrind detected 2 memory errors in test/test_example ➡️ see build/artifacts/valgrind/test/test_example.log
|
|
4909
4910
|
</code></pre></div>
|
|
4910
4911
|
<p>A test whose report is missing logs a warning, since its memory error status
|
|
4911
4912
|
is unknown:</p>
|
|
4912
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>⚠️ WARNING: Valgrind wrote no report for test_example at build/artifacts/valgrind/test_example.log. Memory error status is unknown.
|
|
4913
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>⚠️ WARNING: Valgrind wrote no report for test/test_example at build/artifacts/valgrind/test/test_example.log. Memory error status is unknown.
|
|
4913
4914
|
</code></pre></div>
|
|
4914
4915
|
<h2 id="interpreting-results">Interpreting results</h2>
|
|
4915
4916
|
<p>To review the log for a specific test:</p>
|
|
4916
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>cat<span class="w"> </span>build/artifacts/valgrind/test_my_module.log
|
|
4917
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>cat<span class="w"> </span>build/artifacts/valgrind/test/test_my_module.log
|
|
4917
4918
|
</code></pre></div>
|
|
4918
4919
|
<p>Common Valgrind findings include:</p>
|
|
4919
4920
|
<table>
|
|
@@ -4468,6 +4468,9 @@ update our project.</p>
|
|
|
4468
4468
|
<p>Ceedling will automatically look for your project yaml file and do its best to determine what needs
|
|
4469
4469
|
to be updated. If installed locally, this will mean copying the latest copy of Unity, CMock, and
|
|
4470
4470
|
Ceedling. It will also involve copying documentation, if you had that installed.</p>
|
|
4471
|
+
<p><code>upgrade</code> copies the Ceedling you run, or the installation the <code>WHICH_CEEDLING</code> environment
|
|
4472
|
+
variable names. As of 1.2.2, it never copies from your project’s own vendored Ceedling, so
|
|
4473
|
+
<code>ceedling upgrade .</code> from inside the project works too.</p>
|
|
4471
4474
|
<h2 id="step-3-solving-problems">Step 3: Solving Problems</h2>
|
|
4472
4475
|
<p>We wish every project would update seamlessly... unfortunately there is a lot of customization that
|
|
4473
4476
|
goes into each project, and Ceedling often isn't aware of all of these. To make matter worse, Ceedling
|
|
@@ -5102,8 +5102,9 @@ use <code>ceedling example</code>.</p>
|
|
|
5102
5102
|
and/or a starter project configuration file.</p>
|
|
5103
5103
|
<hr />
|
|
5104
5104
|
<h3 id="ceedling-upgrade"><a href="../getting-started/command-line.html#ceedling-upgrade-path"><code>ceedling upgrade</code></a></h3>
|
|
5105
|
-
<p>Upgrade vendored installation of Ceedling for an existing project
|
|
5106
|
-
along with any
|
|
5105
|
+
<p>Upgrade vendored installation of Ceedling for an existing project, from
|
|
5106
|
+
the version of Ceedling you run, along with any documentation <code>--docs</code>
|
|
5107
|
+
exported.</p>
|
|
5107
5108
|
<hr />
|
|
5108
5109
|
<h3 id="ceedling-version"><a href="../getting-started/command-line.html#ceedling-version"><code>ceedling version</code></a></h3>
|
|
5109
5110
|
<p>Displays version information for Ceedling and its components. Version
|
|
@@ -5121,6 +5122,12 @@ build identifier and Ceedling’s path of origin.</p>
|
|
|
5121
5122
|
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> Unity => #.#.#
|
|
5122
5123
|
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> CException => #.#.#
|
|
5123
5124
|
</code></pre></div>
|
|
5125
|
+
<div class="admonition note">
|
|
5126
|
+
<p class="admonition-title">Note</p>
|
|
5127
|
+
<p>For a project configuration that selects another Ceedling installation
|
|
5128
|
+
different from the installation that launched Ceedling, <code>version</code> reports
|
|
5129
|
+
the launcher and the selected application versions separately.</p>
|
|
5130
|
+
</div>
|
|
5124
5131
|
<p>If the short SHA information is unavailable such as in local
|
|
5125
5132
|
development, the SHA is omitted. The source for this string is
|
|
5126
5133
|
generated and captured in the Ruby Gem at the time of Ceedling’s
|
data/site-local/sitemap.xml.gz
CHANGED
|
Binary file
|
|
@@ -51,7 +51,7 @@ DEFAULT_BULLSEYE_LINKER_TOOL = {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
DEFAULT_BULLSEYE_FIXTURE_TOOL = {
|
|
54
|
-
:executable => '${1}'.freeze,
|
|
54
|
+
:executable => '"${1}"'.freeze, # Test executable, quoted as a path
|
|
55
55
|
:name => 'default_bullseye_fixture'.freeze,
|
|
56
56
|
:optional => false.freeze,
|
|
57
57
|
:arguments => [].freeze
|
|
@@ -41,7 +41,7 @@ DEFAULT_GCOV_LINKER_TOOL = {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
DEFAULT_GCOV_FIXTURE_TOOL = {
|
|
44
|
-
:executable => '${1}'.freeze,
|
|
44
|
+
:executable => '"${1}"'.freeze, # Test executable, quoted as a path
|
|
45
45
|
:name => 'default_gcov_fixture'.freeze,
|
|
46
46
|
:optional => false.freeze,
|
|
47
47
|
:arguments => [].freeze
|
|
@@ -1334,6 +1334,17 @@
|
|
|
1334
1334
|
</span>
|
|
1335
1335
|
</a>
|
|
1336
1336
|
|
|
1337
|
+
</li>
|
|
1338
|
+
|
|
1339
|
+
<li class="md-nav__item">
|
|
1340
|
+
<a href="#test-names-build-output" class="md-nav__link">
|
|
1341
|
+
<span class="md-ellipsis">
|
|
1342
|
+
|
|
1343
|
+
Test names & build output
|
|
1344
|
+
|
|
1345
|
+
</span>
|
|
1346
|
+
</a>
|
|
1347
|
+
|
|
1337
1348
|
</li>
|
|
1338
1349
|
|
|
1339
1350
|
<li class="md-nav__item">
|
|
@@ -4705,6 +4716,17 @@
|
|
|
4705
4716
|
</span>
|
|
4706
4717
|
</a>
|
|
4707
4718
|
|
|
4719
|
+
</li>
|
|
4720
|
+
|
|
4721
|
+
<li class="md-nav__item">
|
|
4722
|
+
<a href="#test-names-build-output" class="md-nav__link">
|
|
4723
|
+
<span class="md-ellipsis">
|
|
4724
|
+
|
|
4725
|
+
Test names & build output
|
|
4726
|
+
|
|
4727
|
+
</span>
|
|
4728
|
+
</a>
|
|
4729
|
+
|
|
4708
4730
|
</li>
|
|
4709
4731
|
|
|
4710
4732
|
<li class="md-nav__item">
|
|
@@ -5240,6 +5262,37 @@ of its own. Whether yours does depends on your toolchain.</p>
|
|
|
5240
5262
|
<p>Before 1.2.0, Ceedling wrote no manifest. With a toolchain that embeds none,
|
|
5241
5263
|
test files with these words in their names could not be run on Windows without
|
|
5242
5264
|
administrator privileges.</p>
|
|
5265
|
+
<h3 id="test-names-build-output">Test names & build output</h3>
|
|
5266
|
+
<p>Ceedling names each test by its path from your project’s root, without its
|
|
5267
|
+
file extension. <code>test/unit/test_calc.c</code> is named <code>test/unit/test_calc</code>. Every
|
|
5268
|
+
test gets its own build output, even when test files share a filename.</p>
|
|
5269
|
+
<p>The name places a test’s output beneath each build directory:</p>
|
|
5270
|
+
<ul>
|
|
5271
|
+
<li>Executable: <code>build/test/out/test/unit/test_calc/</code></li>
|
|
5272
|
+
<li>Results: <code>build/test/results/test/unit/test_calc.pass</code></li>
|
|
5273
|
+
<li>Logs from plugins and backtraces, such as
|
|
5274
|
+
<code>build/artifacts/valgrind/test/unit/test_calc.log</code> or
|
|
5275
|
+
<code>build/logs/test/test/unit/test_calc/<test case>.gdb.log</code></li>
|
|
5276
|
+
</ul>
|
|
5277
|
+
<p>Within a test’s directory, each object sits at its source’s own path from your
|
|
5278
|
+
project’s root, so same-named sources never share a path. <code>src/drivers/uart.c</code>
|
|
5279
|
+
compiles to <code>build/test/out/test/unit/test_calc/src/drivers/uart.o</code>. Preprocessed
|
|
5280
|
+
files and dependency files follow the same layout, and a release build places its
|
|
5281
|
+
objects the same way below <code>build/release/out/</code>. Mocks sit below their test’s own
|
|
5282
|
+
mock directory, and runners and Unity, CMock, and CException objects sit directly in
|
|
5283
|
+
the test’s directory.</p>
|
|
5284
|
+
<p>A test or source outside your project keeps its whole path. Each <code>..</code> becomes
|
|
5285
|
+
<code>_up_</code>, so <code>../shared/test/test_io.c</code> is named <code>_up_/shared/test/test_io</code>. A path
|
|
5286
|
+
with no relative form, such as one on another Windows drive, sits beneath <code>_abs_</code>,
|
|
5287
|
+
and a file of the running Ceedling installation outside your project, such as a
|
|
5288
|
+
plugin’s source, beneath <code>_ceedling_</code>. None of these reaches outside the build
|
|
5289
|
+
directory. A directory of your project that is itself named like one of these
|
|
5290
|
+
gains a leading <code>_</code> (e.g. <code>__up_/</code>), so it never shares a name with a path outside
|
|
5291
|
+
your project.</p>
|
|
5292
|
+
<p>Two tests share a name only if their paths differ in extension alone (e.g.
|
|
5293
|
+
<code>test_a.c</code> and <code>test_a.cpp</code>). A build that includes either test stops with an
|
|
5294
|
+
error naming both files. Two sources that would build to one file stop a build the
|
|
5295
|
+
same way.</p>
|
|
5243
5296
|
<h3 id="source-mock-files-to-compile-and-link">Source & mock files to compile and link</h3>
|
|
5244
5297
|
<p>Ceedling knows what files to compile and link into each individual
|
|
5245
5298
|
test executable by way of the <code>#include</code> list contained in each
|