ceedling 0.19.0 → 0.20.2
Sign up to get free protection for your applications and to get access to all the features.
- 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();
|