ceedling 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +18 -14
- data/README.md +6 -4
- data/assets/project_as_gem.yml +1 -1
- data/assets/rakefile_as_gem.rb +2 -0
- data/assets/rakefile_with_guts.rb +3 -1
- data/ceedling.gemspec +1 -0
- data/examples/blinky/rakefile.rb +2 -2
- data/examples/temp_sensor/rakefile.rb +1 -1
- data/examples/temp_sensor/src/TemperatureFilter.c +1 -2
- data/examples/temp_sensor/test/TestTemperatureCalculator.c +1 -1
- data/examples/temp_sensor/test/TestTemperatureFilter.c +12 -2
- data/lib/ceedling.rb +94 -22
- data/lib/{build_invoker_utils.rb → ceedling/build_invoker_utils.rb} +27 -27
- data/lib/{cacheinator.rb → ceedling/cacheinator.rb} +42 -42
- data/lib/{cacheinator_helper.rb → ceedling/cacheinator_helper.rb} +12 -12
- data/lib/{cmock_builder.rb → ceedling/cmock_builder.rb} +15 -15
- data/lib/{configurator.rb → ceedling/configurator.rb} +333 -329
- data/lib/{configurator_builder.rb → ceedling/configurator_builder.rb} +437 -437
- data/lib/{configurator_plugins.rb → ceedling/configurator_plugins.rb} +124 -124
- data/lib/{configurator_setup.rb → ceedling/configurator_setup.rb} +124 -124
- data/lib/{configurator_validator.rb → ceedling/configurator_validator.rb} +184 -184
- data/lib/{constants.rb → ceedling/constants.rb} +20 -17
- data/lib/{defaults.rb → ceedling/defaults.rb} +19 -18
- data/lib/{dependinator.rb → ceedling/dependinator.rb} +92 -92
- data/lib/{erb_wrapper.rb → ceedling/erb_wrapper.rb} +8 -8
- data/lib/{file_finder.rb → ceedling/file_finder.rb} +132 -132
- data/lib/{file_finder_helper.rb → ceedling/file_finder_helper.rb} +54 -54
- data/lib/{file_path_utils.rb → ceedling/file_path_utils.rb} +189 -189
- data/lib/{file_system_utils.rb → ceedling/file_system_utils.rb} +69 -69
- data/lib/{file_system_wrapper.rb → ceedling/file_system_wrapper.rb} +9 -9
- data/lib/{file_wrapper.rb → ceedling/file_wrapper.rb} +79 -79
- data/lib/{flaginator.rb → ceedling/flaginator.rb} +54 -54
- data/lib/{generator.rb → ceedling/generator.rb} +164 -164
- data/lib/{generator_helper.rb → ceedling/generator_helper.rb} +40 -40
- data/lib/{generator_test_results.rb → ceedling/generator_test_results.rb} +86 -89
- data/lib/{generator_test_results_sanity_checker.rb → ceedling/generator_test_results_sanity_checker.rb} +64 -62
- data/lib/{generator_test_runner.rb → ceedling/generator_test_runner.rb} +63 -63
- data/lib/{loginator.rb → ceedling/loginator.rb} +31 -31
- data/lib/{makefile.rb → ceedling/makefile.rb} +0 -0
- data/lib/{objects.yml → ceedling/objects.yml} +0 -0
- data/lib/{par_map.rb → ceedling/par_map.rb} +0 -0
- data/lib/{plugin.rb → ceedling/plugin.rb} +80 -80
- data/lib/{plugin_builder.rb → ceedling/plugin_builder.rb} +52 -52
- data/lib/{plugin_manager.rb → ceedling/plugin_manager.rb} +107 -107
- data/lib/{plugin_manager_helper.rb → ceedling/plugin_manager_helper.rb} +19 -19
- data/lib/{plugin_reportinator.rb → ceedling/plugin_reportinator.rb} +2 -2
- data/lib/{plugin_reportinator_helper.rb → ceedling/plugin_reportinator_helper.rb} +1 -1
- data/lib/{preprocessinator.rb → ceedling/preprocessinator.rb} +43 -43
- data/lib/{preprocessinator_extractor.rb → ceedling/preprocessinator_extractor.rb} +30 -30
- data/lib/{preprocessinator_file_handler.rb → ceedling/preprocessinator_file_handler.rb} +21 -21
- data/lib/{preprocessinator_helper.rb → ceedling/preprocessinator_helper.rb} +46 -46
- data/lib/ceedling/preprocessinator_includes_handler.rb +82 -0
- data/lib/{project_config_manager.rb → ceedling/project_config_manager.rb} +38 -38
- data/lib/{project_file_loader.rb → ceedling/project_file_loader.rb} +64 -64
- data/lib/{rake_utils.rb → ceedling/rake_utils.rb} +17 -17
- data/lib/{rake_wrapper.rb → ceedling/rake_wrapper.rb} +33 -33
- data/lib/{rakefile.rb → ceedling/rakefile.rb} +78 -74
- data/lib/{release_invoker.rb → ceedling/release_invoker.rb} +58 -58
- data/lib/{release_invoker_helper.rb → ceedling/release_invoker_helper.rb} +16 -16
- data/lib/{reportinator.rb → ceedling/reportinator.rb} +9 -9
- data/lib/{rules_cmock.rake → ceedling/rules_cmock.rake} +9 -9
- data/lib/{rules_preprocess.rake → ceedling/rules_preprocess.rake} +26 -26
- data/lib/{rules_release.rake → ceedling/rules_release.rake} +79 -79
- data/lib/{rules_release_deep_dependencies.rake → ceedling/rules_release_deep_dependencies.rake} +15 -15
- data/lib/{rules_tests.rake → ceedling/rules_tests.rake} +59 -59
- data/lib/{rules_tests_deep_dependencies.rake → ceedling/rules_tests_deep_dependencies.rake} +15 -15
- data/lib/{setupinator.rb → ceedling/setupinator.rb} +51 -51
- data/lib/{stream_wrapper.rb → ceedling/stream_wrapper.rb} +20 -20
- data/lib/{streaminator.rb → ceedling/streaminator.rb} +40 -41
- data/lib/{streaminator_helper.rb → ceedling/streaminator_helper.rb} +15 -15
- data/lib/{system_utils.rb → ceedling/system_utils.rb} +0 -0
- data/lib/{system_wrapper.rb → ceedling/system_wrapper.rb} +76 -76
- data/lib/{target_loader.rb → ceedling/target_loader.rb} +0 -0
- data/lib/{task_invoker.rb → ceedling/task_invoker.rb} +89 -89
- data/lib/{tasks_base.rake → ceedling/tasks_base.rake} +104 -104
- data/lib/{tasks_filesystem.rake → ceedling/tasks_filesystem.rake} +91 -91
- data/lib/{tasks_release.rake → ceedling/tasks_release.rake} +28 -28
- data/lib/{tasks_release_deep_dependencies.rake → ceedling/tasks_release_deep_dependencies.rake} +9 -9
- data/lib/{tasks_tests.rake → ceedling/tasks_tests.rake} +52 -52
- data/lib/{tasks_tests_deep_dependencies.rake → ceedling/tasks_tests_deep_dependencies.rake} +9 -9
- data/lib/{tasks_vendor.rake → ceedling/tasks_vendor.rake} +36 -36
- data/lib/{test_includes_extractor.rb → ceedling/test_includes_extractor.rb} +81 -81
- data/lib/{test_invoker.rb → ceedling/test_invoker.rb} +97 -97
- data/lib/{test_invoker_helper.rb → ceedling/test_invoker_helper.rb} +28 -28
- data/lib/{tool_executor.rb → ceedling/tool_executor.rb} +215 -212
- data/lib/{tool_executor_helper.rb → ceedling/tool_executor_helper.rb} +115 -115
- data/lib/{verbosinator.rb → ceedling/verbosinator.rb} +10 -10
- data/lib/ceedling/version.rb +1 -1
- data/lib/{yaml_wrapper.rb → ceedling/yaml_wrapper.rb} +17 -16
- data/license.txt +31 -0
- data/plugins/bullseye/lib/bullseye.rb +2 -2
- data/plugins/gcov/gcov.rb +2 -2
- data/plugins/module_generator/lib/module_generator.rb +4 -3
- data/plugins/stdout_ide_tests_report/lib/stdout_ide_tests_report.rb +8 -8
- data/plugins/stdout_pretty_tests_report/lib/stdout_pretty_tests_report.rb +3 -3
- data/plugins/teamcity_tests_report/config/teamcity_tests_report.yml +4 -0
- data/plugins/teamcity_tests_report/lib/teamcity_tests_report.rb +57 -0
- data/plugins/xml_tests_report/xml_tests_report.rb +4 -4
- data/release/version.info +1 -1
- data/spec/ceedling_spec.rb +154 -0
- data/spec/par_map_spec.rb +1 -1
- data/spec/preprocessinator_extractor_spec.rb +26 -27
- data/spec/preprocessinator_includes_handler_spec.rb +175 -0
- data/spec/spec_helper.rb +8 -27
- data/test_graveyard/integration/paths_test.rb +2 -2
- data/test_graveyard/unit/busted/configurator_builder_test.rb +2 -2
- data/test_graveyard/unit/busted/configurator_test.rb +1 -1
- data/test_graveyard/unit/busted/configurator_validator_test.rb +1 -1
- data/test_graveyard/unit/busted/dependinator_test.rb +1 -1
- data/test_graveyard/unit/busted/file_finder_helper_test.rb +1 -1
- data/test_graveyard/unit/busted/file_finder_test.rb +1 -1
- data/test_graveyard/unit/busted/file_path_utils_test.rb +1 -1
- data/test_graveyard/unit/busted/file_system_utils_test.rb +1 -1
- data/test_graveyard/unit/busted/generator_test.rb +1 -1
- data/test_graveyard/unit/busted/generator_test_results_test.rb +1 -1
- data/test_graveyard/unit/busted/generator_test_runner_test.rb +1 -1
- data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +1 -1
- data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +1 -1
- data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +1 -1
- data/test_graveyard/unit/busted/preprocessinator_test.rb +1 -1
- data/test_graveyard/unit/busted/project_file_loader_test.rb +1 -1
- data/test_graveyard/unit/busted/setupinator_test.rb +1 -1
- data/test_graveyard/unit/busted/streaminator_test.rb +2 -2
- data/test_graveyard/unit/busted/task_invoker_test.rb +1 -1
- data/test_graveyard/unit/busted/test_includes_extractor_test.rb +1 -1
- data/test_graveyard/unit/busted/test_invoker_helper_test.rb +1 -1
- data/test_graveyard/unit/busted/test_invoker_test.rb +1 -1
- data/test_graveyard/unit/busted/tool_executor_helper_test.rb +1 -1
- data/test_graveyard/unit/busted/tool_executor_test.rb +1 -1
- data/test_graveyard/unit/busted/verbosinator_test.rb +1 -1
- data/test_graveyard/unit/preprocessinator_extractor_test.rb +1 -1
- data/vendor/c_exception/Gemfile +4 -0
- data/vendor/c_exception/lib/CException.h +1 -1
- data/vendor/c_exception/test/TestException.c +25 -14
- data/vendor/c_exception/test/TestException_Runner.c +74 -57
- data/vendor/cmock/Gemfile +11 -0
- data/vendor/cmock/lib/cmock_generator.rb +13 -12
- data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +44 -0
- data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +74 -0
- data/vendor/cmock/lib/cmock_generator_utils.rb +67 -42
- data/vendor/cmock/src/cmock.c +20 -30
- data/vendor/cmock/src/cmock.h +1 -0
- data/vendor/cmock/src/cmock_internals.h +43 -0
- data/vendor/cmock/test/c/TestCMockC.c +79 -36
- data/vendor/cmock/test/c/TestCMockC_Runner.c +2 -0
- data/vendor/cmock/test/spec/cmock_file_writer_spec.rb +21 -1
- data/vendor/cmock/test/spec/cmock_generator_plugin_array_spec.rb +52 -0
- data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +2 -0
- data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +235 -0
- data/vendor/cmock/test/test_helper.rb +10 -5
- data/vendor/cmock/test/unit/cmock_generator_main_test.rb +38 -0
- data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -0
- data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +134 -0
- data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +58 -33
- data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
- data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
- data/vendor/cmock/vendor/c_exception/docs/license.txt +30 -0
- data/vendor/cmock/vendor/c_exception/docs/readme.txt +236 -0
- data/vendor/cmock/vendor/c_exception/lib/CException.c +39 -0
- data/vendor/cmock/vendor/c_exception/lib/CException.h +70 -0
- data/vendor/cmock/vendor/c_exception/makefile +24 -0
- data/vendor/cmock/vendor/c_exception/rakefile.rb +41 -0
- data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
- data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
- data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +27 -0
- data/vendor/cmock/vendor/c_exception/test/TestException.c +291 -0
- data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +62 -0
- data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +94 -0
- data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
- data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
- data/vendor/cmock/vendor/unity/auto/generate_module.rb +202 -0
- data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +313 -0
- data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +23 -0
- data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +139 -0
- data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
- data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
- data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +217 -0
- data/vendor/cmock/vendor/unity/docs/license.txt +31 -0
- data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.c +10 -0
- data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.h +12 -0
- data/vendor/cmock/vendor/unity/examples/makefile +40 -0
- data/vendor/cmock/vendor/unity/examples/rakefile.rb +32 -0
- data/vendor/cmock/vendor/unity/examples/rakefile_helper.rb +256 -0
- data/vendor/cmock/vendor/unity/examples/readme.txt +18 -0
- data/vendor/cmock/vendor/unity/examples/src/ProductionCode.c +24 -0
- data/vendor/cmock/vendor/unity/examples/src/ProductionCode.h +3 -0
- data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.c +9 -0
- data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.h +2 -0
- data/vendor/cmock/vendor/unity/examples/test/TestProductionCode.c +62 -0
- data/vendor/cmock/vendor/unity/examples/test/TestProductionCode2.c +31 -0
- data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
- data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
- data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/MakefileWorker.mk +0 -0
- data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/filterGcov.sh +0 -0
- data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +37 -0
- data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
- data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
- data/vendor/cmock/vendor/unity/makefile +35 -0
- data/vendor/cmock/vendor/unity/rakefile.rb +48 -0
- data/vendor/cmock/vendor/unity/rakefile_helper.rb +240 -0
- data/vendor/cmock/vendor/unity/release/build.info +2 -0
- data/vendor/cmock/vendor/unity/release/version.info +2 -0
- data/vendor/cmock/vendor/unity/src/unity.c +979 -0
- data/vendor/cmock/vendor/unity/src/unity.h +232 -0
- data/vendor/cmock/vendor/unity/src/unity_internals.h +424 -0
- data/vendor/cmock/vendor/unity/targets/gcc.yml +43 -0
- data/vendor/cmock/vendor/unity/targets/gcc_64.yml +44 -0
- data/vendor/cmock/vendor/unity/targets/hitech_picc18.yml +101 -0
- data/vendor/cmock/vendor/unity/targets/iar_arm_v4.yml +89 -0
- data/vendor/cmock/vendor/unity/targets/iar_arm_v5.yml +79 -0
- data/vendor/cmock/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
- data/vendor/cmock/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
- data/vendor/cmock/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
- data/vendor/cmock/vendor/unity/targets/iar_msp430.yml +94 -0
- data/vendor/cmock/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +50 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +60 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +63 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +51 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +60 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +63 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
- data/vendor/cmock/vendor/unity/test/test_generate_test_runner.rb +94 -0
- data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +51 -0
- data/vendor/cmock/vendor/unity/test/testdata/sample.yml +9 -0
- data/vendor/cmock/vendor/unity/test/testdata/testsample.c +51 -0
- data/vendor/cmock/vendor/unity/test/testparameterized.c +101 -0
- data/vendor/cmock/vendor/unity/test/testunity.c +2024 -0
- data/vendor/unity/Gemfile +4 -0
- data/vendor/unity/auto/generate_test_runner.rb +6 -3
- data/vendor/unity/examples/makefile +2 -2
- data/vendor/unity/examples/rakefile.rb +13 -2
- data/vendor/unity/extras/fixture/rakefile.rb +1 -1
- data/vendor/unity/extras/fixture/rakefile_helper.rb +4 -3
- data/vendor/unity/extras/fixture/src/unity_fixture.c +15 -12
- data/vendor/unity/extras/fixture/src/unity_fixture.h +5 -5
- data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +1 -1
- data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +6 -3
- data/vendor/unity/makefile +2 -2
- data/vendor/unity/src/unity.c +183 -16
- data/vendor/unity/src/unity.h +18 -5
- data/vendor/unity/src/unity_internals.h +57 -23
- data/vendor/unity/targets/gcc_64.yml +45 -0
- data/vendor/unity/test/testunity.c +436 -28
- metadata +200 -137
- data/ceedling-0.13.0.rc4.gem +0 -0
- data/ceedling.sublime-project +0 -8
- data/ceedling.sublime-workspace +0 -365
- data/lib/preprocessinator_includes_handler.rb +0 -55
- data/tags +0 -977
- data/vendor/cmock/vendor/hardmock/CHANGES +0 -78
- data/vendor/cmock/vendor/hardmock/LICENSE +0 -7
- data/vendor/cmock/vendor/hardmock/README +0 -70
- data/vendor/cmock/vendor/hardmock/Rakefile +0 -8
- data/vendor/cmock/vendor/hardmock/config/environment.rb +0 -12
- data/vendor/cmock/vendor/hardmock/lib/assert_error.rb +0 -23
- data/vendor/cmock/vendor/hardmock/lib/extend_test_unit.rb +0 -14
- data/vendor/cmock/vendor/hardmock/lib/hardmock.rb +0 -86
- data/vendor/cmock/vendor/hardmock/lib/hardmock/errors.rb +0 -22
- data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation.rb +0 -229
- data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation_builder.rb +0 -9
- data/vendor/cmock/vendor/hardmock/lib/hardmock/expector.rb +0 -26
- data/vendor/cmock/vendor/hardmock/lib/hardmock/method_cleanout.rb +0 -33
- data/vendor/cmock/vendor/hardmock/lib/hardmock/mock.rb +0 -180
- data/vendor/cmock/vendor/hardmock/lib/hardmock/mock_control.rb +0 -53
- data/vendor/cmock/vendor/hardmock/lib/hardmock/stubbing.rb +0 -210
- data/vendor/cmock/vendor/hardmock/lib/hardmock/trapper.rb +0 -31
- data/vendor/cmock/vendor/hardmock/lib/hardmock/utils.rb +0 -9
- data/vendor/cmock/vendor/hardmock/lib/test_unit_before_after.rb +0 -169
- data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc.rake +0 -19
- data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc_options.rb +0 -4
- data/vendor/cmock/vendor/hardmock/rake_tasks/test.rake +0 -22
- data/vendor/cmock/vendor/hardmock/test/functional/assert_error_test.rb +0 -52
- data/vendor/cmock/vendor/hardmock/test/functional/auto_verify_test.rb +0 -178
- data/vendor/cmock/vendor/hardmock/test/functional/direct_mock_usage_test.rb +0 -396
- data/vendor/cmock/vendor/hardmock/test/functional/hardmock_test.rb +0 -434
- data/vendor/cmock/vendor/hardmock/test/functional/stubbing_test.rb +0 -479
- data/vendor/cmock/vendor/hardmock/test/test_helper.rb +0 -43
- data/vendor/cmock/vendor/hardmock/test/unit/expectation_builder_test.rb +0 -19
- data/vendor/cmock/vendor/hardmock/test/unit/expectation_test.rb +0 -372
- data/vendor/cmock/vendor/hardmock/test/unit/expector_test.rb +0 -57
- data/vendor/cmock/vendor/hardmock/test/unit/method_cleanout_test.rb +0 -36
- data/vendor/cmock/vendor/hardmock/test/unit/mock_control_test.rb +0 -175
- data/vendor/cmock/vendor/hardmock/test/unit/mock_test.rb +0 -279
- data/vendor/cmock/vendor/hardmock/test/unit/test_unit_before_after_test.rb +0 -452
- data/vendor/cmock/vendor/hardmock/test/unit/trapper_test.rb +0 -62
- data/vendor/cmock/vendor/hardmock/test/unit/verify_error_test.rb +0 -40
|
@@ -1,437 +1,437 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
require 'rake' # for ext() method
|
|
3
|
-
require 'file_path_utils' # for class methods
|
|
4
|
-
require 'defaults'
|
|
5
|
-
require 'constants' # for Verbosity constants class & base file paths
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class ConfiguratorBuilder
|
|
10
|
-
|
|
11
|
-
constructor :file_system_utils, :file_wrapper, :system_wrapper
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def build_global_constants(config)
|
|
15
|
-
config.each_pair do |key, value|
|
|
16
|
-
formatted_key = key.to_s.upcase
|
|
17
|
-
# undefine global constant if it already exists
|
|
18
|
-
Object.send(:remove_const, formatted_key.to_sym) if @system_wrapper.constants_include?(formatted_key)
|
|
19
|
-
# create global constant
|
|
20
|
-
Object.module_eval("#{formatted_key} = value")
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def build_accessor_methods(config, context)
|
|
26
|
-
config.each_pair do |key, value|
|
|
27
|
-
# fill configurator object with accessor methods
|
|
28
|
-
eval("def #{key.to_s.downcase}() return @project_config_hash[:#{key.to_s}] end", context)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
# create a flattened hash from the original configuration structure
|
|
34
|
-
def flattenify(config)
|
|
35
|
-
new_hash = {}
|
|
36
|
-
|
|
37
|
-
config.each_key do | parent |
|
|
38
|
-
|
|
39
|
-
# gracefully handle empty top-level entries
|
|
40
|
-
next if (config[parent].nil?)
|
|
41
|
-
|
|
42
|
-
case config[parent]
|
|
43
|
-
when Array
|
|
44
|
-
config[parent].each do |hash|
|
|
45
|
-
key = "#{parent.to_s.downcase}_#{hash.keys[0].to_s.downcase}".to_sym
|
|
46
|
-
new_hash[key] = hash[hash.keys[0]]
|
|
47
|
-
end
|
|
48
|
-
when Hash
|
|
49
|
-
config[parent].each_pair do | child, value |
|
|
50
|
-
key = "#{parent.to_s.downcase}_#{child.to_s.downcase}".to_sym
|
|
51
|
-
new_hash[key] = value
|
|
52
|
-
end
|
|
53
|
-
# handle entries with no children, only values
|
|
54
|
-
else
|
|
55
|
-
new_hash["#{parent.to_s.downcase}".to_sym] = config[parent]
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
return new_hash
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
def populate_defaults(config, defaults)
|
|
65
|
-
defaults.keys.sort.each do |section|
|
|
66
|
-
defaults[section].keys.sort.each do |entry|
|
|
67
|
-
config[section][entry] = defaults[section][entry].deep_clone if (config[section].nil? or config[section][entry].nil?)
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def clean(in_hash)
|
|
74
|
-
# ensure that include files inserted into test runners have file extensions & proper ones at that
|
|
75
|
-
in_hash[:test_runner_includes].map!{|include| include.ext(in_hash[:extension_header])}
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
def set_build_paths(in_hash)
|
|
80
|
-
out_hash = {}
|
|
81
|
-
|
|
82
|
-
project_build_artifacts_root = File.join(in_hash[:project_build_root], 'artifacts')
|
|
83
|
-
project_build_tests_root = File.join(in_hash[:project_build_root], TESTS_BASE_PATH)
|
|
84
|
-
project_build_release_root = File.join(in_hash[:project_build_root], RELEASE_BASE_PATH)
|
|
85
|
-
|
|
86
|
-
paths = [
|
|
87
|
-
[:project_build_artifacts_root, project_build_artifacts_root, true ],
|
|
88
|
-
[:project_build_tests_root, project_build_tests_root, true ],
|
|
89
|
-
[:project_build_release_root, project_build_release_root, in_hash[:project_release_build] ],
|
|
90
|
-
|
|
91
|
-
[:project_test_artifacts_path, File.join(project_build_artifacts_root, TESTS_BASE_PATH), true ],
|
|
92
|
-
[:project_test_runners_path, File.join(project_build_tests_root, 'runners'), true ],
|
|
93
|
-
[:project_test_results_path, File.join(project_build_tests_root, 'results'), true ],
|
|
94
|
-
[:project_test_build_output_path, File.join(project_build_tests_root, 'out'), true ],
|
|
95
|
-
[:project_test_build_cache_path, File.join(project_build_tests_root, 'cache'), true ],
|
|
96
|
-
[:project_test_dependencies_path, File.join(project_build_tests_root, 'dependencies'), true ],
|
|
97
|
-
|
|
98
|
-
[:project_release_artifacts_path, File.join(project_build_artifacts_root, RELEASE_BASE_PATH), in_hash[:project_release_build] ],
|
|
99
|
-
[:project_release_build_cache_path, File.join(project_build_release_root, 'cache'), in_hash[:project_release_build] ],
|
|
100
|
-
[:project_release_build_output_path, File.join(project_build_release_root, 'out'), in_hash[:project_release_build] ],
|
|
101
|
-
[:project_release_build_output_asm_path, File.join(project_build_release_root, 'out', 'asm'), in_hash[:project_release_build] ],
|
|
102
|
-
[:project_release_build_output_c_path, File.join(project_build_release_root, 'out', 'c'), in_hash[:project_release_build] ],
|
|
103
|
-
[:project_release_dependencies_path, File.join(project_build_release_root, 'dependencies'), in_hash[:project_release_build] ],
|
|
104
|
-
|
|
105
|
-
[:project_log_path, File.join(in_hash[:project_build_root], 'logs'), true ],
|
|
106
|
-
[:project_temp_path, File.join(in_hash[:project_build_root], 'temp'), true ],
|
|
107
|
-
|
|
108
|
-
[:project_test_preprocess_includes_path, File.join(project_build_tests_root, 'preprocess/includes'), in_hash[:project_use_test_preprocessor] ],
|
|
109
|
-
[:project_test_preprocess_files_path, File.join(project_build_tests_root, 'preprocess/files'), in_hash[:project_use_test_preprocessor] ],
|
|
110
|
-
]
|
|
111
|
-
|
|
112
|
-
out_hash[:project_build_paths] = []
|
|
113
|
-
|
|
114
|
-
# fetch already set mock path
|
|
115
|
-
out_hash[:project_build_paths] << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
|
|
116
|
-
|
|
117
|
-
paths.each do |path|
|
|
118
|
-
build_path_name = path[0]
|
|
119
|
-
build_path = path[1]
|
|
120
|
-
build_path_add_condition = path[2]
|
|
121
|
-
|
|
122
|
-
# insert path into build paths if associated with true condition
|
|
123
|
-
out_hash[:project_build_paths] << build_path if build_path_add_condition
|
|
124
|
-
# set path symbol name and path for each entry in paths array
|
|
125
|
-
out_hash[build_path_name] = build_path
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
return out_hash
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
def set_force_build_filepaths(in_hash)
|
|
133
|
-
out_hash = {}
|
|
134
|
-
|
|
135
|
-
out_hash[:project_test_force_rebuild_filepath] = File.join( in_hash[:project_test_dependencies_path], 'force_build' )
|
|
136
|
-
out_hash[:project_release_force_rebuild_filepath] = File.join( in_hash[:project_release_dependencies_path], 'force_build' ) if (in_hash[:project_release_build])
|
|
137
|
-
|
|
138
|
-
return out_hash
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
def set_rakefile_components(in_hash)
|
|
143
|
-
out_hash = {
|
|
144
|
-
:project_rakefile_component_files =>
|
|
145
|
-
[File.join(CEEDLING_LIB, 'tasks_base.rake'),
|
|
146
|
-
File.join(CEEDLING_LIB, 'tasks_filesystem.rake'),
|
|
147
|
-
File.join(CEEDLING_LIB, 'tasks_tests.rake'),
|
|
148
|
-
File.join(CEEDLING_LIB, 'tasks_vendor.rake'),
|
|
149
|
-
File.join(CEEDLING_LIB, 'rules_tests.rake')]}
|
|
150
|
-
|
|
151
|
-
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_cmock.rake') if (in_hash[:project_use_mocks])
|
|
152
|
-
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_preprocess.rake') if (in_hash[:project_use_test_preprocessor])
|
|
153
|
-
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
|
|
154
|
-
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'tasks_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
|
|
155
|
-
|
|
156
|
-
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
|
|
157
|
-
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_release.rake') if (in_hash[:project_release_build])
|
|
158
|
-
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'tasks_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
|
|
159
|
-
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'tasks_release.rake') if (in_hash[:project_release_build])
|
|
160
|
-
|
|
161
|
-
return out_hash
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
def set_library_build_info_filepaths(hash)
|
|
166
|
-
|
|
167
|
-
# Notes:
|
|
168
|
-
# - Dependency on a change to our input configuration hash is handled elsewhere as it is
|
|
169
|
-
# dynamically formed during ceedling's execution
|
|
170
|
-
# - Compiled vendor dependencies like cmock.o, unity.o, cexception.o are handled below;
|
|
171
|
-
# here we're interested only in ceedling-based code generation dependencies
|
|
172
|
-
|
|
173
|
-
ceedling_build_info_filepath = File.join(CEEDLING_RELEASE, 'build.info')
|
|
174
|
-
cmock_build_info_filepath = FilePathUtils::form_ceedling_vendor_path('cmock/release', 'build.info')
|
|
175
|
-
|
|
176
|
-
out_hash = {
|
|
177
|
-
:ceedling_build_info_filepath => ceedling_build_info_filepath,
|
|
178
|
-
:cmock_build_info_filepath => cmock_build_info_filepath
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
return out_hash
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
def set_release_target(in_hash)
|
|
186
|
-
return {} if (not in_hash[:project_release_build])
|
|
187
|
-
|
|
188
|
-
release_target_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_executable])) : in_hash[:release_build_output])
|
|
189
|
-
release_map_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_map])) : in_hash[:release_build_output].ext(in_hash[:extension_map]))
|
|
190
|
-
|
|
191
|
-
return {
|
|
192
|
-
# tempted to make a helper method in file_path_utils? stop right there, pal. you'll introduce a cyclical dependency
|
|
193
|
-
:project_release_build_target => File.join(in_hash[:project_build_release_root], release_target_file),
|
|
194
|
-
:project_release_build_map => File.join(in_hash[:project_build_release_root], release_map_file)
|
|
195
|
-
}
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
def collect_project_options(in_hash)
|
|
200
|
-
options = []
|
|
201
|
-
|
|
202
|
-
in_hash[:project_options_paths].each do |path|
|
|
203
|
-
options << @file_wrapper.directory_listing( File.join(path, '*.yml') )
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
return {
|
|
207
|
-
:collection_project_options => options.flatten
|
|
208
|
-
}
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
def expand_all_path_globs(in_hash)
|
|
213
|
-
out_hash = {}
|
|
214
|
-
path_keys = []
|
|
215
|
-
|
|
216
|
-
in_hash.each_key do |key|
|
|
217
|
-
next if (not key.to_s[0..4] == 'paths')
|
|
218
|
-
path_keys << key
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
# sorted to provide assured order of traversal in test calls on mocks
|
|
222
|
-
path_keys.sort.each do |key|
|
|
223
|
-
out_hash["collection_#{key.to_s}".to_sym] = @file_system_utils.collect_paths( in_hash[key] )
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
return out_hash
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
def collect_source_and_include_paths(in_hash)
|
|
231
|
-
return {
|
|
232
|
-
:collection_paths_source_and_include =>
|
|
233
|
-
( in_hash[:collection_paths_source] +
|
|
234
|
-
in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
|
|
235
|
-
}
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
def collect_source_include_vendor_paths(in_hash)
|
|
240
|
-
extra_paths = []
|
|
241
|
-
extra_paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
|
|
242
|
-
|
|
243
|
-
return {
|
|
244
|
-
:collection_paths_source_include_vendor =>
|
|
245
|
-
in_hash[:collection_paths_source_and_include] +
|
|
246
|
-
extra_paths
|
|
247
|
-
}
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
def collect_test_support_source_include_paths(in_hash)
|
|
252
|
-
return {
|
|
253
|
-
:collection_paths_test_support_source_include =>
|
|
254
|
-
(in_hash[:collection_paths_test] +
|
|
255
|
-
in_hash[:collection_paths_support] +
|
|
256
|
-
in_hash[:collection_paths_source] +
|
|
257
|
-
in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
|
|
258
|
-
}
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
def collect_vendor_paths(in_hash)
|
|
263
|
-
return {:collection_paths_vendor => get_vendor_paths(in_hash)}
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
def collect_test_support_source_include_vendor_paths(in_hash)
|
|
268
|
-
return {
|
|
269
|
-
:collection_paths_test_support_source_include_vendor =>
|
|
270
|
-
in_hash[:collection_paths_test_support_source_include] +
|
|
271
|
-
get_vendor_paths(in_hash)
|
|
272
|
-
}
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
def collect_tests(in_hash)
|
|
277
|
-
all_tests = @file_wrapper.instantiate_file_list
|
|
278
|
-
|
|
279
|
-
in_hash[:collection_paths_test].each do |path|
|
|
280
|
-
all_tests.include( File.join(path, "#{in_hash[:project_test_file_prefix]}*#{in_hash[:extension_source]}") )
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
@file_system_utils.revise_file_list( all_tests, in_hash[:files_test] )
|
|
284
|
-
|
|
285
|
-
return {:collection_all_tests => all_tests}
|
|
286
|
-
end
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
def collect_assembly(in_hash)
|
|
290
|
-
all_assembly = @file_wrapper.instantiate_file_list
|
|
291
|
-
|
|
292
|
-
return {:collection_all_assembly => all_assembly} if (not in_hash[:release_build_use_assembly])
|
|
293
|
-
|
|
294
|
-
in_hash[:collection_paths_source].each do |path|
|
|
295
|
-
all_assembly.include( File.join(path, "*#{in_hash[:extension_assembly]}") )
|
|
296
|
-
end
|
|
297
|
-
|
|
298
|
-
@file_system_utils.revise_file_list( all_assembly, in_hash[:files_assembly] )
|
|
299
|
-
|
|
300
|
-
return {:collection_all_assembly => all_assembly}
|
|
301
|
-
end
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
def collect_source(in_hash)
|
|
305
|
-
all_source = @file_wrapper.instantiate_file_list
|
|
306
|
-
in_hash[:collection_paths_source].each do |path|
|
|
307
|
-
if File.exists?(path) and not File.directory?(path)
|
|
308
|
-
all_source.include( path )
|
|
309
|
-
else
|
|
310
|
-
all_source.include( File.join(path, "*#{in_hash[:extension_source]}") )
|
|
311
|
-
end
|
|
312
|
-
end
|
|
313
|
-
@file_system_utils.revise_file_list( all_source, in_hash[:files_source] )
|
|
314
|
-
|
|
315
|
-
return {:collection_all_source => all_source}
|
|
316
|
-
end
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
def collect_headers(in_hash)
|
|
320
|
-
all_headers = @file_wrapper.instantiate_file_list
|
|
321
|
-
|
|
322
|
-
paths =
|
|
323
|
-
in_hash[:collection_paths_test] +
|
|
324
|
-
in_hash[:collection_paths_support] +
|
|
325
|
-
in_hash[:collection_paths_source] +
|
|
326
|
-
in_hash[:collection_paths_include]
|
|
327
|
-
|
|
328
|
-
paths.each do |path|
|
|
329
|
-
all_headers.include( File.join(path, "*#{in_hash[:extension_header]}") )
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
@file_system_utils.revise_file_list( all_headers, in_hash[:files_include] )
|
|
333
|
-
|
|
334
|
-
return {:collection_all_headers => all_headers}
|
|
335
|
-
end
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
def collect_all_existing_compilation_input(in_hash)
|
|
339
|
-
all_input = @file_wrapper.instantiate_file_list
|
|
340
|
-
|
|
341
|
-
paths =
|
|
342
|
-
in_hash[:collection_paths_test] +
|
|
343
|
-
in_hash[:collection_paths_support] +
|
|
344
|
-
in_hash[:collection_paths_source] +
|
|
345
|
-
in_hash[:collection_paths_include] +
|
|
346
|
-
[FilePathUtils::form_ceedling_vendor_path(UNITY_LIB_PATH)]
|
|
347
|
-
|
|
348
|
-
paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
|
|
349
|
-
paths << FilePathUtils::form_ceedling_vendor_path(CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
|
|
350
|
-
|
|
351
|
-
paths.each do |path|
|
|
352
|
-
all_input.include( File.join(path, "*#{in_hash[:extension_header]}") )
|
|
353
|
-
if File.exists?(path) and not File.directory?(path)
|
|
354
|
-
all_input.include( path )
|
|
355
|
-
else
|
|
356
|
-
all_input.include( File.join(path, "*#{in_hash[:extension_source]}") )
|
|
357
|
-
end
|
|
358
|
-
end
|
|
359
|
-
|
|
360
|
-
@file_system_utils.revise_file_list( all_input, in_hash[:files_test] )
|
|
361
|
-
@file_system_utils.revise_file_list( all_input, in_hash[:files_support] )
|
|
362
|
-
@file_system_utils.revise_file_list( all_input, in_hash[:files_source] )
|
|
363
|
-
@file_system_utils.revise_file_list( all_input, in_hash[:files_include] )
|
|
364
|
-
# finding assembly files handled explicitly through other means
|
|
365
|
-
|
|
366
|
-
return {:collection_all_existing_compilation_input => all_input}
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
def collect_test_and_vendor_defines(in_hash)
|
|
371
|
-
test_defines = in_hash[:defines_test].clone
|
|
372
|
-
|
|
373
|
-
test_defines.concat(in_hash[:unity_defines])
|
|
374
|
-
test_defines.concat(in_hash[:cmock_defines]) if (in_hash[:project_use_mocks])
|
|
375
|
-
test_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
|
|
376
|
-
|
|
377
|
-
return {:collection_defines_test_and_vendor => test_defines}
|
|
378
|
-
end
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
def collect_release_and_vendor_defines(in_hash)
|
|
382
|
-
release_defines = in_hash[:defines_release].clone
|
|
383
|
-
|
|
384
|
-
release_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
|
|
385
|
-
|
|
386
|
-
return {:collection_defines_release_and_vendor => release_defines}
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
def collect_release_artifact_extra_link_objects(in_hash)
|
|
391
|
-
objects = []
|
|
392
|
-
|
|
393
|
-
# no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
|
|
394
|
-
objects << CEXCEPTION_C_FILE.ext( in_hash[:extension_object] ) if (in_hash[:project_use_exceptions])
|
|
395
|
-
|
|
396
|
-
return {:collection_release_artifact_extra_link_objects => objects}
|
|
397
|
-
end
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
def collect_test_fixture_extra_link_objects(in_hash)
|
|
401
|
-
# Note: Symbols passed to compiler at command line can change Unity and CException behavior / configuration;
|
|
402
|
-
# we also handle those dependencies elsewhere in compilation dependencies
|
|
403
|
-
|
|
404
|
-
objects = [UNITY_C_FILE]
|
|
405
|
-
|
|
406
|
-
# we don't include paths here because use of plugins or mixing different compilers may require different build paths
|
|
407
|
-
objects << CEXCEPTION_C_FILE if (in_hash[:project_use_exceptions])
|
|
408
|
-
objects << CMOCK_C_FILE if (in_hash[:project_use_mocks])
|
|
409
|
-
|
|
410
|
-
# if we're using mocks & a unity helper is defined & that unity helper includes a source file component (not only a header of macros),
|
|
411
|
-
# then link in the unity_helper object file too
|
|
412
|
-
if ( in_hash[:project_use_mocks] and
|
|
413
|
-
in_hash[:cmock_unity_helper] and
|
|
414
|
-
@file_wrapper.exist?(in_hash[:cmock_unity_helper].ext(in_hash[:extension_source])) )
|
|
415
|
-
objects << File.basename(in_hash[:cmock_unity_helper])
|
|
416
|
-
end
|
|
417
|
-
|
|
418
|
-
# no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
|
|
419
|
-
objects.map! { |object| object.ext(in_hash[:extension_object]) }
|
|
420
|
-
|
|
421
|
-
return { :collection_test_fixture_extra_link_objects => objects }
|
|
422
|
-
end
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
private
|
|
426
|
-
|
|
427
|
-
def get_vendor_paths(in_hash)
|
|
428
|
-
vendor_paths = []
|
|
429
|
-
vendor_paths << FilePathUtils::form_ceedling_vendor_path(UNITY_LIB_PATH)
|
|
430
|
-
vendor_paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
|
|
431
|
-
vendor_paths << FilePathUtils::form_ceedling_vendor_path(CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
|
|
432
|
-
vendor_paths << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
|
|
433
|
-
|
|
434
|
-
return vendor_paths
|
|
435
|
-
end
|
|
436
|
-
|
|
437
|
-
end
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake' # for ext() method
|
|
3
|
+
require 'ceedling/file_path_utils' # for class methods
|
|
4
|
+
require 'ceedling/defaults'
|
|
5
|
+
require 'ceedling/constants' # for Verbosity constants class & base file paths
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ConfiguratorBuilder
|
|
10
|
+
|
|
11
|
+
constructor :file_system_utils, :file_wrapper, :system_wrapper
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def build_global_constants(config)
|
|
15
|
+
config.each_pair do |key, value|
|
|
16
|
+
formatted_key = key.to_s.upcase
|
|
17
|
+
# undefine global constant if it already exists
|
|
18
|
+
Object.send(:remove_const, formatted_key.to_sym) if @system_wrapper.constants_include?(formatted_key)
|
|
19
|
+
# create global constant
|
|
20
|
+
Object.module_eval("#{formatted_key} = value")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def build_accessor_methods(config, context)
|
|
26
|
+
config.each_pair do |key, value|
|
|
27
|
+
# fill configurator object with accessor methods
|
|
28
|
+
eval("def #{key.to_s.downcase}() return @project_config_hash[:#{key.to_s}] end", context)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# create a flattened hash from the original configuration structure
|
|
34
|
+
def flattenify(config)
|
|
35
|
+
new_hash = {}
|
|
36
|
+
|
|
37
|
+
config.each_key do | parent |
|
|
38
|
+
|
|
39
|
+
# gracefully handle empty top-level entries
|
|
40
|
+
next if (config[parent].nil?)
|
|
41
|
+
|
|
42
|
+
case config[parent]
|
|
43
|
+
when Array
|
|
44
|
+
config[parent].each do |hash|
|
|
45
|
+
key = "#{parent.to_s.downcase}_#{hash.keys[0].to_s.downcase}".to_sym
|
|
46
|
+
new_hash[key] = hash[hash.keys[0]]
|
|
47
|
+
end
|
|
48
|
+
when Hash
|
|
49
|
+
config[parent].each_pair do | child, value |
|
|
50
|
+
key = "#{parent.to_s.downcase}_#{child.to_s.downcase}".to_sym
|
|
51
|
+
new_hash[key] = value
|
|
52
|
+
end
|
|
53
|
+
# handle entries with no children, only values
|
|
54
|
+
else
|
|
55
|
+
new_hash["#{parent.to_s.downcase}".to_sym] = config[parent]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
return new_hash
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def populate_defaults(config, defaults)
|
|
65
|
+
defaults.keys.sort.each do |section|
|
|
66
|
+
defaults[section].keys.sort.each do |entry|
|
|
67
|
+
config[section][entry] = defaults[section][entry].deep_clone if (config[section].nil? or config[section][entry].nil?)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def clean(in_hash)
|
|
74
|
+
# ensure that include files inserted into test runners have file extensions & proper ones at that
|
|
75
|
+
in_hash[:test_runner_includes].map!{|include| include.ext(in_hash[:extension_header])}
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def set_build_paths(in_hash)
|
|
80
|
+
out_hash = {}
|
|
81
|
+
|
|
82
|
+
project_build_artifacts_root = File.join(in_hash[:project_build_root], 'artifacts')
|
|
83
|
+
project_build_tests_root = File.join(in_hash[:project_build_root], TESTS_BASE_PATH)
|
|
84
|
+
project_build_release_root = File.join(in_hash[:project_build_root], RELEASE_BASE_PATH)
|
|
85
|
+
|
|
86
|
+
paths = [
|
|
87
|
+
[:project_build_artifacts_root, project_build_artifacts_root, true ],
|
|
88
|
+
[:project_build_tests_root, project_build_tests_root, true ],
|
|
89
|
+
[:project_build_release_root, project_build_release_root, in_hash[:project_release_build] ],
|
|
90
|
+
|
|
91
|
+
[:project_test_artifacts_path, File.join(project_build_artifacts_root, TESTS_BASE_PATH), true ],
|
|
92
|
+
[:project_test_runners_path, File.join(project_build_tests_root, 'runners'), true ],
|
|
93
|
+
[:project_test_results_path, File.join(project_build_tests_root, 'results'), true ],
|
|
94
|
+
[:project_test_build_output_path, File.join(project_build_tests_root, 'out'), true ],
|
|
95
|
+
[:project_test_build_cache_path, File.join(project_build_tests_root, 'cache'), true ],
|
|
96
|
+
[:project_test_dependencies_path, File.join(project_build_tests_root, 'dependencies'), true ],
|
|
97
|
+
|
|
98
|
+
[:project_release_artifacts_path, File.join(project_build_artifacts_root, RELEASE_BASE_PATH), in_hash[:project_release_build] ],
|
|
99
|
+
[:project_release_build_cache_path, File.join(project_build_release_root, 'cache'), in_hash[:project_release_build] ],
|
|
100
|
+
[:project_release_build_output_path, File.join(project_build_release_root, 'out'), in_hash[:project_release_build] ],
|
|
101
|
+
[:project_release_build_output_asm_path, File.join(project_build_release_root, 'out', 'asm'), in_hash[:project_release_build] ],
|
|
102
|
+
[:project_release_build_output_c_path, File.join(project_build_release_root, 'out', 'c'), in_hash[:project_release_build] ],
|
|
103
|
+
[:project_release_dependencies_path, File.join(project_build_release_root, 'dependencies'), in_hash[:project_release_build] ],
|
|
104
|
+
|
|
105
|
+
[:project_log_path, File.join(in_hash[:project_build_root], 'logs'), true ],
|
|
106
|
+
[:project_temp_path, File.join(in_hash[:project_build_root], 'temp'), true ],
|
|
107
|
+
|
|
108
|
+
[:project_test_preprocess_includes_path, File.join(project_build_tests_root, 'preprocess/includes'), in_hash[:project_use_test_preprocessor] ],
|
|
109
|
+
[:project_test_preprocess_files_path, File.join(project_build_tests_root, 'preprocess/files'), in_hash[:project_use_test_preprocessor] ],
|
|
110
|
+
]
|
|
111
|
+
|
|
112
|
+
out_hash[:project_build_paths] = []
|
|
113
|
+
|
|
114
|
+
# fetch already set mock path
|
|
115
|
+
out_hash[:project_build_paths] << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
|
|
116
|
+
|
|
117
|
+
paths.each do |path|
|
|
118
|
+
build_path_name = path[0]
|
|
119
|
+
build_path = path[1]
|
|
120
|
+
build_path_add_condition = path[2]
|
|
121
|
+
|
|
122
|
+
# insert path into build paths if associated with true condition
|
|
123
|
+
out_hash[:project_build_paths] << build_path if build_path_add_condition
|
|
124
|
+
# set path symbol name and path for each entry in paths array
|
|
125
|
+
out_hash[build_path_name] = build_path
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
return out_hash
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def set_force_build_filepaths(in_hash)
|
|
133
|
+
out_hash = {}
|
|
134
|
+
|
|
135
|
+
out_hash[:project_test_force_rebuild_filepath] = File.join( in_hash[:project_test_dependencies_path], 'force_build' )
|
|
136
|
+
out_hash[:project_release_force_rebuild_filepath] = File.join( in_hash[:project_release_dependencies_path], 'force_build' ) if (in_hash[:project_release_build])
|
|
137
|
+
|
|
138
|
+
return out_hash
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def set_rakefile_components(in_hash)
|
|
143
|
+
out_hash = {
|
|
144
|
+
:project_rakefile_component_files =>
|
|
145
|
+
[File.join(CEEDLING_LIB, 'ceedling', 'tasks_base.rake'),
|
|
146
|
+
File.join(CEEDLING_LIB, 'ceedling', 'tasks_filesystem.rake'),
|
|
147
|
+
File.join(CEEDLING_LIB, 'ceedling', 'tasks_tests.rake'),
|
|
148
|
+
File.join(CEEDLING_LIB, 'ceedling', 'tasks_vendor.rake'),
|
|
149
|
+
File.join(CEEDLING_LIB, 'ceedling', 'rules_tests.rake')]}
|
|
150
|
+
|
|
151
|
+
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_cmock.rake') if (in_hash[:project_use_mocks])
|
|
152
|
+
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_preprocess.rake') if (in_hash[:project_use_test_preprocessor])
|
|
153
|
+
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
|
|
154
|
+
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
|
|
155
|
+
|
|
156
|
+
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
|
|
157
|
+
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_release.rake') if (in_hash[:project_release_build])
|
|
158
|
+
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
|
|
159
|
+
out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_release.rake') if (in_hash[:project_release_build])
|
|
160
|
+
|
|
161
|
+
return out_hash
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def set_library_build_info_filepaths(hash)
|
|
166
|
+
|
|
167
|
+
# Notes:
|
|
168
|
+
# - Dependency on a change to our input configuration hash is handled elsewhere as it is
|
|
169
|
+
# dynamically formed during ceedling's execution
|
|
170
|
+
# - Compiled vendor dependencies like cmock.o, unity.o, cexception.o are handled below;
|
|
171
|
+
# here we're interested only in ceedling-based code generation dependencies
|
|
172
|
+
|
|
173
|
+
ceedling_build_info_filepath = File.join(CEEDLING_RELEASE, 'build.info')
|
|
174
|
+
cmock_build_info_filepath = FilePathUtils::form_ceedling_vendor_path('cmock/release', 'build.info')
|
|
175
|
+
|
|
176
|
+
out_hash = {
|
|
177
|
+
:ceedling_build_info_filepath => ceedling_build_info_filepath,
|
|
178
|
+
:cmock_build_info_filepath => cmock_build_info_filepath
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return out_hash
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def set_release_target(in_hash)
|
|
186
|
+
return {} if (not in_hash[:project_release_build])
|
|
187
|
+
|
|
188
|
+
release_target_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_executable])) : in_hash[:release_build_output])
|
|
189
|
+
release_map_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_map])) : in_hash[:release_build_output].ext(in_hash[:extension_map]))
|
|
190
|
+
|
|
191
|
+
return {
|
|
192
|
+
# tempted to make a helper method in file_path_utils? stop right there, pal. you'll introduce a cyclical dependency
|
|
193
|
+
:project_release_build_target => File.join(in_hash[:project_build_release_root], release_target_file),
|
|
194
|
+
:project_release_build_map => File.join(in_hash[:project_build_release_root], release_map_file)
|
|
195
|
+
}
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def collect_project_options(in_hash)
|
|
200
|
+
options = []
|
|
201
|
+
|
|
202
|
+
in_hash[:project_options_paths].each do |path|
|
|
203
|
+
options << @file_wrapper.directory_listing( File.join(path, '*.yml') )
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
return {
|
|
207
|
+
:collection_project_options => options.flatten
|
|
208
|
+
}
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
def expand_all_path_globs(in_hash)
|
|
213
|
+
out_hash = {}
|
|
214
|
+
path_keys = []
|
|
215
|
+
|
|
216
|
+
in_hash.each_key do |key|
|
|
217
|
+
next if (not key.to_s[0..4] == 'paths')
|
|
218
|
+
path_keys << key
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# sorted to provide assured order of traversal in test calls on mocks
|
|
222
|
+
path_keys.sort.each do |key|
|
|
223
|
+
out_hash["collection_#{key.to_s}".to_sym] = @file_system_utils.collect_paths( in_hash[key] )
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
return out_hash
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def collect_source_and_include_paths(in_hash)
|
|
231
|
+
return {
|
|
232
|
+
:collection_paths_source_and_include =>
|
|
233
|
+
( in_hash[:collection_paths_source] +
|
|
234
|
+
in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
|
|
235
|
+
}
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def collect_source_include_vendor_paths(in_hash)
|
|
240
|
+
extra_paths = []
|
|
241
|
+
extra_paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
|
|
242
|
+
|
|
243
|
+
return {
|
|
244
|
+
:collection_paths_source_include_vendor =>
|
|
245
|
+
in_hash[:collection_paths_source_and_include] +
|
|
246
|
+
extra_paths
|
|
247
|
+
}
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
def collect_test_support_source_include_paths(in_hash)
|
|
252
|
+
return {
|
|
253
|
+
:collection_paths_test_support_source_include =>
|
|
254
|
+
(in_hash[:collection_paths_test] +
|
|
255
|
+
in_hash[:collection_paths_support] +
|
|
256
|
+
in_hash[:collection_paths_source] +
|
|
257
|
+
in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
|
|
258
|
+
}
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def collect_vendor_paths(in_hash)
|
|
263
|
+
return {:collection_paths_vendor => get_vendor_paths(in_hash)}
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
def collect_test_support_source_include_vendor_paths(in_hash)
|
|
268
|
+
return {
|
|
269
|
+
:collection_paths_test_support_source_include_vendor =>
|
|
270
|
+
in_hash[:collection_paths_test_support_source_include] +
|
|
271
|
+
get_vendor_paths(in_hash)
|
|
272
|
+
}
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def collect_tests(in_hash)
|
|
277
|
+
all_tests = @file_wrapper.instantiate_file_list
|
|
278
|
+
|
|
279
|
+
in_hash[:collection_paths_test].each do |path|
|
|
280
|
+
all_tests.include( File.join(path, "#{in_hash[:project_test_file_prefix]}*#{in_hash[:extension_source]}") )
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
@file_system_utils.revise_file_list( all_tests, in_hash[:files_test] )
|
|
284
|
+
|
|
285
|
+
return {:collection_all_tests => all_tests}
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
def collect_assembly(in_hash)
|
|
290
|
+
all_assembly = @file_wrapper.instantiate_file_list
|
|
291
|
+
|
|
292
|
+
return {:collection_all_assembly => all_assembly} if (not in_hash[:release_build_use_assembly])
|
|
293
|
+
|
|
294
|
+
in_hash[:collection_paths_source].each do |path|
|
|
295
|
+
all_assembly.include( File.join(path, "*#{in_hash[:extension_assembly]}") )
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
@file_system_utils.revise_file_list( all_assembly, in_hash[:files_assembly] )
|
|
299
|
+
|
|
300
|
+
return {:collection_all_assembly => all_assembly}
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
def collect_source(in_hash)
|
|
305
|
+
all_source = @file_wrapper.instantiate_file_list
|
|
306
|
+
in_hash[:collection_paths_source].each do |path|
|
|
307
|
+
if File.exists?(path) and not File.directory?(path)
|
|
308
|
+
all_source.include( path )
|
|
309
|
+
else
|
|
310
|
+
all_source.include( File.join(path, "*#{in_hash[:extension_source]}") )
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
@file_system_utils.revise_file_list( all_source, in_hash[:files_source] )
|
|
314
|
+
|
|
315
|
+
return {:collection_all_source => all_source}
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
def collect_headers(in_hash)
|
|
320
|
+
all_headers = @file_wrapper.instantiate_file_list
|
|
321
|
+
|
|
322
|
+
paths =
|
|
323
|
+
in_hash[:collection_paths_test] +
|
|
324
|
+
in_hash[:collection_paths_support] +
|
|
325
|
+
in_hash[:collection_paths_source] +
|
|
326
|
+
in_hash[:collection_paths_include]
|
|
327
|
+
|
|
328
|
+
paths.each do |path|
|
|
329
|
+
all_headers.include( File.join(path, "*#{in_hash[:extension_header]}") )
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
@file_system_utils.revise_file_list( all_headers, in_hash[:files_include] )
|
|
333
|
+
|
|
334
|
+
return {:collection_all_headers => all_headers}
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
def collect_all_existing_compilation_input(in_hash)
|
|
339
|
+
all_input = @file_wrapper.instantiate_file_list
|
|
340
|
+
|
|
341
|
+
paths =
|
|
342
|
+
in_hash[:collection_paths_test] +
|
|
343
|
+
in_hash[:collection_paths_support] +
|
|
344
|
+
in_hash[:collection_paths_source] +
|
|
345
|
+
in_hash[:collection_paths_include] +
|
|
346
|
+
[FilePathUtils::form_ceedling_vendor_path(UNITY_LIB_PATH)]
|
|
347
|
+
|
|
348
|
+
paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
|
|
349
|
+
paths << FilePathUtils::form_ceedling_vendor_path(CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
|
|
350
|
+
|
|
351
|
+
paths.each do |path|
|
|
352
|
+
all_input.include( File.join(path, "*#{in_hash[:extension_header]}") )
|
|
353
|
+
if File.exists?(path) and not File.directory?(path)
|
|
354
|
+
all_input.include( path )
|
|
355
|
+
else
|
|
356
|
+
all_input.include( File.join(path, "*#{in_hash[:extension_source]}") )
|
|
357
|
+
end
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
@file_system_utils.revise_file_list( all_input, in_hash[:files_test] )
|
|
361
|
+
@file_system_utils.revise_file_list( all_input, in_hash[:files_support] )
|
|
362
|
+
@file_system_utils.revise_file_list( all_input, in_hash[:files_source] )
|
|
363
|
+
@file_system_utils.revise_file_list( all_input, in_hash[:files_include] )
|
|
364
|
+
# finding assembly files handled explicitly through other means
|
|
365
|
+
|
|
366
|
+
return {:collection_all_existing_compilation_input => all_input}
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
def collect_test_and_vendor_defines(in_hash)
|
|
371
|
+
test_defines = in_hash[:defines_test].clone
|
|
372
|
+
|
|
373
|
+
test_defines.concat(in_hash[:unity_defines])
|
|
374
|
+
test_defines.concat(in_hash[:cmock_defines]) if (in_hash[:project_use_mocks])
|
|
375
|
+
test_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
|
|
376
|
+
|
|
377
|
+
return {:collection_defines_test_and_vendor => test_defines}
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
def collect_release_and_vendor_defines(in_hash)
|
|
382
|
+
release_defines = in_hash[:defines_release].clone
|
|
383
|
+
|
|
384
|
+
release_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
|
|
385
|
+
|
|
386
|
+
return {:collection_defines_release_and_vendor => release_defines}
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
def collect_release_artifact_extra_link_objects(in_hash)
|
|
391
|
+
objects = []
|
|
392
|
+
|
|
393
|
+
# no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
|
|
394
|
+
objects << CEXCEPTION_C_FILE.ext( in_hash[:extension_object] ) if (in_hash[:project_use_exceptions])
|
|
395
|
+
|
|
396
|
+
return {:collection_release_artifact_extra_link_objects => objects}
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
def collect_test_fixture_extra_link_objects(in_hash)
|
|
401
|
+
# Note: Symbols passed to compiler at command line can change Unity and CException behavior / configuration;
|
|
402
|
+
# we also handle those dependencies elsewhere in compilation dependencies
|
|
403
|
+
|
|
404
|
+
objects = [UNITY_C_FILE]
|
|
405
|
+
|
|
406
|
+
# we don't include paths here because use of plugins or mixing different compilers may require different build paths
|
|
407
|
+
objects << CEXCEPTION_C_FILE if (in_hash[:project_use_exceptions])
|
|
408
|
+
objects << CMOCK_C_FILE if (in_hash[:project_use_mocks])
|
|
409
|
+
|
|
410
|
+
# if we're using mocks & a unity helper is defined & that unity helper includes a source file component (not only a header of macros),
|
|
411
|
+
# then link in the unity_helper object file too
|
|
412
|
+
if ( in_hash[:project_use_mocks] and
|
|
413
|
+
in_hash[:cmock_unity_helper] and
|
|
414
|
+
@file_wrapper.exist?(in_hash[:cmock_unity_helper].ext(in_hash[:extension_source])) )
|
|
415
|
+
objects << File.basename(in_hash[:cmock_unity_helper])
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
# no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
|
|
419
|
+
objects.map! { |object| object.ext(in_hash[:extension_object]) }
|
|
420
|
+
|
|
421
|
+
return { :collection_test_fixture_extra_link_objects => objects }
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
private
|
|
426
|
+
|
|
427
|
+
def get_vendor_paths(in_hash)
|
|
428
|
+
vendor_paths = []
|
|
429
|
+
vendor_paths << FilePathUtils::form_ceedling_vendor_path(UNITY_LIB_PATH)
|
|
430
|
+
vendor_paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
|
|
431
|
+
vendor_paths << FilePathUtils::form_ceedling_vendor_path(CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
|
|
432
|
+
vendor_paths << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
|
|
433
|
+
|
|
434
|
+
return vendor_paths
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
end
|