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,40 +1,40 @@
|
|
|
1
|
-
require 'constants'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class GeneratorHelper
|
|
5
|
-
|
|
6
|
-
constructor :streaminator
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def test_results_error_handler(executable, shell_result)
|
|
10
|
-
notice = ''
|
|
11
|
-
error = false
|
|
12
|
-
|
|
13
|
-
if (shell_result[:output].nil? or shell_result[:output].strip.empty?)
|
|
14
|
-
error = true
|
|
15
|
-
# mirror style of generic tool_executor failure output
|
|
16
|
-
notice = "\n" +
|
|
17
|
-
"ERROR: Test executable \"#{File.basename(executable)}\" failed.\n" +
|
|
18
|
-
"> Produced no output to $stdout.\n"
|
|
19
|
-
elsif ((shell_result[:output] =~ TEST_STDOUT_STATISTICS_PATTERN).nil?)
|
|
20
|
-
error = true
|
|
21
|
-
# mirror style of generic tool_executor failure output
|
|
22
|
-
notice = "\n" +
|
|
23
|
-
"ERROR: Test executable \"#{File.basename(executable)}\" failed.\n" +
|
|
24
|
-
"> Produced no final test result counts in $stdout:\n" +
|
|
25
|
-
"#{shell_result[:output].strip}\n"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
if (error)
|
|
29
|
-
# since we told the tool executor to ignore the exit code, handle it explicitly here
|
|
30
|
-
notice += "> And exited with status: [#{shell_result[:exit_code]}] (count of failed tests).\n" if (shell_result[:exit_code] != nil)
|
|
31
|
-
notice += "> And then likely crashed.\n" if (shell_result[:exit_code] == nil)
|
|
32
|
-
|
|
33
|
-
notice += "> This is often a symptom of a bad memory access in source or test code.\n\n"
|
|
34
|
-
|
|
35
|
-
@streaminator.stderr_puts(notice, Verbosity::COMPLAIN)
|
|
36
|
-
raise
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
end
|
|
1
|
+
require 'ceedling/constants'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class GeneratorHelper
|
|
5
|
+
|
|
6
|
+
constructor :streaminator
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_results_error_handler(executable, shell_result)
|
|
10
|
+
notice = ''
|
|
11
|
+
error = false
|
|
12
|
+
|
|
13
|
+
if (shell_result[:output].nil? or shell_result[:output].strip.empty?)
|
|
14
|
+
error = true
|
|
15
|
+
# mirror style of generic tool_executor failure output
|
|
16
|
+
notice = "\n" +
|
|
17
|
+
"ERROR: Test executable \"#{File.basename(executable)}\" failed.\n" +
|
|
18
|
+
"> Produced no output to $stdout.\n"
|
|
19
|
+
elsif ((shell_result[:output] =~ TEST_STDOUT_STATISTICS_PATTERN).nil?)
|
|
20
|
+
error = true
|
|
21
|
+
# mirror style of generic tool_executor failure output
|
|
22
|
+
notice = "\n" +
|
|
23
|
+
"ERROR: Test executable \"#{File.basename(executable)}\" failed.\n" +
|
|
24
|
+
"> Produced no final test result counts in $stdout:\n" +
|
|
25
|
+
"#{shell_result[:output].strip}\n"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
if (error)
|
|
29
|
+
# since we told the tool executor to ignore the exit code, handle it explicitly here
|
|
30
|
+
notice += "> And exited with status: [#{shell_result[:exit_code]}] (count of failed tests).\n" if (shell_result[:exit_code] != nil)
|
|
31
|
+
notice += "> And then likely crashed.\n" if (shell_result[:exit_code] == nil)
|
|
32
|
+
|
|
33
|
+
notice += "> This is often a symptom of a bad memory access in source or test code.\n\n"
|
|
34
|
+
|
|
35
|
+
@streaminator.stderr_puts(notice, Verbosity::COMPLAIN)
|
|
36
|
+
raise
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
@@ -1,89 +1,86 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
require 'rake' # for .ext()
|
|
3
|
-
require 'constants'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class GeneratorTestResults
|
|
7
|
-
|
|
8
|
-
constructor :configurator, :generator_test_results_sanity_checker, :yaml_wrapper
|
|
9
|
-
|
|
10
|
-
def process_and_write_results(unity_shell_result, results_file, test_file)
|
|
11
|
-
output_file = results_file
|
|
12
|
-
|
|
13
|
-
results = get_results_structure
|
|
14
|
-
|
|
15
|
-
results[:source][:path] = File.dirname(test_file)
|
|
16
|
-
results[:source][:file] = File.basename(test_file)
|
|
17
|
-
|
|
18
|
-
# process test statistics
|
|
19
|
-
if (unity_shell_result[:output] =~ TEST_STDOUT_STATISTICS_PATTERN)
|
|
20
|
-
results[:counts][:total] = $1.to_i
|
|
21
|
-
results[:counts][:failed] = $2.to_i
|
|
22
|
-
results[:counts][:ignored] = $3.to_i
|
|
23
|
-
results[:counts][:passed] = (results[:counts][:total] - results[:counts][:failed] - results[:counts][:ignored])
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# remove test statistics lines
|
|
27
|
-
output_string = unity_shell_result[:output].sub(TEST_STDOUT_STATISTICS_PATTERN, '')
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
results[:
|
|
38
|
-
results[:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
results[:
|
|
42
|
-
results[:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
results[:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
:
|
|
66
|
-
:
|
|
67
|
-
:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
end
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake' # for .ext()
|
|
3
|
+
require 'ceedling/constants'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GeneratorTestResults
|
|
7
|
+
|
|
8
|
+
constructor :configurator, :generator_test_results_sanity_checker, :yaml_wrapper
|
|
9
|
+
|
|
10
|
+
def process_and_write_results(unity_shell_result, results_file, test_file)
|
|
11
|
+
output_file = results_file
|
|
12
|
+
|
|
13
|
+
results = get_results_structure
|
|
14
|
+
|
|
15
|
+
results[:source][:path] = File.dirname(test_file)
|
|
16
|
+
results[:source][:file] = File.basename(test_file)
|
|
17
|
+
|
|
18
|
+
# process test statistics
|
|
19
|
+
if (unity_shell_result[:output] =~ TEST_STDOUT_STATISTICS_PATTERN)
|
|
20
|
+
results[:counts][:total] = $1.to_i
|
|
21
|
+
results[:counts][:failed] = $2.to_i
|
|
22
|
+
results[:counts][:ignored] = $3.to_i
|
|
23
|
+
results[:counts][:passed] = (results[:counts][:total] - results[:counts][:failed] - results[:counts][:ignored])
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# remove test statistics lines
|
|
27
|
+
output_string = unity_shell_result[:output].sub(TEST_STDOUT_STATISTICS_PATTERN, '')
|
|
28
|
+
|
|
29
|
+
output_string.lines do |line|
|
|
30
|
+
# process unity output
|
|
31
|
+
case line
|
|
32
|
+
when /(:IGNORE)/
|
|
33
|
+
elements = extract_line_elements(line, results[:source][:file])
|
|
34
|
+
results[:ignores] << elements[0]
|
|
35
|
+
results[:stdout] << elements[1] if (!elements[1].nil?)
|
|
36
|
+
when /(:PASS$)/
|
|
37
|
+
elements = extract_line_elements(line, results[:source][:file])
|
|
38
|
+
results[:successes] << elements[0]
|
|
39
|
+
results[:stdout] << elements[1] if (!elements[1].nil?)
|
|
40
|
+
when /(:FAIL)/
|
|
41
|
+
elements = extract_line_elements(line, results[:source][:file])
|
|
42
|
+
results[:failures] << elements[0]
|
|
43
|
+
results[:stdout] << elements[1] if (!elements[1].nil?)
|
|
44
|
+
else # collect up all other
|
|
45
|
+
results[:stdout] << line.chomp
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
@generator_test_results_sanity_checker.verify(results, unity_shell_result[:exit_code])
|
|
50
|
+
|
|
51
|
+
output_file = results_file.ext(@configurator.extension_testfail) if (results[:counts][:failed] > 0)
|
|
52
|
+
|
|
53
|
+
@yaml_wrapper.dump(output_file, results)
|
|
54
|
+
|
|
55
|
+
return { :result_file => output_file, :result => results }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
def get_results_structure
|
|
61
|
+
return {
|
|
62
|
+
:source => {:path => '', :file => ''},
|
|
63
|
+
:successes => [],
|
|
64
|
+
:failures => [],
|
|
65
|
+
:ignores => [],
|
|
66
|
+
:counts => {:total => 0, :passed => 0, :failed => 0, :ignored => 0},
|
|
67
|
+
:stdout => [],
|
|
68
|
+
}
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def extract_line_elements(line, filename)
|
|
72
|
+
# handle anything preceding filename in line as extra output to be collected
|
|
73
|
+
stdout = nil
|
|
74
|
+
stdout_regex = /(.+)#{Regexp.escape(filename)}.+/i
|
|
75
|
+
|
|
76
|
+
if (line =~ stdout_regex)
|
|
77
|
+
stdout = $1.clone
|
|
78
|
+
line.sub!(/#{Regexp.escape(stdout)}/, '')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# collect up test results minus and extra output
|
|
82
|
+
elements = (line.strip.split(':'))[1..-1]
|
|
83
|
+
return {:test => elements[1], :line => elements[0].to_i, :message => (elements[3..-1].join(':')).strip}, stdout
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end
|
|
@@ -1,62 +1,64 @@
|
|
|
1
|
-
require '
|
|
2
|
-
require '
|
|
3
|
-
require '
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class GeneratorTestResultsSanityChecker
|
|
7
|
-
|
|
8
|
-
constructor :configurator, :streaminator
|
|
9
|
-
|
|
10
|
-
def verify(results, unity_exit_code)
|
|
11
|
-
|
|
12
|
-
# do no sanity checking if it's disabled
|
|
13
|
-
return if (@configurator.sanity_checks == TestResultsSanityChecks::NONE)
|
|
14
|
-
|
|
15
|
-
ceedling_ignores_count = results[:ignores].size
|
|
16
|
-
ceedling_failures_count = results[:failures].size
|
|
17
|
-
ceedling_tests_summation = (ceedling_ignores_count + ceedling_failures_count + results[:successes].size)
|
|
18
|
-
|
|
19
|
-
# Exit code handling is not a sanity check that can always be performed because
|
|
20
|
-
# command line simulators may or may not pass through Unity's exit code
|
|
21
|
-
if (@configurator.sanity_checks >= TestResultsSanityChecks::THOROUGH)
|
|
22
|
-
# many platforms limit exit codes to a maximum of 255
|
|
23
|
-
if ((ceedling_failures_count != unity_exit_code) and (unity_exit_code < 255))
|
|
24
|
-
sanity_check_warning(results[:source][:file], "Unity's exit code (#{unity_exit_code}) does not match Ceedling's summation of failed test cases (#{ceedling_failures_count}).")
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
if ((ceedling_failures_count < 255) and (unity_exit_code == 255))
|
|
28
|
-
sanity_check_warning(results[:source][:file], "Ceedling's summation of failed test cases (#{ceedling_failures_count}) is less than Unity's exit code (255 or more).")
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
if (ceedling_ignores_count != results[:counts][:ignored])
|
|
33
|
-
sanity_check_warning(results[:source][:file], "Unity's final ignore count (#{results[:counts][:ignored]}) does not match Ceedling's summation of ignored test cases (#{ceedling_ignores_count}).")
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
if (ceedling_failures_count != results[:counts][:failed])
|
|
37
|
-
sanity_check_warning(results[:source][:file], "Unity's final fail count (#{results[:counts][:failed]}) does not match Ceedling's summation of failed test cases (#{ceedling_failures_count}).")
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
if (ceedling_tests_summation != results[:counts][:total])
|
|
41
|
-
sanity_check_warning(results[:source][:file], "Unity's final test count (#{results[:counts][:total]}) does not match Ceedling's summation of all test cases (#{ceedling_tests_summation}).")
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
private
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
end
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake' # for ext() method
|
|
3
|
+
require 'ceedling/constants'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GeneratorTestResultsSanityChecker
|
|
7
|
+
|
|
8
|
+
constructor :configurator, :streaminator
|
|
9
|
+
|
|
10
|
+
def verify(results, unity_exit_code)
|
|
11
|
+
|
|
12
|
+
# do no sanity checking if it's disabled
|
|
13
|
+
return if (@configurator.sanity_checks == TestResultsSanityChecks::NONE)
|
|
14
|
+
|
|
15
|
+
ceedling_ignores_count = results[:ignores].size
|
|
16
|
+
ceedling_failures_count = results[:failures].size
|
|
17
|
+
ceedling_tests_summation = (ceedling_ignores_count + ceedling_failures_count + results[:successes].size)
|
|
18
|
+
|
|
19
|
+
# Exit code handling is not a sanity check that can always be performed because
|
|
20
|
+
# command line simulators may or may not pass through Unity's exit code
|
|
21
|
+
if (@configurator.sanity_checks >= TestResultsSanityChecks::THOROUGH)
|
|
22
|
+
# many platforms limit exit codes to a maximum of 255
|
|
23
|
+
if ((ceedling_failures_count != unity_exit_code) and (unity_exit_code < 255))
|
|
24
|
+
sanity_check_warning(results[:source][:file], "Unity's exit code (#{unity_exit_code}) does not match Ceedling's summation of failed test cases (#{ceedling_failures_count}).")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
if ((ceedling_failures_count < 255) and (unity_exit_code == 255))
|
|
28
|
+
sanity_check_warning(results[:source][:file], "Ceedling's summation of failed test cases (#{ceedling_failures_count}) is less than Unity's exit code (255 or more).")
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
if (ceedling_ignores_count != results[:counts][:ignored])
|
|
33
|
+
sanity_check_warning(results[:source][:file], "Unity's final ignore count (#{results[:counts][:ignored]}) does not match Ceedling's summation of ignored test cases (#{ceedling_ignores_count}).")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
if (ceedling_failures_count != results[:counts][:failed])
|
|
37
|
+
sanity_check_warning(results[:source][:file], "Unity's final fail count (#{results[:counts][:failed]}) does not match Ceedling's summation of failed test cases (#{ceedling_failures_count}).")
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
if (ceedling_tests_summation != results[:counts][:total])
|
|
41
|
+
sanity_check_warning(results[:source][:file], "Unity's final test count (#{results[:counts][:total]}) does not match Ceedling's summation of all test cases (#{ceedling_tests_summation}).")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def sanity_check_warning(file, message)
|
|
49
|
+
unless defined?(CEEDLING_IGNORE_SANITY_CHECK)
|
|
50
|
+
notice = "\n" +
|
|
51
|
+
"ERROR: Internal sanity check for test fixture '#{file.ext(@configurator.extension_executable)}' finds that #{message}\n" +
|
|
52
|
+
" Possible causes:\n" +
|
|
53
|
+
" 1. Your test + source dereferenced a null pointer.\n" +
|
|
54
|
+
" 2. Your test + source indexed past the end of a buffer.\n" +
|
|
55
|
+
" 3. Your test + source committed a memory access violation.\n" +
|
|
56
|
+
" 4. Your test fixture produced an exit code of 0 despite execution ending prematurely.\n" +
|
|
57
|
+
" Sanity check failures of test results are usually a symptom of interrupted test execution.\n\n"
|
|
58
|
+
|
|
59
|
+
@streaminator.stderr_puts( notice )
|
|
60
|
+
raise
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
class GeneratorTestRunner
|
|
3
|
-
|
|
4
|
-
constructor :configurator, :file_path_utils, :file_wrapper
|
|
5
|
-
|
|
6
|
-
def find_test_cases(test_file)
|
|
7
|
-
tests = []
|
|
8
|
-
tests_and_line_numbers = []
|
|
9
|
-
lines = []
|
|
10
|
-
|
|
11
|
-
# if we don't have preprocessor assistance, do some basic preprocessing of our own
|
|
12
|
-
if (not @configurator.project_use_test_preprocessor)
|
|
13
|
-
source = @file_wrapper.read(test_file)
|
|
14
|
-
|
|
15
|
-
# remove line comments
|
|
16
|
-
source = source.gsub(/\/\/.*$/, '')
|
|
17
|
-
# remove block comments
|
|
18
|
-
source = source.gsub(/\/\*.*?\*\//m, '')
|
|
19
|
-
|
|
20
|
-
# treat preprocessor directives as a logical line
|
|
21
|
-
lines = source.split(/(^\s*\#.*$) | (;|\{|\}) /x) # match ;, {, and } as end of lines
|
|
22
|
-
# otherwise, read the preprocessed file raw
|
|
23
|
-
else
|
|
24
|
-
lines = @file_wrapper.read( @file_path_utils.form_preprocessed_file_filepath(test_file) ).split(/;|\{|\}/)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# step 1. find test functions in (possibly preprocessed) file
|
|
28
|
-
# (note that lines are not broken up at end of lines)
|
|
29
|
-
lines.each do |line|
|
|
30
|
-
if (line =~ /^\s*void\s+((T|t)est.*)\s*\(\s*(void)?\s*\)/m)
|
|
31
|
-
tests << ($1.strip)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# step 2. associate test functions with line numbers in (non-preprocessed) original file
|
|
36
|
-
# (note that this time we must scan file contents broken up by end of lines)
|
|
37
|
-
raw_lines = @file_wrapper.read(test_file).split("\n")
|
|
38
|
-
raw_index = 0
|
|
39
|
-
|
|
40
|
-
tests.each do |test|
|
|
41
|
-
raw_lines[raw_index..-1].each_with_index do |line, index|
|
|
42
|
-
# test function might be declared across lines; look for it by its name followed
|
|
43
|
-
# by a few tell-tale signs
|
|
44
|
-
if (line =~ /#{test}\s*($|\(|\()/)
|
|
45
|
-
raw_index += (index + 1)
|
|
46
|
-
tests_and_line_numbers << {:test => test, :line_number => raw_index}
|
|
47
|
-
break
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
return tests_and_line_numbers
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def generate(module_name, runner_filepath, test_cases, mock_list)
|
|
56
|
-
require 'generate_test_runner.rb'
|
|
57
|
-
@test_runner_generator ||= UnityTestRunnerGenerator.new( @configurator.get_runner_config )
|
|
58
|
-
@test_runner_generator.generate( module_name,
|
|
59
|
-
runner_filepath,
|
|
60
|
-
test_cases,
|
|
61
|
-
mock_list)
|
|
62
|
-
end
|
|
63
|
-
end
|
|
1
|
+
|
|
2
|
+
class GeneratorTestRunner
|
|
3
|
+
|
|
4
|
+
constructor :configurator, :file_path_utils, :file_wrapper
|
|
5
|
+
|
|
6
|
+
def find_test_cases(test_file)
|
|
7
|
+
tests = []
|
|
8
|
+
tests_and_line_numbers = []
|
|
9
|
+
lines = []
|
|
10
|
+
|
|
11
|
+
# if we don't have preprocessor assistance, do some basic preprocessing of our own
|
|
12
|
+
if (not @configurator.project_use_test_preprocessor)
|
|
13
|
+
source = @file_wrapper.read(test_file)
|
|
14
|
+
|
|
15
|
+
# remove line comments
|
|
16
|
+
source = source.gsub(/\/\/.*$/, '')
|
|
17
|
+
# remove block comments
|
|
18
|
+
source = source.gsub(/\/\*.*?\*\//m, '')
|
|
19
|
+
|
|
20
|
+
# treat preprocessor directives as a logical line
|
|
21
|
+
lines = source.split(/(^\s*\#.*$) | (;|\{|\}) /x) # match ;, {, and } as end of lines
|
|
22
|
+
# otherwise, read the preprocessed file raw
|
|
23
|
+
else
|
|
24
|
+
lines = @file_wrapper.read( @file_path_utils.form_preprocessed_file_filepath(test_file) ).split(/;|\{|\}/)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# step 1. find test functions in (possibly preprocessed) file
|
|
28
|
+
# (note that lines are not broken up at end of lines)
|
|
29
|
+
lines.each do |line|
|
|
30
|
+
if (line =~ /^\s*void\s+((T|t)est.*)\s*\(\s*(void)?\s*\)/m)
|
|
31
|
+
tests << ($1.strip)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# step 2. associate test functions with line numbers in (non-preprocessed) original file
|
|
36
|
+
# (note that this time we must scan file contents broken up by end of lines)
|
|
37
|
+
raw_lines = @file_wrapper.read(test_file).split("\n")
|
|
38
|
+
raw_index = 0
|
|
39
|
+
|
|
40
|
+
tests.each do |test|
|
|
41
|
+
raw_lines[raw_index..-1].each_with_index do |line, index|
|
|
42
|
+
# test function might be declared across lines; look for it by its name followed
|
|
43
|
+
# by a few tell-tale signs
|
|
44
|
+
if (line =~ /#{test}\s*($|\(|\()/)
|
|
45
|
+
raw_index += (index + 1)
|
|
46
|
+
tests_and_line_numbers << {:test => test, :line_number => raw_index}
|
|
47
|
+
break
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
return tests_and_line_numbers
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def generate(module_name, runner_filepath, test_cases, mock_list)
|
|
56
|
+
require 'generate_test_runner.rb'
|
|
57
|
+
@test_runner_generator ||= UnityTestRunnerGenerator.new( @configurator.get_runner_config )
|
|
58
|
+
@test_runner_generator.generate( module_name,
|
|
59
|
+
runner_filepath,
|
|
60
|
+
test_cases,
|
|
61
|
+
mock_list)
|
|
62
|
+
end
|
|
63
|
+
end
|