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
@@ -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
|
@@ -0,0 +1,135 @@
|
|
1
|
+
#! python3
|
2
|
+
# ==========================================
|
3
|
+
# Unity Project - A Test Framework for C
|
4
|
+
# Copyright (c) 2015 Alexander Mueller / XelaRellum@web.de
|
5
|
+
# [Released under MIT License. Please refer to license.txt for details]
|
6
|
+
# Based on the ruby script by Mike Karlesky, Mark VanderVoord, Greg Williams
|
7
|
+
# ==========================================
|
8
|
+
import sys
|
9
|
+
import os
|
10
|
+
import re
|
11
|
+
from glob import glob
|
12
|
+
|
13
|
+
class UnityTestSummary:
|
14
|
+
def __init__(self):
|
15
|
+
self.report = ''
|
16
|
+
self.total_tests = 0
|
17
|
+
self.failures = 0
|
18
|
+
self.ignored = 0
|
19
|
+
|
20
|
+
def run(self):
|
21
|
+
# Clean up result file names
|
22
|
+
results = []
|
23
|
+
for target in self.targets:
|
24
|
+
results.append(target.replace('\\', '/'))
|
25
|
+
|
26
|
+
# Dig through each result file, looking for details on pass/fail:
|
27
|
+
failure_output = []
|
28
|
+
ignore_output = []
|
29
|
+
|
30
|
+
for result_file in results:
|
31
|
+
lines = list(map(lambda line: line.rstrip(), open(result_file, "r").read().split('\n')))
|
32
|
+
if len(lines) == 0:
|
33
|
+
raise Exception("Empty test result file: %s" % result_file)
|
34
|
+
|
35
|
+
details = self.get_details(result_file, lines)
|
36
|
+
failures = details['failures']
|
37
|
+
ignores = details['ignores']
|
38
|
+
if len(failures) > 0: failure_output.append('\n'.join(failures))
|
39
|
+
if len(ignores) > 0: ignore_output.append('n'.join(ignores))
|
40
|
+
tests,failures,ignored = self.parse_test_summary('\n'.join(lines))
|
41
|
+
self.total_tests += tests
|
42
|
+
self.failures += failures
|
43
|
+
self.ignored += ignored
|
44
|
+
|
45
|
+
if self.ignored > 0:
|
46
|
+
self.report += "\n"
|
47
|
+
self.report += "--------------------------\n"
|
48
|
+
self.report += "UNITY IGNORED TEST SUMMARY\n"
|
49
|
+
self.report += "--------------------------\n"
|
50
|
+
self.report += "\n".join(ignore_output)
|
51
|
+
|
52
|
+
if self.failures > 0:
|
53
|
+
self.report += "\n"
|
54
|
+
self.report += "--------------------------\n"
|
55
|
+
self.report += "UNITY FAILED TEST SUMMARY\n"
|
56
|
+
self.report += "--------------------------\n"
|
57
|
+
self.report += '\n'.join(failure_output)
|
58
|
+
|
59
|
+
self.report += "\n"
|
60
|
+
self.report += "--------------------------\n"
|
61
|
+
self.report += "OVERALL UNITY TEST SUMMARY\n"
|
62
|
+
self.report += "--------------------------\n"
|
63
|
+
self.report += "{total_tests} TOTAL TESTS {failures} TOTAL FAILURES {ignored} IGNORED\n".format(total_tests = self.total_tests, failures=self.failures, ignored=self.ignored)
|
64
|
+
self.report += "\n"
|
65
|
+
|
66
|
+
return self.report
|
67
|
+
|
68
|
+
def set_targets(self, target_array):
|
69
|
+
self.targets = target_array
|
70
|
+
|
71
|
+
def set_root_path(self, path):
|
72
|
+
self.root = path
|
73
|
+
|
74
|
+
def usage(self, err_msg=None):
|
75
|
+
print("\nERROR: ")
|
76
|
+
if err_msg:
|
77
|
+
print(err_msg)
|
78
|
+
print("\nUsage: unity_test_summary.py result_file_directory/ root_path/")
|
79
|
+
print(" result_file_directory - The location of your results files.")
|
80
|
+
print(" Defaults to current directory if not specified.")
|
81
|
+
print(" Should end in / if specified.")
|
82
|
+
print(" root_path - Helpful for producing more verbose output if using relative paths.")
|
83
|
+
sys.exit(1)
|
84
|
+
|
85
|
+
def get_details(self, result_file, lines):
|
86
|
+
results = { 'failures': [], 'ignores': [], 'successes': [] }
|
87
|
+
for line in lines:
|
88
|
+
parts = line.split(':')
|
89
|
+
if len(parts) != 5:
|
90
|
+
continue
|
91
|
+
src_file,src_line,test_name,status,msg = parts
|
92
|
+
if len(self.root) > 0:
|
93
|
+
line_out = "%s%s" % (self.root, line)
|
94
|
+
else:
|
95
|
+
line_out = line
|
96
|
+
if status == 'IGNORE':
|
97
|
+
results['ignores'].append(line_out)
|
98
|
+
elif status == 'FAIL':
|
99
|
+
results['failures'].append(line_out)
|
100
|
+
elif status == 'PASS':
|
101
|
+
results['successes'].append(line_out)
|
102
|
+
return results
|
103
|
+
|
104
|
+
def parse_test_summary(self, summary):
|
105
|
+
m = re.search(r"([0-9]+) Tests ([0-9]+) Failures ([0-9]+) Ignored", summary)
|
106
|
+
if not m:
|
107
|
+
raise Exception("Couldn't parse test results: %s" % summary)
|
108
|
+
|
109
|
+
return int(m.group(1)), int(m.group(2)), int(m.group(3))
|
110
|
+
|
111
|
+
|
112
|
+
if __name__ == '__main__':
|
113
|
+
uts = UnityTestSummary()
|
114
|
+
try:
|
115
|
+
#look in the specified or current directory for result files
|
116
|
+
if len(sys.argv) > 1:
|
117
|
+
targets_dir = sys.argv[1]
|
118
|
+
else:
|
119
|
+
targets_dir = './'
|
120
|
+
targets = list(map(lambda x: x.replace('\\', '/'), glob(targets_dir + '*.test*')))
|
121
|
+
if len(targets) == 0:
|
122
|
+
raise Exception("No *.testpass or *.testfail files found in '%s'" % targets_dir)
|
123
|
+
uts.set_targets(targets)
|
124
|
+
|
125
|
+
#set the root path
|
126
|
+
if len(sys.argv) > 2:
|
127
|
+
root_path = sys.argv[2]
|
128
|
+
else:
|
129
|
+
root_path = os.path.split(__file__)[0]
|
130
|
+
uts.set_root_path(root_path)
|
131
|
+
|
132
|
+
#run the summarizer
|
133
|
+
print(uts.run())
|
134
|
+
except Exception as e:
|
135
|
+
uts.usage(e)
|
@@ -1,139 +1,148 @@
|
|
1
|
-
# ==========================================
|
2
|
-
# Unity Project - A Test Framework for C
|
3
|
-
# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
4
|
-
# [Released under MIT License. Please refer to license.txt for details]
|
5
|
-
# ==========================================
|
6
|
-
|
7
|
-
#!/usr/bin/ruby
|
8
|
-
#
|
9
|
-
# unity_test_summary.rb
|
10
|
-
#
|
11
|
-
require 'fileutils'
|
12
|
-
require 'set'
|
13
|
-
|
14
|
-
class UnityTestSummary
|
15
|
-
include FileUtils::Verbose
|
16
|
-
|
17
|
-
attr_reader :report, :total_tests, :failures, :ignored
|
18
|
-
|
19
|
-
def initialize
|
20
|
-
@report = ''
|
21
|
-
@total_tests = 0
|
22
|
-
@failures = 0
|
23
|
-
@ignored = 0
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
@
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
@report += "
|
53
|
-
@report += "--------------------------\n"
|
54
|
-
@report +=
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
@report += "
|
61
|
-
@report += "--------------------------\n"
|
62
|
-
@report +=
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
@report += "
|
68
|
-
@report += "--------------------------\n"
|
69
|
-
@report += "
|
70
|
-
@report += "
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
puts "\
|
85
|
-
puts
|
86
|
-
puts "
|
87
|
-
puts "
|
88
|
-
puts "
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
when '
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
end
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
#
|
135
|
-
|
136
|
-
|
137
|
-
uts.
|
138
|
-
|
139
|
-
|
1
|
+
# ==========================================
|
2
|
+
# Unity Project - A Test Framework for C
|
3
|
+
# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
4
|
+
# [Released under MIT License. Please refer to license.txt for details]
|
5
|
+
# ==========================================
|
6
|
+
|
7
|
+
#!/usr/bin/ruby
|
8
|
+
#
|
9
|
+
# unity_test_summary.rb
|
10
|
+
#
|
11
|
+
require 'fileutils'
|
12
|
+
require 'set'
|
13
|
+
|
14
|
+
class UnityTestSummary
|
15
|
+
include FileUtils::Verbose
|
16
|
+
|
17
|
+
attr_reader :report, :total_tests, :failures, :ignored
|
18
|
+
|
19
|
+
def initialize(opts = {})
|
20
|
+
@report = ''
|
21
|
+
@total_tests = 0
|
22
|
+
@failures = 0
|
23
|
+
@ignored = 0
|
24
|
+
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
def run
|
29
|
+
# Clean up result file names
|
30
|
+
results = @targets.map {|target| target.gsub(/\\/,'/')}
|
31
|
+
|
32
|
+
# Dig through each result file, looking for details on pass/fail:
|
33
|
+
failure_output = []
|
34
|
+
ignore_output = []
|
35
|
+
|
36
|
+
results.each do |result_file|
|
37
|
+
lines = File.readlines(result_file).map { |line| line.chomp }
|
38
|
+
if lines.length == 0
|
39
|
+
raise "Empty test result file: #{result_file}"
|
40
|
+
else
|
41
|
+
output = get_details(result_file, lines)
|
42
|
+
failure_output << output[:failures] unless output[:failures].empty?
|
43
|
+
ignore_output << output[:ignores] unless output[:ignores].empty?
|
44
|
+
tests,failures,ignored = parse_test_summary(lines)
|
45
|
+
@total_tests += tests
|
46
|
+
@failures += failures
|
47
|
+
@ignored += ignored
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
if @ignored > 0
|
52
|
+
@report += "\n"
|
53
|
+
@report += "--------------------------\n"
|
54
|
+
@report += "UNITY IGNORED TEST SUMMARY\n"
|
55
|
+
@report += "--------------------------\n"
|
56
|
+
@report += ignore_output.flatten.join("\n")
|
57
|
+
end
|
58
|
+
|
59
|
+
if @failures > 0
|
60
|
+
@report += "\n"
|
61
|
+
@report += "--------------------------\n"
|
62
|
+
@report += "UNITY FAILED TEST SUMMARY\n"
|
63
|
+
@report += "--------------------------\n"
|
64
|
+
@report += failure_output.flatten.join("\n")
|
65
|
+
end
|
66
|
+
|
67
|
+
@report += "\n"
|
68
|
+
@report += "--------------------------\n"
|
69
|
+
@report += "OVERALL UNITY TEST SUMMARY\n"
|
70
|
+
@report += "--------------------------\n"
|
71
|
+
@report += "#{@total_tests} TOTAL TESTS #{@failures} TOTAL FAILURES #{@ignored} IGNORED\n"
|
72
|
+
@report += "\n"
|
73
|
+
end
|
74
|
+
|
75
|
+
def set_targets(target_array)
|
76
|
+
@targets = target_array
|
77
|
+
end
|
78
|
+
|
79
|
+
def set_root_path(path)
|
80
|
+
@root = path
|
81
|
+
end
|
82
|
+
|
83
|
+
def usage(err_msg=nil)
|
84
|
+
puts "\nERROR: "
|
85
|
+
puts err_msg if err_msg
|
86
|
+
puts "\nUsage: unity_test_summary.rb result_file_directory/ root_path/"
|
87
|
+
puts " result_file_directory - The location of your results files."
|
88
|
+
puts " Defaults to current directory if not specified."
|
89
|
+
puts " Should end in / if specified."
|
90
|
+
puts " root_path - Helpful for producing more verbose output if using relative paths."
|
91
|
+
exit 1
|
92
|
+
end
|
93
|
+
|
94
|
+
protected
|
95
|
+
|
96
|
+
def get_details(result_file, lines)
|
97
|
+
results = { :failures => [], :ignores => [], :successes => [] }
|
98
|
+
lines.each do |line|
|
99
|
+
src_file,src_line,test_name,status,msg = line.split(/:/)
|
100
|
+
line_out = ((@root && (@root != 0)) ? "#{@root}#{line}" : line ).gsub(/\//, "\\")
|
101
|
+
case(status)
|
102
|
+
when 'IGNORE' then results[:ignores] << line_out
|
103
|
+
when 'FAIL' then results[:failures] << line_out
|
104
|
+
when 'PASS' then results[:successes] << line_out
|
105
|
+
end
|
106
|
+
end
|
107
|
+
return results
|
108
|
+
end
|
109
|
+
|
110
|
+
def parse_test_summary(summary)
|
111
|
+
if summary.find { |v| v =~ /(\d+) Tests (\d+) Failures (\d+) Ignored/ }
|
112
|
+
[$1.to_i,$2.to_i,$3.to_i]
|
113
|
+
else
|
114
|
+
raise "Couldn't parse test results: #{summary}"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def here; File.expand_path(File.dirname(__FILE__)); end
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
if $0 == __FILE__
|
123
|
+
|
124
|
+
#parse out the command options
|
125
|
+
opts, args = ARGV.partition {|v| v =~ /^--\w+/}
|
126
|
+
opts.map! {|v| v[2..-1].to_sym }
|
127
|
+
|
128
|
+
#create an instance to work with
|
129
|
+
uts = UnityTestSummary.new(opts)
|
130
|
+
|
131
|
+
begin
|
132
|
+
#look in the specified or current directory for result files
|
133
|
+
args[0] ||= './'
|
134
|
+
targets = "#{ARGV[0].gsub(/\\/, '/')}**/*.test*"
|
135
|
+
results = Dir[targets]
|
136
|
+
raise "No *.testpass, *.testfail, or *.testresults files found in '#{targets}'" if results.empty?
|
137
|
+
uts.set_targets(results)
|
138
|
+
|
139
|
+
#set the root path
|
140
|
+
args[1] ||= Dir.pwd + '/'
|
141
|
+
uts.set_root_path(ARGV[1])
|
142
|
+
|
143
|
+
#run the summarizer
|
144
|
+
puts uts.run
|
145
|
+
rescue Exception => e
|
146
|
+
uts.usage e.message
|
147
|
+
end
|
148
|
+
end
|