ceedling 0.19.0 → 0.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +10 -10
- data/bin/ceedling +205 -92
- data/ceedling-0.19.0.gem +0 -0
- data/config/test_environment.rb +12 -12
- data/docs/CeedlingPacket.md +866 -853
- data/docs/CeedlingPacket.odt +0 -0
- data/docs/CeedlingPacket.pdf +0 -0
- data/examples/temp_sensor/rakefile.rb +4 -4
- data/examples/temp_sensor/src/AdcConductor.c +42 -42
- data/examples/temp_sensor/src/AdcConductor.h +13 -13
- data/examples/temp_sensor/src/AdcHardware.c +27 -27
- data/examples/temp_sensor/src/AdcHardware.h +11 -11
- data/examples/temp_sensor/src/AdcHardwareConfigurator.c +18 -18
- data/examples/temp_sensor/src/AdcHardwareConfigurator.h +10 -10
- data/examples/temp_sensor/src/AdcModel.c +33 -33
- data/examples/temp_sensor/src/AdcModel.h +13 -13
- data/examples/temp_sensor/src/AdcTemperatureSensor.c +51 -51
- data/examples/temp_sensor/src/AdcTemperatureSensor.h +10 -10
- data/examples/temp_sensor/src/Executor.c +25 -25
- data/examples/temp_sensor/src/Executor.h +9 -9
- data/examples/temp_sensor/src/IntrinsicsWrapper.c +18 -18
- data/examples/temp_sensor/src/IntrinsicsWrapper.h +7 -7
- data/examples/temp_sensor/src/Main.c +46 -46
- data/examples/temp_sensor/src/Main.h +7 -7
- data/examples/temp_sensor/src/Model.c +10 -10
- data/examples/temp_sensor/src/Model.h +8 -8
- data/examples/temp_sensor/src/ModelConfig.h +7 -7
- data/examples/temp_sensor/src/TaskScheduler.c +72 -72
- data/examples/temp_sensor/src/TaskScheduler.h +11 -11
- data/examples/temp_sensor/src/TemperatureCalculator.c +27 -27
- data/examples/temp_sensor/src/TemperatureCalculator.h +8 -8
- data/examples/temp_sensor/src/TemperatureFilter.c +38 -38
- data/examples/temp_sensor/src/TemperatureFilter.h +10 -10
- data/examples/temp_sensor/src/TimerConductor.c +15 -15
- data/examples/temp_sensor/src/TimerConductor.h +9 -9
- data/examples/temp_sensor/src/TimerConfigurator.c +51 -51
- data/examples/temp_sensor/src/TimerConfigurator.h +15 -15
- data/examples/temp_sensor/src/TimerHardware.c +15 -15
- data/examples/temp_sensor/src/TimerHardware.h +8 -8
- data/examples/temp_sensor/src/TimerInterruptConfigurator.c +55 -55
- data/examples/temp_sensor/src/TimerInterruptConfigurator.h +13 -13
- data/examples/temp_sensor/src/TimerInterruptHandler.c +25 -25
- data/examples/temp_sensor/src/TimerInterruptHandler.h +10 -10
- data/examples/temp_sensor/src/TimerModel.c +9 -9
- data/examples/temp_sensor/src/TimerModel.h +8 -8
- data/examples/temp_sensor/src/Types.h +90 -90
- data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +18 -18
- data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +8 -8
- data/examples/temp_sensor/src/UsartConductor.c +21 -21
- data/examples/temp_sensor/src/UsartConductor.h +7 -7
- data/examples/temp_sensor/src/UsartConfigurator.c +39 -39
- data/examples/temp_sensor/src/UsartConfigurator.h +13 -13
- data/examples/temp_sensor/src/UsartHardware.c +22 -22
- data/examples/temp_sensor/src/UsartHardware.h +9 -9
- data/examples/temp_sensor/src/UsartModel.c +34 -34
- data/examples/temp_sensor/src/UsartModel.h +10 -10
- data/examples/temp_sensor/src/UsartPutChar.c +16 -16
- data/examples/temp_sensor/src/UsartPutChar.h +8 -8
- data/examples/temp_sensor/src/UsartTransmitBufferStatus.c +7 -7
- data/examples/temp_sensor/src/UsartTransmitBufferStatus.h +8 -8
- data/examples/temp_sensor/test/TestAdcConductor.c +121 -121
- data/examples/temp_sensor/test/TestAdcHardware.c +44 -44
- data/examples/temp_sensor/test/TestAdcModel.c +33 -33
- data/examples/temp_sensor/test/TestExecutor.c +36 -36
- data/examples/temp_sensor/test/TestMain.c +24 -24
- data/examples/temp_sensor/test/TestModel.c +20 -20
- data/examples/temp_sensor/test/TestTaskScheduler.c +104 -104
- data/examples/temp_sensor/test/TestTemperatureCalculator.c +33 -33
- data/examples/temp_sensor/test/TestTemperatureFilter.c +79 -79
- data/examples/temp_sensor/test/TestTimerConductor.c +32 -32
- data/examples/temp_sensor/test/TestTimerHardware.c +26 -26
- data/examples/temp_sensor/test/TestTimerModel.c +18 -18
- data/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +21 -21
- data/examples/temp_sensor/test/TestUsartConductor.c +40 -40
- data/examples/temp_sensor/test/TestUsartHardware.c +36 -36
- data/examples/temp_sensor/test/TestUsartModel.c +36 -36
- data/examples/temp_sensor/test/support/UnityHelper.c +12 -12
- data/examples/temp_sensor/test/support/UnityHelper.h +12 -12
- data/lib/ceedling/configurator_builder.rb +1 -1
- data/lib/ceedling/tasks_base.rake +10 -2
- data/lib/ceedling/tool_executor.rb +3 -0
- data/lib/ceedling/version.rb +3 -3
- data/license.txt +1 -1
- data/plugins/bullseye/bullseye.rake +162 -162
- data/plugins/gcov/gcov.rake +152 -152
- data/plugins/module_generator/lib/module_generator.rb +145 -145
- data/plugins/module_generator/module_generator.rake +14 -14
- data/plugins/stdout_gtestlike_tests_report/assets/template.erb +84 -0
- data/plugins/stdout_gtestlike_tests_report/assets/template.erb copy +59 -0
- data/plugins/stdout_gtestlike_tests_report/config/stdout_gtestlike_tests_report.yml +4 -0
- data/plugins/stdout_gtestlike_tests_report/lib/stdout_gtestlike_tests_report.rb +43 -0
- data/spec/system/deployment_spec.rb +0 -1
- data/test_graveyard/integration/paths_test.rb +80 -80
- data/test_graveyard/integration/rake_rules_aux_dependencies_test.rb +75 -75
- data/test_graveyard/integration/rake_rules_cmock_test.rb +74 -74
- data/test_graveyard/integration/rake_rules_preprocess_test.rb +178 -178
- data/test_graveyard/integration/rake_rules_test.rb +268 -268
- data/test_graveyard/integration/rake_tasks_test.rb +103 -103
- data/test_graveyard/integration_test_helper.rb +34 -34
- data/test_graveyard/rakefile_rules.rb +10 -10
- data/test_graveyard/rakefile_rules_aux_dependencies.rb +10 -10
- data/test_graveyard/rakefile_rules_cmock.rb +10 -10
- data/test_graveyard/rakefile_rules_preprocess.rb +10 -10
- data/test_graveyard/rakefile_tasks.rb +10 -10
- data/test_graveyard/system/file_system_test.rb +78 -78
- data/test_graveyard/system/project_mocks_test.rb +38 -38
- data/test_graveyard/system/project_simple_test.rb +39 -39
- data/test_graveyard/system/rule_mocks_test.rb +44 -44
- data/test_graveyard/system/rule_runners_test.rb +44 -44
- data/test_graveyard/system_test_helper.rb +73 -73
- data/test_graveyard/test_helper.rb +93 -93
- data/test_graveyard/unit/busted/configurator_builder_test.rb +569 -569
- data/test_graveyard/unit/busted/configurator_helper_test.rb +234 -234
- data/test_graveyard/unit/busted/configurator_test.rb +232 -232
- data/test_graveyard/unit/busted/configurator_validator_test.rb +169 -169
- data/test_graveyard/unit/busted/deep_merge_fix_test.rb +55 -55
- data/test_graveyard/unit/busted/dependinator_test.rb +129 -129
- data/test_graveyard/unit/busted/file_finder_helper_test.rb +45 -45
- data/test_graveyard/unit/busted/file_finder_test.rb +114 -114
- data/test_graveyard/unit/busted/file_path_utils_test.rb +97 -97
- data/test_graveyard/unit/busted/file_system_utils_test.rb +21 -21
- data/test_graveyard/unit/busted/generator_test.rb +187 -187
- data/test_graveyard/unit/busted/generator_test_results_test.rb +129 -129
- data/test_graveyard/unit/busted/generator_test_runner_test.rb +475 -475
- data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +39 -39
- data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +156 -156
- data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +93 -93
- data/test_graveyard/unit/busted/preprocessinator_test.rb +57 -57
- data/test_graveyard/unit/busted/project_file_loader_test.rb +142 -142
- data/test_graveyard/unit/busted/setupinator_test.rb +45 -45
- data/test_graveyard/unit/busted/streaminator_test.rb +49 -49
- data/test_graveyard/unit/busted/task_invoker_test.rb +69 -69
- data/test_graveyard/unit/busted/test_includes_extractor_test.rb +111 -111
- data/test_graveyard/unit/busted/test_invoker_helper_test.rb +62 -62
- data/test_graveyard/unit/busted/test_invoker_test.rb +47 -47
- data/test_graveyard/unit/busted/tool_executor_helper_test.rb +100 -100
- data/test_graveyard/unit/busted/tool_executor_test.rb +351 -351
- data/test_graveyard/unit/busted/verbosinator_test.rb +65 -65
- data/test_graveyard/unit/preprocessinator_extractor_test.rb +731 -731
- data/test_graveyard/unit_test_helper.rb +16 -16
- data/vendor/c_exception/LICENSE.txt +30 -30
- data/vendor/c_exception/README.md +11 -1
- data/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
- data/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
- data/vendor/c_exception/docs/readme.txt +261 -242
- data/vendor/c_exception/lib/CException.c +46 -46
- data/vendor/c_exception/lib/CException.h +110 -86
- data/vendor/c_exception/makefile +23 -23
- data/vendor/c_exception/test/CExceptionConfig.h +46 -46
- data/vendor/c_exception/test/TestException.c +391 -342
- data/vendor/c_exception/test/TestException_Runner.c +5 -12
- data/vendor/c_exception/vendor/unity/README.md +211 -0
- data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +1 -1
- data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +38 -38
- data/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -36
- data/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -202
- data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +391 -320
- data/vendor/c_exception/vendor/unity/auto/parseOutput.rb +2 -0
- data/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +260 -0
- data/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +8 -0
- data/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +135 -0
- data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +148 -139
- data/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
- data/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
- data/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +224 -216
- data/vendor/c_exception/vendor/unity/docs/license.txt +21 -31
- data/vendor/c_exception/vendor/unity/examples/example_1/makefile +40 -15
- data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +2 -0
- data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +32 -25
- data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +29 -22
- data/vendor/c_exception/vendor/unity/examples/example_2/makefile +40 -14
- data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +2 -0
- data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +2 -2
- data/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +0 -1
- data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +2 -0
- data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +48 -37
- data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +179 -179
- data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +135 -94
- data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +13 -17
- data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +12 -18
- data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +30 -0
- data/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +60 -0
- data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +4 -3
- data/vendor/c_exception/vendor/unity/extras/fixture/test/{testunity_fixture.c → template_fixture_tests.c} +0 -0
- data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +182 -27
- data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +13 -0
- data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +8 -6
- data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +2 -2
- data/vendor/c_exception/vendor/unity/release/build.info +1 -1
- data/vendor/c_exception/vendor/unity/release/version.info +1 -1
- data/vendor/c_exception/vendor/unity/src/unity.c +1333 -1145
- data/vendor/c_exception/vendor/unity/src/unity.h +290 -307
- data/vendor/c_exception/vendor/unity/src/unity_internals.h +758 -620
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +7 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +7 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.c +55 -0
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.h +15 -0
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +4 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +4 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +6 -5
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +4 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +4 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +6 -5
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +4 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +7 -6
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +9 -5
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +7 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +7 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +9 -5
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +7 -3
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +10 -6
- data/vendor/c_exception/vendor/unity/{rakefile.rb → test/rakefile} +60 -61
- data/vendor/c_exception/vendor/unity/{rakefile_helper.rb → test/rakefile_helper.rb} +255 -249
- data/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +83 -0
- data/vendor/c_exception/vendor/unity/{targets → test/targets}/clang_strict.yml +83 -83
- data/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +49 -0
- data/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +50 -0
- data/vendor/c_exception/vendor/unity/{targets/gcc_64.yml → test/targets/gcc_auto_limits.yml} +46 -45
- data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_sizeof.yml +47 -0
- data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_stdint.yml +58 -0
- data/vendor/{cmock/vendor/c_exception/vendor/unity/targets/gcc_64.yml → c_exception/vendor/unity/test/targets/gcc_manual_math.yml} +46 -45
- data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/hitech_picc18.yml +101 -101
- data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/iar_arm_v4.yml +89 -89
- data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/iar_arm_v5.yml +79 -79
- data/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_arm_v5_3.yml +79 -79
- data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -93
- data/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_cortexm3_v5.yml +83 -83
- data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/iar_msp430.yml +94 -94
- data/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_sh2a_v6.yml +85 -85
- data/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -51
- data/vendor/c_exception/vendor/unity/test/testdata/sample.yml +8 -8
- data/vendor/c_exception/vendor/unity/test/testdata/testsample.c +68 -51
- data/vendor/{cmock/vendor/c_exception/vendor/unity/test → c_exception/vendor/unity/test/tests}/test_generate_test_runner.rb +102 -88
- data/vendor/{cmock/vendor/c_exception/vendor/unity/test → c_exception/vendor/unity/test/tests}/testparameterized.c +104 -101
- data/vendor/c_exception/vendor/unity/test/{testunity.c → tests/testunity.c} +3682 -3447
- data/vendor/cmock/docs/CMock_Summary.md +3 -0
- data/vendor/cmock/lib/cmock_config.rb +1 -0
- data/vendor/cmock/lib/cmock_file_writer.rb +7 -3
- data/vendor/cmock/lib/cmock_generator.rb +3 -2
- data/vendor/cmock/lib/cmock_header_parser.rb +12 -5
- data/vendor/cmock/release/version.info +1 -1
- data/vendor/cmock/test/system/test_compilation/parsing.h +3 -0
- data/vendor/cmock/test/unit/cmock_generator_main_test.rb +7 -0
- data/vendor/cmock/test/unit/cmock_header_parser_test.rb +57 -1
- data/vendor/cmock/vendor/c_exception/LICENSE.txt +30 -30
- data/vendor/cmock/vendor/c_exception/README.md +11 -1
- 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/readme.txt +261 -242
- data/vendor/cmock/vendor/c_exception/lib/CException.c +46 -46
- data/vendor/cmock/vendor/c_exception/lib/CException.h +110 -86
- data/vendor/cmock/vendor/c_exception/makefile +23 -23
- data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +46 -46
- data/vendor/cmock/vendor/c_exception/test/TestException.c +391 -342
- data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +5 -12
- data/vendor/cmock/vendor/c_exception/vendor/unity/README.md +211 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +1 -1
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +38 -38
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -36
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -202
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +391 -320
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parseOutput.rb +2 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +260 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +8 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +135 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +148 -139
- data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +224 -216
- data/vendor/cmock/vendor/c_exception/vendor/unity/docs/license.txt +21 -31
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/makefile +40 -15
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +2 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +32 -25
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +29 -22
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/makefile +40 -14
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +2 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +2 -2
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +0 -1
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +2 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +48 -37
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +179 -179
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +135 -94
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +13 -17
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +12 -18
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +30 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +60 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +4 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/{testunity_fixture.c → template_fixture_tests.c} +0 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +182 -27
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +13 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +8 -6
- data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +2 -2
- data/vendor/cmock/vendor/c_exception/vendor/unity/release/build.info +1 -1
- data/vendor/cmock/vendor/c_exception/vendor/unity/release/version.info +1 -1
- data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +1333 -1145
- data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.h +290 -307
- data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity_internals.h +758 -620
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +7 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +7 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.c +55 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.h +15 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +4 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +4 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +6 -5
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +4 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +4 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +6 -5
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +4 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +7 -6
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +9 -5
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +7 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +7 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +9 -5
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +7 -3
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +10 -6
- data/vendor/cmock/vendor/c_exception/vendor/unity/{rakefile.rb → test/rakefile} +60 -61
- data/vendor/cmock/vendor/c_exception/vendor/unity/{rakefile_helper.rb → test/rakefile_helper.rb} +255 -249
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +83 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/{targets → test/targets}/clang_strict.yml +83 -83
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +49 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +50 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/{targets/gcc_32.yml → test/targets/gcc_auto_limits.yml} +46 -44
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_auto_sizeof.yml +47 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_auto_stdint.yml +58 -0
- data/vendor/{c_exception/vendor/unity/targets/gcc_32.yml → cmock/vendor/c_exception/vendor/unity/test/targets/gcc_manual_math.yml} +46 -44
- data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/hitech_picc18.yml +101 -101
- data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/iar_arm_v4.yml +89 -89
- data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/iar_arm_v5.yml +79 -79
- data/vendor/cmock/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_arm_v5_3.yml +79 -79
- data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -93
- data/vendor/cmock/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_cortexm3_v5.yml +83 -83
- data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/iar_msp430.yml +94 -94
- data/vendor/cmock/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_sh2a_v6.yml +85 -85
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -51
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/sample.yml +8 -8
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testsample.c +68 -51
- data/vendor/{c_exception/vendor/unity/test → cmock/vendor/c_exception/vendor/unity/test/tests}/test_generate_test_runner.rb +102 -88
- data/vendor/{c_exception/vendor/unity/test → cmock/vendor/c_exception/vendor/unity/test/tests}/testparameterized.c +104 -101
- data/vendor/cmock/vendor/c_exception/vendor/unity/test/{testunity.c → tests/testunity.c} +3682 -3447
- data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +30 -13
- data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +260 -0
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +96 -93
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +1 -1
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +12 -19
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +18 -17
- data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +66 -5
- data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +2 -1
- data/vendor/cmock/vendor/unity/extras/fixture/test/{testunity_fixture.c → template_fixture_tests.c} +0 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +187 -27
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +14 -0
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +6 -5
- data/vendor/cmock/vendor/unity/release/version.info +1 -1
- data/vendor/cmock/vendor/unity/src/unity.c +38 -27
- data/vendor/cmock/vendor/unity/src/unity.h +5 -0
- data/vendor/cmock/vendor/unity/src/unity_internals.h +22 -18
- data/vendor/cmock/vendor/unity/test/Makefile +52 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +4 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +4 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +4 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +7 -4
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +6 -4
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +4 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +4 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +4 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +4 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +4 -0
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +4 -0
- data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -1
- data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +0 -1
- data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +0 -1
- data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +0 -1
- data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +0 -1
- data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +0 -1
- data/vendor/cmock/vendor/unity/test/targets/gcc_auto_sizeof.yml +0 -1
- data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +0 -1
- data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +0 -1
- data/vendor/cmock/vendor/unity/test/testdata/testsample.c +19 -2
- data/vendor/cmock/vendor/unity/test/tests/testunity.c +55 -4
- data/vendor/unity/auto/generate_test_runner.rb +4 -2
- data/vendor/unity/auto/stylize_as_junit.rb +260 -0
- data/vendor/unity/extras/fixture/src/unity_fixture.c +24 -41
- data/vendor/unity/extras/fixture/src/unity_fixture.h +1 -1
- data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +5 -7
- data/vendor/unity/extras/fixture/test/Makefile +53 -8
- data/vendor/unity/extras/fixture/test/{testunity_fixture.c → template_fixture_tests.c} +0 -0
- data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +129 -32
- data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +6 -0
- data/vendor/unity/extras/fixture/test/unity_output_Spy.c +4 -4
- data/vendor/unity/release/version.info +1 -1
- data/vendor/unity/src/unity.c +32 -21
- data/vendor/unity/src/unity.h +5 -0
- data/vendor/unity/src/unity_internals.h +7 -3
- data/vendor/unity/test/Makefile +52 -0
- data/vendor/unity/test/expectdata/testsample_cmd.c +4 -0
- data/vendor/unity/test/expectdata/testsample_def.c +4 -0
- data/vendor/unity/test/expectdata/testsample_head1.c +4 -0
- data/vendor/unity/test/expectdata/testsample_head1.h +7 -4
- data/vendor/unity/test/expectdata/testsample_mock_head1.h +6 -4
- data/vendor/unity/test/expectdata/testsample_new1.c +4 -0
- data/vendor/unity/test/expectdata/testsample_new2.c +4 -0
- data/vendor/unity/test/expectdata/testsample_param.c +4 -0
- data/vendor/unity/test/expectdata/testsample_run1.c +4 -0
- data/vendor/unity/test/expectdata/testsample_run2.c +4 -0
- data/vendor/unity/test/expectdata/testsample_yaml.c +4 -0
- data/vendor/unity/test/testdata/testsample.c +19 -2
- data/vendor/unity/test/tests/testunity.c +35 -4
- metadata +75 -52
- data/ceedling-0.18.0.gem +0 -0
- data/docs/CeedlingLogo.png +0 -0
- data/vendor/c_exception/vendor/unity/Gemfile +0 -4
- data/vendor/c_exception/vendor/unity/Gemfile.lock +0 -12
- data/vendor/c_exception/vendor/unity/examples/example_3/makefile +0 -41
- data/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode2_Runner.c +0 -46
- data/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode_Runner.c +0 -50
- data/vendor/c_exception/vendor/unity/makefile +0 -37
- data/vendor/cmock/vendor/c_exception/vendor/unity/Gemfile +0 -4
- data/vendor/cmock/vendor/c_exception/vendor/unity/Gemfile.lock +0 -12
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/makefile +0 -41
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode2_Runner.c +0 -46
- data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode_Runner.c +0 -50
- data/vendor/cmock/vendor/c_exception/vendor/unity/makefile +0 -37
|
@@ -28,6 +28,7 @@ class UnityTestRunnerGenerator
|
|
|
28
28
|
:test_prefix => "test|spec|should",
|
|
29
29
|
:setup_name => "setUp",
|
|
30
30
|
:teardown_name => "tearDown",
|
|
31
|
+
:main_name => "main",
|
|
31
32
|
}
|
|
32
33
|
end
|
|
33
34
|
|
|
@@ -82,7 +83,7 @@ class UnityTestRunnerGenerator
|
|
|
82
83
|
|
|
83
84
|
if (@options[:header_file] && !@options[:header_file].empty?)
|
|
84
85
|
File.open(@options[:header_file], 'w') do |output|
|
|
85
|
-
create_h_file(output, @options[:header_file], tests, testfile_includes)
|
|
86
|
+
create_h_file(output, @options[:header_file], tests, testfile_includes, used_mocks)
|
|
86
87
|
end
|
|
87
88
|
end
|
|
88
89
|
end
|
|
@@ -90,7 +91,9 @@ class UnityTestRunnerGenerator
|
|
|
90
91
|
def find_tests(source)
|
|
91
92
|
tests_and_line_numbers = []
|
|
92
93
|
|
|
93
|
-
source_scrubbed = source.
|
|
94
|
+
source_scrubbed = source.clone
|
|
95
|
+
source_scrubbed = source_scrubbed.gsub(/"[^"]*"/, '') # remove things in strings
|
|
96
|
+
source_scrubbed = source_scrubbed.gsub(/\/\/.*$/, '') # remove line comments
|
|
94
97
|
source_scrubbed = source_scrubbed.gsub(/\/\*.*?\*\//m, '') # remove block comments
|
|
95
98
|
lines = source_scrubbed.split(/(^\s*\#.*$) # Treat preprocessor directives as a logical line
|
|
96
99
|
| (;|\{|\}) /x) # Match ;, {, and } as end of lines
|
|
@@ -145,8 +148,9 @@ class UnityTestRunnerGenerator
|
|
|
145
148
|
|
|
146
149
|
def find_mocks(includes)
|
|
147
150
|
mock_headers = []
|
|
148
|
-
includes.each do |
|
|
149
|
-
|
|
151
|
+
includes.each do |include_path|
|
|
152
|
+
include_file = File.basename(include_path)
|
|
153
|
+
mock_headers << include_path if (include_file =~ /^mock/i)
|
|
150
154
|
end
|
|
151
155
|
return mock_headers
|
|
152
156
|
end
|
|
@@ -191,8 +195,8 @@ class UnityTestRunnerGenerator
|
|
|
191
195
|
output.puts('')
|
|
192
196
|
end
|
|
193
197
|
|
|
194
|
-
def create_mock_management(output,
|
|
195
|
-
unless (
|
|
198
|
+
def create_mock_management(output, mock_headers)
|
|
199
|
+
unless (mock_headers.empty?)
|
|
196
200
|
output.puts("\n//=======Mock Management=====")
|
|
197
201
|
output.puts("static void CMock_Init(void)")
|
|
198
202
|
output.puts("{")
|
|
@@ -201,6 +205,7 @@ class UnityTestRunnerGenerator
|
|
|
201
205
|
output.puts(" GlobalVerifyOrder = 0;")
|
|
202
206
|
output.puts(" GlobalOrderError = NULL;")
|
|
203
207
|
end
|
|
208
|
+
mocks = mock_headers.map {|mock| File.basename(mock)}
|
|
204
209
|
mocks.each do |mock|
|
|
205
210
|
mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
|
|
206
211
|
output.puts(" #{mock_clean}_Init();")
|
|
@@ -288,7 +293,10 @@ class UnityTestRunnerGenerator
|
|
|
288
293
|
|
|
289
294
|
def create_main(output, filename, tests, used_mocks)
|
|
290
295
|
output.puts("\n\n//=======MAIN=====")
|
|
291
|
-
|
|
296
|
+
if (@options[:main_name] != "main")
|
|
297
|
+
output.puts("int #{@options[:main_name]}(void);")
|
|
298
|
+
end
|
|
299
|
+
output.puts("int #{@options[:main_name]}(void)")
|
|
292
300
|
output.puts("{")
|
|
293
301
|
output.puts(" suite_setup();") unless @options[:suite_setup].nil?
|
|
294
302
|
output.puts(" UnityBegin(\"#{filename.gsub(/\\/,'\\\\')}\");")
|
|
@@ -309,11 +317,13 @@ class UnityTestRunnerGenerator
|
|
|
309
317
|
output.puts("}")
|
|
310
318
|
end
|
|
311
319
|
|
|
312
|
-
def create_h_file(output, filename, tests, testfile_includes)
|
|
313
|
-
filename = filename.
|
|
320
|
+
def create_h_file(output, filename, tests, testfile_includes, used_mocks)
|
|
321
|
+
filename = File.basename(filename).gsub(/[-\/\\\.\,\s]/, "_").upcase
|
|
314
322
|
output.puts("/* AUTOGENERATED FILE. DO NOT EDIT. */")
|
|
315
323
|
output.puts("#ifndef _#{filename}")
|
|
316
324
|
output.puts("#define _#{filename}\n\n")
|
|
325
|
+
output.puts("#include \"#{@options[:framework].to_s}.h\"")
|
|
326
|
+
output.puts('#include "cmock.h"') unless (used_mocks.empty?)
|
|
317
327
|
@options[:includes].flatten.uniq.compact.each do |inc|
|
|
318
328
|
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}")
|
|
319
329
|
end
|
|
@@ -321,7 +331,13 @@ class UnityTestRunnerGenerator
|
|
|
321
331
|
output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}")
|
|
322
332
|
end
|
|
323
333
|
output.puts "\n"
|
|
324
|
-
tests.each
|
|
334
|
+
tests.each do |test|
|
|
335
|
+
if ((test[:params].nil?) or (test[:params].empty?))
|
|
336
|
+
output.puts("void #{test[:test]}(void);")
|
|
337
|
+
else
|
|
338
|
+
output.puts("void #{test[:test]}(#{test[:params]});")
|
|
339
|
+
end
|
|
340
|
+
end
|
|
325
341
|
output.puts("#endif\n\n")
|
|
326
342
|
end
|
|
327
343
|
end
|
|
@@ -337,10 +353,10 @@ if ($0 == __FILE__)
|
|
|
337
353
|
options[:plugins] = [:cexception]; true
|
|
338
354
|
when /\.*\.ya?ml/
|
|
339
355
|
options = UnityTestRunnerGenerator.grab_config(arg); true
|
|
340
|
-
when /\.*\.h/
|
|
341
|
-
options[:includes] << arg; true
|
|
342
356
|
when /--(\w+)=\"?(.*)\"?/
|
|
343
357
|
options[$1.to_sym] = $2; true
|
|
358
|
+
when /\.*\.h/
|
|
359
|
+
options[:includes] << arg; true
|
|
344
360
|
else false
|
|
345
361
|
end
|
|
346
362
|
end
|
|
@@ -358,6 +374,7 @@ if ($0 == __FILE__)
|
|
|
358
374
|
" -cexception - include cexception support",
|
|
359
375
|
" --setup_name=\"\" - redefine setUp func name to something else",
|
|
360
376
|
" --teardown_name=\"\" - redefine tearDown func name to something else",
|
|
377
|
+
" --main_name=\"\" - redefine main func name to something else",
|
|
361
378
|
" --test_prefix=\"\" - redefine test prefix from default test|spec|should",
|
|
362
379
|
" --suite_setup=\"\" - code to execute for setup of entire suite",
|
|
363
380
|
" --suite_teardown=\"\" - code to execute for teardown of entire suite",
|
|
@@ -370,5 +387,5 @@ if ($0 == __FILE__)
|
|
|
370
387
|
#create the default test runner name if not specified
|
|
371
388
|
ARGV[1] = ARGV[0].gsub(".c","_Runner.c") if (!ARGV[1])
|
|
372
389
|
|
|
373
|
-
|
|
390
|
+
UnityTestRunnerGenerator.new(options).run(ARGV[0], ARGV[1])
|
|
374
391
|
end
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
#
|
|
3
|
+
# unity_to_junit.rb
|
|
4
|
+
#
|
|
5
|
+
require 'fileutils'
|
|
6
|
+
require 'optparse'
|
|
7
|
+
require 'ostruct'
|
|
8
|
+
require 'set'
|
|
9
|
+
|
|
10
|
+
require 'pp'
|
|
11
|
+
|
|
12
|
+
VERSION = 1.0
|
|
13
|
+
|
|
14
|
+
class ArgvParser
|
|
15
|
+
|
|
16
|
+
#
|
|
17
|
+
# Return a structure describing the options.
|
|
18
|
+
#
|
|
19
|
+
def self.parse(args)
|
|
20
|
+
# The options specified on the command line will be collected in *options*.
|
|
21
|
+
# We set default values here.
|
|
22
|
+
options = OpenStruct.new
|
|
23
|
+
options.results_dir = "."
|
|
24
|
+
options.root_path = "."
|
|
25
|
+
options.out_file = "results.xml"
|
|
26
|
+
|
|
27
|
+
opts = OptionParser.new do |opts|
|
|
28
|
+
opts.banner = "Usage: unity_to_junit.rb [options]"
|
|
29
|
+
|
|
30
|
+
opts.separator ""
|
|
31
|
+
opts.separator "Specific options:"
|
|
32
|
+
|
|
33
|
+
opts.on("-r", "--results <dir>", "Look for Unity Results files here.") do |results|
|
|
34
|
+
#puts "results #{results}"
|
|
35
|
+
options.results_dir = results
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
opts.on("-p", "--root_path <path>", "Prepend this path to files in results.") do |root_path|
|
|
39
|
+
options.root_path = root_path
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
opts.on("-o", "--output <filename>", "XML file to generate.") do |out_file|
|
|
43
|
+
#puts "out_file: #{out_file}"
|
|
44
|
+
options.out_file = out_file
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
opts.separator ""
|
|
48
|
+
opts.separator "Common options:"
|
|
49
|
+
|
|
50
|
+
# No argument, shows at tail. This will print an options summary.
|
|
51
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
|
52
|
+
puts opts
|
|
53
|
+
exit
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Another typical switch to print the version.
|
|
57
|
+
opts.on_tail("--version", "Show version") do
|
|
58
|
+
puts "unity_to_junit.rb version #{VERSION}"
|
|
59
|
+
exit
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
opts.parse!(args)
|
|
64
|
+
options
|
|
65
|
+
end # parse()
|
|
66
|
+
|
|
67
|
+
end # class OptparseExample
|
|
68
|
+
|
|
69
|
+
class UnityToJUnit
|
|
70
|
+
include FileUtils::Verbose
|
|
71
|
+
attr_reader :report, :total_tests, :failures, :ignored
|
|
72
|
+
|
|
73
|
+
def initialize
|
|
74
|
+
@report = ''
|
|
75
|
+
@unit_name = ''
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def run
|
|
79
|
+
# Clean up result file names
|
|
80
|
+
results = @targets.map {|target| target.gsub(/\\/,"/")}
|
|
81
|
+
#puts "Output File: #{@out_file}"
|
|
82
|
+
f = File.new(@out_file, "w")
|
|
83
|
+
write_xml_header(f)
|
|
84
|
+
write_suites_header( f )
|
|
85
|
+
results.each do |result_file|
|
|
86
|
+
lines = File.readlines(result_file).map { |line| line.chomp }
|
|
87
|
+
if lines.length == 0
|
|
88
|
+
raise "Empty test result file: #{result_file}"
|
|
89
|
+
else
|
|
90
|
+
result_output = get_details(result_file, lines)
|
|
91
|
+
tests,failures,ignored = parse_test_summary(lines)
|
|
92
|
+
result_output[:counts][:total] = tests
|
|
93
|
+
result_output[:counts][:failed] = failures
|
|
94
|
+
result_output[:counts][:ignored] = ignored
|
|
95
|
+
result_output[:counts][:passed] = (result_output[:counts][:total] - result_output[:counts][:failed] - result_output[:counts][:ignored])
|
|
96
|
+
end
|
|
97
|
+
#use line[0] from the test output to get the test_file path and name
|
|
98
|
+
test_file_str = lines[0].gsub("\\","/")
|
|
99
|
+
test_file_str = test_file_str.split(":")
|
|
100
|
+
test_file = test_file_str[0] + ':' + test_file_str[1]
|
|
101
|
+
result_output[:source][:path] = File.dirname(test_file)
|
|
102
|
+
result_output[:source][:file] = File.basename(test_file)
|
|
103
|
+
|
|
104
|
+
# save result_output
|
|
105
|
+
@unit_name = File.basename(test_file, ".*")
|
|
106
|
+
|
|
107
|
+
write_suite_header( result_output[:counts], f)
|
|
108
|
+
write_failures( result_output, f )
|
|
109
|
+
write_tests( result_output, f )
|
|
110
|
+
write_ignored( result_output, f )
|
|
111
|
+
write_suite_footer( f )
|
|
112
|
+
end
|
|
113
|
+
write_suites_footer( f )
|
|
114
|
+
f.close
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def set_targets(target_array)
|
|
118
|
+
@targets = target_array
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def set_root_path(path)
|
|
122
|
+
@root = path
|
|
123
|
+
end
|
|
124
|
+
def set_out_file(filename)
|
|
125
|
+
@out_file = filename
|
|
126
|
+
end
|
|
127
|
+
def usage(err_msg=nil)
|
|
128
|
+
puts "\nERROR: "
|
|
129
|
+
puts err_msg if err_msg
|
|
130
|
+
puts "Usage: unity_to_junit.rb [options]"
|
|
131
|
+
puts ""
|
|
132
|
+
puts "Specific options:"
|
|
133
|
+
puts " -r, --results <dir> Look for Unity Results files here."
|
|
134
|
+
puts " -p, --root_path <path> Prepend this path to files in results."
|
|
135
|
+
puts " -o, --output <filename> XML file to generate."
|
|
136
|
+
puts ""
|
|
137
|
+
puts "Common options:"
|
|
138
|
+
puts " -h, --help Show this message"
|
|
139
|
+
puts " --version Show version"
|
|
140
|
+
|
|
141
|
+
exit 1
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
protected
|
|
145
|
+
def get_details(result_file, lines)
|
|
146
|
+
results = get_results_structure
|
|
147
|
+
lines.each do |line|
|
|
148
|
+
line = line.gsub("\\","/")
|
|
149
|
+
src_file,src_line,test_name,status,msg = line.split(/:/)
|
|
150
|
+
line_out = ((@root and (@root != 0)) ? "#{@root}#{line}" : line ).gsub(/\//, "\\")
|
|
151
|
+
case(status)
|
|
152
|
+
when 'IGNORE' then results[:ignores] << {:test => test_name, :line => src_line, :message => msg}
|
|
153
|
+
when 'FAIL' then results[:failures] << {:test => test_name, :line => src_line, :message => msg}
|
|
154
|
+
when 'PASS' then results[:successes] << {:test => test_name, :line => src_line, :message => msg}
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
return results
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def parse_test_summary(summary)
|
|
161
|
+
if summary.find { |v| v =~ /(\d+) Tests (\d+) Failures (\d+) Ignored/ }
|
|
162
|
+
[$1.to_i,$2.to_i,$3.to_i]
|
|
163
|
+
else
|
|
164
|
+
raise "Couldn't parse test results: #{summary}"
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
def here; File.expand_path(File.dirname(__FILE__)); end
|
|
168
|
+
|
|
169
|
+
private
|
|
170
|
+
|
|
171
|
+
def get_results_structure
|
|
172
|
+
return {
|
|
173
|
+
:source => {:path => '', :file => ''},
|
|
174
|
+
:successes => [],
|
|
175
|
+
:failures => [],
|
|
176
|
+
:ignores => [],
|
|
177
|
+
:counts => {:total => 0, :passed => 0, :failed => 0, :ignored => 0},
|
|
178
|
+
:stdout => [],
|
|
179
|
+
}
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def write_xml_header( stream )
|
|
183
|
+
stream.puts "<?xml version='1.0' encoding='utf-8' ?>"
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def write_suites_header( stream )
|
|
187
|
+
stream.puts "<testsuites>"
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def write_suite_header( counts, stream )
|
|
191
|
+
stream.puts "\t<testsuite errors=\"0\" skipped=\"#{counts[:ignored]}\" failures=\"#{counts[:failed]}\" tests=\"#{counts[:total]}\" name=\"unity\">"
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def write_failures( results, stream )
|
|
195
|
+
result = results[:failures]
|
|
196
|
+
result.each do |item|
|
|
197
|
+
filename = File.join(results[:source][:path], File.basename(results[:source][:file], '.*'))
|
|
198
|
+
stream.puts "\t\t<testcase classname=\"#{@unit_name}\" name=\"#{item[:test]}\" time=\"0\">"
|
|
199
|
+
stream.puts "\t\t\t<failure message=\"#{item[:message]}\" type=\"Assertion\"/>"
|
|
200
|
+
stream.puts "\t\t\t<system-err>
[File] #{filename}
[Line] #{item[:line]}
</system-err>"
|
|
201
|
+
stream.puts "\t\t</testcase>"
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def write_tests( results, stream )
|
|
206
|
+
result = results[:successes]
|
|
207
|
+
result.each do |item|
|
|
208
|
+
filename = File.join(results[:source][:path], File.basename(results[:source][:file], '.*'))
|
|
209
|
+
stream.puts "\t\t<testcase classname=\"#{@unit_name}\" name=\"#{item[:test]}\" time=\"0\" />"
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def write_ignored( results, stream )
|
|
214
|
+
result = results[:ignores]
|
|
215
|
+
result.each do |item|
|
|
216
|
+
filename = File.join(results[:source][:path], File.basename(results[:source][:file], '.*'))
|
|
217
|
+
puts "Writing ignored tests for test harness: #{filename}"
|
|
218
|
+
stream.puts "\t\t<testcase classname=\"#{@unit_name}\" name=\"#{item[:test]}\" time=\"0\">"
|
|
219
|
+
stream.puts "\t\t\t<skipped message=\"#{item[:message]}\" type=\"Assertion\"/>"
|
|
220
|
+
stream.puts "\t\t\t<system-err>
[File] #{filename}
[Line] #{item[:line]}
</system-err>"
|
|
221
|
+
stream.puts "\t\t</testcase>"
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def write_suite_footer( stream )
|
|
226
|
+
stream.puts "\t</testsuite>"
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def write_suites_footer( stream )
|
|
230
|
+
stream.puts "</testsuites>"
|
|
231
|
+
end
|
|
232
|
+
end #UnityToJUnit
|
|
233
|
+
|
|
234
|
+
if __FILE__ == $0
|
|
235
|
+
#parse out the command options
|
|
236
|
+
options = ArgvParser.parse(ARGV)
|
|
237
|
+
|
|
238
|
+
#create an instance to work with
|
|
239
|
+
utj = UnityToJUnit.new
|
|
240
|
+
begin
|
|
241
|
+
#look in the specified or current directory for result files
|
|
242
|
+
targets = "#{options.results_dir.gsub(/\\/, '/')}**/*.test*"
|
|
243
|
+
|
|
244
|
+
results = Dir[targets]
|
|
245
|
+
raise "No *.testpass, *.testfail, or *.testresults files found in '#{targets}'" if results.empty?
|
|
246
|
+
utj.set_targets(results)
|
|
247
|
+
|
|
248
|
+
#set the root path
|
|
249
|
+
utj.set_root_path(options.root_path)
|
|
250
|
+
|
|
251
|
+
#set the output XML file name
|
|
252
|
+
#puts "Output File from options: #{options.out_file}"
|
|
253
|
+
utj.set_out_file(options.out_file)
|
|
254
|
+
|
|
255
|
+
#run the summarizer
|
|
256
|
+
puts utj.run
|
|
257
|
+
rescue Exception => e
|
|
258
|
+
utj.usage e.message
|
|
259
|
+
end
|
|
260
|
+
end
|
|
@@ -6,28 +6,26 @@
|
|
|
6
6
|
========================================== */
|
|
7
7
|
|
|
8
8
|
#include <string.h>
|
|
9
|
-
#include <stdio.h>
|
|
10
9
|
#include "unity_fixture.h"
|
|
11
10
|
#include "unity_internals.h"
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
struct _UnityFixture UnityFixture;
|
|
14
13
|
|
|
15
14
|
//If you decide to use the function pointer approach.
|
|
16
|
-
|
|
15
|
+
//Build with -D UNITY_OUTPUT_CHAR=outputChar and include <stdio.h>
|
|
16
|
+
//int (*outputChar)(int) = putchar;
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
void setUp(void);
|
|
21
|
-
void tearDown(void);
|
|
18
|
+
#if !defined(UNITY_WEAK_ATTRIBUTE) && !defined(UNITY_WEAK_PRAGMA)
|
|
22
19
|
void setUp(void) { /*does nothing*/ }
|
|
23
20
|
void tearDown(void) { /*does nothing*/ }
|
|
21
|
+
#endif
|
|
24
22
|
|
|
25
23
|
static void announceTestRun(unsigned int runNumber)
|
|
26
24
|
{
|
|
27
25
|
UnityPrint("Unity test run ");
|
|
28
|
-
|
|
26
|
+
UnityPrintNumberUnsigned(runNumber+1);
|
|
29
27
|
UnityPrint(" of ");
|
|
30
|
-
|
|
28
|
+
UnityPrintNumberUnsigned(UnityFixture.RepeatCount);
|
|
31
29
|
UNITY_PRINT_EOL();
|
|
32
30
|
}
|
|
33
31
|
|
|
@@ -47,10 +45,10 @@ int UnityMain(int argc, const char* argv[], void (*runAllTests)(void))
|
|
|
47
45
|
UnityEnd();
|
|
48
46
|
}
|
|
49
47
|
|
|
50
|
-
return
|
|
48
|
+
return (int)Unity.TestFailures;
|
|
51
49
|
}
|
|
52
50
|
|
|
53
|
-
static int selected(const char
|
|
51
|
+
static int selected(const char* filter, const char* name)
|
|
54
52
|
{
|
|
55
53
|
if (filter == 0)
|
|
56
54
|
return 1;
|
|
@@ -67,22 +65,16 @@ static int groupSelected(const char* group)
|
|
|
67
65
|
return selected(UnityFixture.GroupFilter, group);
|
|
68
66
|
}
|
|
69
67
|
|
|
70
|
-
static void runTestCase(void)
|
|
71
|
-
{
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
68
|
void UnityTestRunner(unityfunction* setup,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
69
|
+
unityfunction* testBody,
|
|
70
|
+
unityfunction* teardown,
|
|
71
|
+
const char* printableName,
|
|
72
|
+
const char* group,
|
|
73
|
+
const char* name,
|
|
74
|
+
const char* file, unsigned int line)
|
|
82
75
|
{
|
|
83
76
|
if (testSelected(name) && groupSelected(group))
|
|
84
77
|
{
|
|
85
|
-
Unity.CurrentTestFailed = 0;
|
|
86
78
|
Unity.TestFile = file;
|
|
87
79
|
Unity.CurrentTestName = printableName;
|
|
88
80
|
Unity.CurrentTestLineNumber = line;
|
|
@@ -95,7 +87,6 @@ void UnityTestRunner(unityfunction* setup,
|
|
|
95
87
|
UnityMalloc_StartTest();
|
|
96
88
|
UnityPointer_Init();
|
|
97
89
|
|
|
98
|
-
runTestCase();
|
|
99
90
|
if (TEST_PROTECT())
|
|
100
91
|
{
|
|
101
92
|
setup();
|
|
@@ -115,17 +106,19 @@ void UnityTestRunner(unityfunction* setup,
|
|
|
115
106
|
}
|
|
116
107
|
}
|
|
117
108
|
|
|
118
|
-
void UnityIgnoreTest(const char
|
|
109
|
+
void UnityIgnoreTest(const char* printableName, const char* group, const char* name)
|
|
119
110
|
{
|
|
120
111
|
if (testSelected(name) && groupSelected(group))
|
|
121
112
|
{
|
|
122
113
|
Unity.NumberOfTests++;
|
|
123
|
-
Unity.
|
|
114
|
+
Unity.TestIgnores++;
|
|
124
115
|
if (!UnityFixture.Verbose)
|
|
125
116
|
UNITY_OUTPUT_CHAR('!');
|
|
126
117
|
else
|
|
118
|
+
{
|
|
127
119
|
UnityPrint(printableName);
|
|
128
|
-
|
|
120
|
+
UNITY_PRINT_EOL();
|
|
121
|
+
}
|
|
129
122
|
}
|
|
130
123
|
}
|
|
131
124
|
|
|
@@ -148,7 +141,7 @@ void UnityMalloc_EndTest(void)
|
|
|
148
141
|
malloc_fail_countdown = MALLOC_DONT_FAIL;
|
|
149
142
|
if (malloc_count != 0)
|
|
150
143
|
{
|
|
151
|
-
|
|
144
|
+
UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "This test leaks!");
|
|
152
145
|
}
|
|
153
146
|
}
|
|
154
147
|
|
|
@@ -157,75 +150,92 @@ void UnityMalloc_MakeMallocFailAfterCount(int countdown)
|
|
|
157
150
|
malloc_fail_countdown = countdown;
|
|
158
151
|
}
|
|
159
152
|
|
|
160
|
-
|
|
153
|
+
// These definitions are always included from unity_fixture_malloc_overrides.h
|
|
154
|
+
// We undef to use them or avoid conflict with <stdlib.h> per the C standard
|
|
161
155
|
#undef malloc
|
|
162
|
-
#endif
|
|
163
|
-
|
|
164
|
-
#ifdef free
|
|
165
156
|
#undef free
|
|
166
|
-
#endif
|
|
167
|
-
|
|
168
|
-
#ifdef calloc
|
|
169
157
|
#undef calloc
|
|
170
|
-
#endif
|
|
171
|
-
|
|
172
|
-
#ifdef realloc
|
|
173
158
|
#undef realloc
|
|
174
|
-
#endif
|
|
175
159
|
|
|
160
|
+
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
|
161
|
+
static unsigned char unity_heap[UNITY_INTERNAL_HEAP_SIZE_BYTES];
|
|
162
|
+
static size_t heap_index;
|
|
163
|
+
#else
|
|
176
164
|
#include <stdlib.h>
|
|
177
|
-
#
|
|
165
|
+
#endif
|
|
178
166
|
|
|
179
167
|
typedef struct GuardBytes
|
|
180
168
|
{
|
|
181
169
|
size_t size;
|
|
182
|
-
|
|
170
|
+
size_t guard_space;
|
|
183
171
|
} Guard;
|
|
184
172
|
|
|
185
173
|
|
|
186
174
|
static const char end[] = "END";
|
|
187
175
|
|
|
188
|
-
void
|
|
176
|
+
void* unity_malloc(size_t size)
|
|
189
177
|
{
|
|
190
178
|
char* mem;
|
|
191
179
|
Guard* guard;
|
|
180
|
+
size_t total_size = size + sizeof(Guard) + sizeof(end);
|
|
192
181
|
|
|
193
182
|
if (malloc_fail_countdown != MALLOC_DONT_FAIL)
|
|
194
183
|
{
|
|
195
184
|
if (malloc_fail_countdown == 0)
|
|
196
|
-
return
|
|
185
|
+
return NULL;
|
|
197
186
|
malloc_fail_countdown--;
|
|
198
187
|
}
|
|
199
188
|
|
|
189
|
+
if (size == 0) return NULL;
|
|
190
|
+
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
|
191
|
+
if (heap_index + total_size > UNITY_INTERNAL_HEAP_SIZE_BYTES)
|
|
192
|
+
{
|
|
193
|
+
guard = NULL;
|
|
194
|
+
}
|
|
195
|
+
else
|
|
196
|
+
{
|
|
197
|
+
guard = (Guard*) &unity_heap[heap_index];
|
|
198
|
+
heap_index += total_size;
|
|
199
|
+
}
|
|
200
|
+
#else
|
|
201
|
+
guard = (Guard*)UNITY_FIXTURE_MALLOC(total_size);
|
|
202
|
+
#endif
|
|
203
|
+
if (guard == NULL) return NULL;
|
|
200
204
|
malloc_count++;
|
|
201
|
-
|
|
202
|
-
guard = (Guard*)UNITY_FIXTURE_MALLOC(size + sizeof(Guard) + sizeof(end));
|
|
203
205
|
guard->size = size;
|
|
206
|
+
guard->guard_space = 0;
|
|
204
207
|
mem = (char*)&(guard[1]);
|
|
205
208
|
memcpy(&mem[size], end, sizeof(end));
|
|
206
209
|
|
|
207
210
|
return (void*)mem;
|
|
208
211
|
}
|
|
209
212
|
|
|
210
|
-
static int isOverrun(void
|
|
213
|
+
static int isOverrun(void* mem)
|
|
211
214
|
{
|
|
212
215
|
Guard* guard = (Guard*)mem;
|
|
213
216
|
char* memAsChar = (char*)mem;
|
|
214
217
|
guard--;
|
|
215
218
|
|
|
216
|
-
return strcmp(&memAsChar[guard->size], end) != 0;
|
|
219
|
+
return guard->guard_space != 0 || strcmp(&memAsChar[guard->size], end) != 0;
|
|
217
220
|
}
|
|
218
221
|
|
|
219
|
-
static void release_memory(void
|
|
222
|
+
static void release_memory(void* mem)
|
|
220
223
|
{
|
|
221
224
|
Guard* guard = (Guard*)mem;
|
|
222
225
|
guard--;
|
|
223
226
|
|
|
224
227
|
malloc_count--;
|
|
228
|
+
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC
|
|
229
|
+
if (mem == unity_heap + heap_index - guard->size - sizeof(end))
|
|
230
|
+
{
|
|
231
|
+
heap_index -= (guard->size + sizeof(Guard) + sizeof(end));
|
|
232
|
+
}
|
|
233
|
+
#else
|
|
225
234
|
UNITY_FIXTURE_FREE(guard);
|
|
235
|
+
#endif
|
|
226
236
|
}
|
|
227
237
|
|
|
228
|
-
void unity_free(void
|
|
238
|
+
void unity_free(void* mem)
|
|
229
239
|
{
|
|
230
240
|
int overrun;
|
|
231
241
|
|
|
@@ -234,64 +244,70 @@ void unity_free(void * mem)
|
|
|
234
244
|
return;
|
|
235
245
|
}
|
|
236
246
|
|
|
237
|
-
overrun = isOverrun(mem)
|
|
247
|
+
overrun = isOverrun(mem);
|
|
238
248
|
release_memory(mem);
|
|
239
249
|
if (overrun)
|
|
240
250
|
{
|
|
241
|
-
|
|
251
|
+
UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "Buffer overrun detected during free()");
|
|
242
252
|
}
|
|
243
253
|
}
|
|
244
254
|
|
|
245
255
|
void* unity_calloc(size_t num, size_t size)
|
|
246
256
|
{
|
|
247
257
|
void* mem = unity_malloc(num * size);
|
|
248
|
-
|
|
258
|
+
if (mem == NULL) return NULL;
|
|
259
|
+
memset(mem, 0, num * size);
|
|
249
260
|
return mem;
|
|
250
261
|
}
|
|
251
262
|
|
|
252
|
-
void* unity_realloc(void
|
|
263
|
+
void* unity_realloc(void* oldMem, size_t size)
|
|
253
264
|
{
|
|
254
265
|
Guard* guard = (Guard*)oldMem;
|
|
255
|
-
// char* memAsChar = (char*)oldMem;
|
|
256
266
|
void* newMem;
|
|
257
267
|
|
|
258
|
-
if (oldMem ==
|
|
259
|
-
return unity_malloc(size);
|
|
268
|
+
if (oldMem == NULL) return unity_malloc(size);
|
|
260
269
|
|
|
261
270
|
guard--;
|
|
262
271
|
if (isOverrun(oldMem))
|
|
263
272
|
{
|
|
264
273
|
release_memory(oldMem);
|
|
265
|
-
|
|
274
|
+
UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "Buffer overrun detected during realloc()");
|
|
266
275
|
}
|
|
267
276
|
|
|
268
277
|
if (size == 0)
|
|
269
278
|
{
|
|
270
279
|
release_memory(oldMem);
|
|
271
|
-
return
|
|
280
|
+
return NULL;
|
|
272
281
|
}
|
|
273
282
|
|
|
274
|
-
if (guard->size >= size)
|
|
275
|
-
return oldMem;
|
|
283
|
+
if (guard->size >= size) return oldMem;
|
|
276
284
|
|
|
285
|
+
#ifdef UNITY_EXCLUDE_STDLIB_MALLOC // Optimization if memory is expandable
|
|
286
|
+
if (oldMem == unity_heap + heap_index - guard->size - sizeof(end) &&
|
|
287
|
+
heap_index + size - guard->size <= UNITY_INTERNAL_HEAP_SIZE_BYTES)
|
|
288
|
+
{
|
|
289
|
+
release_memory(oldMem); // Not thread-safe, like unity_heap generally
|
|
290
|
+
return unity_malloc(size); // No memcpy since data is in place
|
|
291
|
+
}
|
|
292
|
+
#endif
|
|
277
293
|
newMem = unity_malloc(size);
|
|
294
|
+
if (newMem == NULL) return NULL; // Do not release old memory
|
|
278
295
|
memcpy(newMem, oldMem, guard->size);
|
|
279
|
-
|
|
296
|
+
release_memory(oldMem);
|
|
280
297
|
return newMem;
|
|
281
298
|
}
|
|
282
299
|
|
|
283
300
|
|
|
284
301
|
//--------------------------------------------------------
|
|
285
302
|
//Automatic pointer restoration functions
|
|
286
|
-
|
|
303
|
+
struct PointerPair
|
|
287
304
|
{
|
|
288
|
-
|
|
289
|
-
void
|
|
290
|
-
|
|
291
|
-
} PointerPair;
|
|
305
|
+
void** pointer;
|
|
306
|
+
void* old_value;
|
|
307
|
+
};
|
|
292
308
|
|
|
293
|
-
enum {MAX_POINTERS=50};
|
|
294
|
-
static PointerPair pointer_store[MAX_POINTERS
|
|
309
|
+
enum { MAX_POINTERS = 50 };
|
|
310
|
+
static struct PointerPair pointer_store[MAX_POINTERS];
|
|
295
311
|
static int pointer_index = 0;
|
|
296
312
|
|
|
297
313
|
void UnityPointer_Init(void)
|
|
@@ -299,11 +315,11 @@ void UnityPointer_Init(void)
|
|
|
299
315
|
pointer_index = 0;
|
|
300
316
|
}
|
|
301
317
|
|
|
302
|
-
void UnityPointer_Set(void
|
|
318
|
+
void UnityPointer_Set(void** pointer, void* newValue, UNITY_LINE_TYPE line)
|
|
303
319
|
{
|
|
304
320
|
if (pointer_index >= MAX_POINTERS)
|
|
305
321
|
{
|
|
306
|
-
|
|
322
|
+
UNITY_TEST_FAIL(line, "Too many pointers set");
|
|
307
323
|
}
|
|
308
324
|
else
|
|
309
325
|
{
|
|
@@ -320,26 +336,10 @@ void UnityPointer_UndoAllSets(void)
|
|
|
320
336
|
{
|
|
321
337
|
pointer_index--;
|
|
322
338
|
*(pointer_store[pointer_index].pointer) =
|
|
323
|
-
|
|
324
|
-
|
|
339
|
+
pointer_store[pointer_index].old_value;
|
|
325
340
|
}
|
|
326
341
|
}
|
|
327
342
|
|
|
328
|
-
UNITY_COUNTER_TYPE UnityFailureCount(void)
|
|
329
|
-
{
|
|
330
|
-
return Unity.TestFailures;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
UNITY_COUNTER_TYPE UnityIgnoreCount(void)
|
|
334
|
-
{
|
|
335
|
-
return Unity.TestIgnores;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
UNITY_COUNTER_TYPE UnityTestsCount(void)
|
|
339
|
-
{
|
|
340
|
-
return Unity.NumberOfTests;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
343
|
int UnityGetCommandLineOptions(int argc, const char* argv[])
|
|
344
344
|
{
|
|
345
345
|
int i;
|
|
@@ -382,7 +382,13 @@ int UnityGetCommandLineOptions(int argc, const char* argv[])
|
|
|
382
382
|
{
|
|
383
383
|
if (*(argv[i]) >= '0' && *(argv[i]) <= '9')
|
|
384
384
|
{
|
|
385
|
-
|
|
385
|
+
unsigned int digit = 0;
|
|
386
|
+
UnityFixture.RepeatCount = 0;
|
|
387
|
+
while (argv[i][digit] >= '0' && argv[i][digit] <= '9')
|
|
388
|
+
{
|
|
389
|
+
UnityFixture.RepeatCount *= 10;
|
|
390
|
+
UnityFixture.RepeatCount += (unsigned int)argv[i][digit++] - '0';
|
|
391
|
+
}
|
|
386
392
|
i++;
|
|
387
393
|
}
|
|
388
394
|
}
|
|
@@ -398,11 +404,8 @@ void UnityConcludeFixtureTest(void)
|
|
|
398
404
|
{
|
|
399
405
|
if (Unity.CurrentTestIgnored)
|
|
400
406
|
{
|
|
401
|
-
if (UnityFixture.Verbose)
|
|
402
|
-
{
|
|
403
|
-
UNITY_PRINT_EOL();
|
|
404
|
-
}
|
|
405
407
|
Unity.TestIgnores++;
|
|
408
|
+
UNITY_PRINT_EOL();
|
|
406
409
|
}
|
|
407
410
|
else if (!Unity.CurrentTestFailed)
|
|
408
411
|
{
|
|
@@ -412,7 +415,7 @@ void UnityConcludeFixtureTest(void)
|
|
|
412
415
|
UNITY_PRINT_EOL();
|
|
413
416
|
}
|
|
414
417
|
}
|
|
415
|
-
else
|
|
418
|
+
else // Unity.CurrentTestFailed
|
|
416
419
|
{
|
|
417
420
|
Unity.TestFailures++;
|
|
418
421
|
UNITY_PRINT_EOL();
|