ceedling 0.15.1 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +9 -13
- data/README.md +21 -3
- data/{rakefile.rb → Rakefile} +0 -0
- data/lib/ceedling/version.rb +4 -4
- data/lib/ceedling/version.rb.erb +1 -1
- data/release/version.info +1 -1
- data/vendor/c_exception/Gemfile +1 -1
- data/vendor/c_exception/Gemfile.lock +12 -0
- data/vendor/c_exception/{docs/license.txt → LICENSE.txt} +9 -9
- data/vendor/c_exception/README.md +146 -0
- data/vendor/c_exception/{rakefile.rb → Rakefile} +6 -5
- data/vendor/c_exception/lib/CException.c +9 -6
- data/vendor/c_exception/release/build.info +1 -1
- data/vendor/c_exception/release/version.info +1 -1
- data/vendor/c_exception/test/CExceptionConfig.h +2 -0
- data/vendor/c_exception/test/TestException.c +4 -1
- data/vendor/cmock/README.md +24 -0
- data/vendor/cmock/{rakefile.rb → Rakefile} +12 -12
- data/vendor/cmock/docs/CMock Summary.odt +0 -0
- data/vendor/cmock/docs/CMock Summary.pdf +0 -0
- data/vendor/cmock/docs/CMock_Summary.md +130 -111
- data/vendor/cmock/docs/license.txt +1 -1
- data/vendor/cmock/lib/cmock.rb +36 -12
- data/vendor/cmock/lib/cmock_config.rb +39 -36
- data/vendor/cmock/lib/cmock_generator.rb +33 -25
- data/vendor/cmock/lib/cmock_generator_plugin_expect_any_args.rb +68 -0
- data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +18 -42
- data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +2 -2
- data/vendor/cmock/lib/cmock_generator_utils.rb +39 -29
- data/vendor/cmock/lib/cmock_header_parser.rb +46 -39
- data/vendor/cmock/rakefile_helper.rb +38 -38
- data/vendor/cmock/src/cmock.c +20 -4
- data/vendor/cmock/src/cmock.h +6 -1
- data/vendor/cmock/src/cmock_internals.h +26 -3
- data/vendor/cmock/targets/clang_strict.yml +85 -0
- data/vendor/cmock/targets/gcc.yml +4 -2
- data/vendor/cmock/targets/gcc_64.yml +55 -0
- data/vendor/cmock/test/c/TestCMockC.c +3 -3
- data/vendor/cmock/test/c/TestCMockCDynamic.c +11 -11
- data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +4 -2
- data/vendor/cmock/test/c/TestCMockC_Runner.c +1 -1
- data/vendor/cmock/test/system/systest_generator.rb +38 -26
- data/vendor/cmock/test/system/test_compilation/const.h +8 -3
- data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +92 -58
- data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +53 -48
- data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +58 -56
- data/vendor/cmock/test/system/test_interactions/basic_expect_and_return.yml +19 -18
- data/vendor/cmock/test/system/test_interactions/expect_and_return_custom_types.yml +13 -13
- data/vendor/cmock/test/system/test_interactions/expect_and_return_treat_as.yml +20 -20
- data/vendor/cmock/test/system/test_interactions/expect_any_args.yml +238 -0
- data/vendor/cmock/test/system/test_interactions/fancy_pointer_handling.yml +36 -34
- data/vendor/cmock/test/system/test_interactions/ignore_and_return.yml +24 -15
- data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_2.yml +11 -11
- data/vendor/cmock/test/system/test_interactions/return_thru_ptr_and_expect_any_args.yml +235 -0
- data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +22 -26
- data/vendor/cmock/test/system/test_interactions/stubs_with_callbacks.yml +31 -31
- data/vendor/cmock/test/unit/cmock_generator_main_test.rb +141 -109
- data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +82 -0
- data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +17 -81
- data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +10 -10
- data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +47 -41
- data/vendor/cmock/test/unit/cmock_header_parser_test.rb +290 -227
- data/vendor/unity/{rakefile.rb → Rakefile} +13 -6
- data/vendor/unity/auto/colour_prompt.rb +33 -12
- data/vendor/unity/auto/generate_test_runner.rb +67 -63
- data/vendor/unity/auto/parseOutput.rb +189 -0
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_1}/makefile +41 -40
- data/vendor/unity/examples/example_1/readme.txt +5 -0
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_1}/src/ProductionCode.c +24 -24
- data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_1}/src/ProductionCode.h +3 -3
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_1}/src/ProductionCode2.c +9 -9
- data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_1}/src/ProductionCode2.h +2 -2
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_1}/test/TestProductionCode.c +62 -62
- data/vendor/unity/examples/{test → example_1/test}/TestProductionCode2.c +31 -31
- data/vendor/unity/examples/{test/no_ruby → example_1/test/test_runners}/TestProductionCode2_Runner.c +46 -46
- data/vendor/unity/examples/{test/no_ruby → example_1/test/test_runners}/TestProductionCode_Runner.c +50 -50
- data/vendor/unity/examples/example_2/makefile +45 -0
- data/vendor/unity/examples/example_2/readme.txt +5 -0
- data/vendor/unity/examples/{src → example_2/src}/ProductionCode.c +24 -24
- data/vendor/unity/examples/{src → example_2/src}/ProductionCode.h +3 -3
- data/vendor/unity/examples/{src → example_2/src}/ProductionCode2.c +9 -9
- data/vendor/unity/examples/{src → example_2/src}/ProductionCode2.h +2 -2
- data/vendor/unity/examples/{test → example_2/test}/TestProductionCode.c +64 -62
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_2}/test/TestProductionCode2.c +33 -31
- data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
- data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
- data/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
- data/vendor/unity/examples/{helper → example_3/helper}/UnityHelper.c +10 -10
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/helper/UnityHelper.h +12 -12
- data/vendor/unity/examples/{makefile → example_3/makefile} +41 -40
- data/vendor/unity/examples/{rakefile.rb → example_3/rakefile.rb} +44 -43
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/rakefile_helper.rb +256 -256
- data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/readme.txt +18 -17
- data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/src/ProductionCode.c +24 -24
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/src/ProductionCode.h +3 -3
- data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/src/ProductionCode2.c +9 -9
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/src/ProductionCode2.h +2 -2
- data/vendor/{c_exception/vendor/unity/targets/gcc_64.yml → unity/examples/example_3/target_gcc_32.yml} +46 -44
- data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/test/TestProductionCode.c +62 -62
- data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/test/TestProductionCode2.c +31 -31
- data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/test/no_ruby/TestProductionCode2_Runner.c +46 -46
- data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/test/no_ruby/TestProductionCode_Runner.c +50 -50
- data/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
- data/vendor/unity/extras/fixture/src/unity_fixture.c +4 -1
- data/vendor/unity/extras/fixture/src/unity_fixture.h +17 -16
- data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +7 -7
- data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +17 -0
- data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +1 -0
- data/vendor/unity/makefile +6 -4
- data/vendor/unity/rakefile_helper.rb +36 -27
- data/vendor/unity/src/unity.c +180 -181
- data/vendor/unity/src/unity.h +64 -2
- data/vendor/unity/src/unity_internals.h +188 -102
- data/vendor/unity/targets/clang_strict.yml +83 -0
- data/vendor/unity/targets/gcc_32.yml +5 -0
- data/vendor/unity/targets/gcc_64.yml +5 -0
- data/vendor/{c_exception/vendor/unity/targets/gcc.yml → unity/targets/gcc_auto_limits.yml} +5 -2
- data/vendor/{cmock/vendor/unity/targets/gcc_64.yml → unity/targets/gcc_auto_sizeof.yml} +6 -3
- data/vendor/{cmock/vendor/unity/targets/gcc.yml → unity/targets/gcc_auto_stdint.yml} +4 -2
- data/vendor/unity/test/expectdata/testsample_cmd.c +57 -54
- data/vendor/unity/test/expectdata/testsample_def.c +53 -50
- data/vendor/unity/test/expectdata/testsample_mock_cmd.c +79 -76
- data/vendor/unity/test/expectdata/testsample_mock_def.c +75 -72
- data/vendor/unity/test/expectdata/testsample_mock_new1.c +88 -85
- data/vendor/unity/test/expectdata/testsample_mock_new2.c +88 -85
- data/vendor/unity/test/expectdata/testsample_mock_param.c +76 -73
- data/vendor/unity/test/expectdata/testsample_mock_run1.c +88 -85
- data/vendor/unity/test/expectdata/testsample_mock_run2.c +88 -85
- data/vendor/unity/test/expectdata/testsample_mock_yaml.c +89 -86
- data/vendor/unity/test/expectdata/testsample_new1.c +63 -60
- data/vendor/unity/test/expectdata/testsample_new2.c +66 -63
- data/vendor/unity/test/expectdata/testsample_param.c +54 -51
- data/vendor/unity/test/expectdata/testsample_run1.c +63 -60
- data/vendor/unity/test/expectdata/testsample_run2.c +66 -63
- data/vendor/unity/test/expectdata/testsample_yaml.c +67 -64
- data/vendor/unity/test/test_generate_test_runner.rb +66 -72
- data/vendor/unity/test/testunity.c +591 -111
- metadata +58 -195
- data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +0 -94
- data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +0 -39
- data/vendor/c_exception/vendor/unity/auto/generate_config.yml +0 -36
- data/vendor/c_exception/vendor/unity/auto/generate_module.rb +0 -202
- data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +0 -313
- data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +0 -23
- data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +0 -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 +0 -217
- data/vendor/c_exception/vendor/unity/docs/license.txt +0 -31
- data/vendor/c_exception/vendor/unity/examples/helper/UnityHelper.c +0 -10
- data/vendor/c_exception/vendor/unity/examples/helper/UnityHelper.h +0 -12
- data/vendor/c_exception/vendor/unity/examples/makefile +0 -40
- data/vendor/c_exception/vendor/unity/examples/rakefile.rb +0 -32
- data/vendor/c_exception/vendor/unity/examples/rakefile_helper.rb +0 -256
- data/vendor/c_exception/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +0 -50
- data/vendor/c_exception/vendor/unity/extras/fixture/build/MakefileWorker.mk +0 -331
- data/vendor/c_exception/vendor/unity/extras/fixture/build/filterGcov.sh +0 -61
- data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +0 -37
- data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +0 -178
- data/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +0 -9
- data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +0 -381
- data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +0 -81
- data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +0 -44
- data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +0 -16
- data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +0 -21
- data/vendor/c_exception/vendor/unity/extras/fixture/test/testunity_fixture.c +0 -39
- data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +0 -321
- data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +0 -40
- data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +0 -56
- data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +0 -17
- data/vendor/c_exception/vendor/unity/makefile +0 -35
- data/vendor/c_exception/vendor/unity/rakefile.rb +0 -59
- data/vendor/c_exception/vendor/unity/rakefile_helper.rb +0 -240
- data/vendor/c_exception/vendor/unity/release/build.info +0 -2
- data/vendor/c_exception/vendor/unity/release/version.info +0 -2
- data/vendor/c_exception/vendor/unity/src/unity.c +0 -979
- data/vendor/c_exception/vendor/unity/src/unity.h +0 -232
- data/vendor/c_exception/vendor/unity/src/unity_internals.h +0 -424
- data/vendor/c_exception/vendor/unity/targets/hitech_picc18.yml +0 -101
- data/vendor/c_exception/vendor/unity/targets/iar_arm_v4.yml +0 -89
- data/vendor/c_exception/vendor/unity/targets/iar_arm_v5.yml +0 -79
- data/vendor/c_exception/vendor/unity/targets/iar_arm_v5_3.yml +0 -79
- data/vendor/c_exception/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +0 -93
- data/vendor/c_exception/vendor/unity/targets/iar_cortexm3_v5.yml +0 -83
- data/vendor/c_exception/vendor/unity/targets/iar_msp430.yml +0 -94
- data/vendor/c_exception/vendor/unity/targets/iar_sh2a_v6.yml +0 -85
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +0 -54
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +0 -50
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +0 -76
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +0 -72
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +0 -85
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +0 -85
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +0 -73
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +0 -85
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +0 -85
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +0 -86
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +0 -60
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +0 -63
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +0 -51
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +0 -60
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +0 -63
- data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +0 -64
- data/vendor/c_exception/vendor/unity/test/test_generate_test_runner.rb +0 -94
- data/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +0 -51
- data/vendor/c_exception/vendor/unity/test/testdata/sample.yml +0 -9
- data/vendor/c_exception/vendor/unity/test/testdata/testsample.c +0 -51
- data/vendor/c_exception/vendor/unity/test/testparameterized.c +0 -101
- data/vendor/c_exception/vendor/unity/test/testunity.c +0 -2024
- data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
- data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
- data/vendor/cmock/vendor/c_exception/docs/license.txt +0 -30
- data/vendor/cmock/vendor/c_exception/docs/readme.txt +0 -236
- data/vendor/cmock/vendor/c_exception/lib/CException.c +0 -39
- data/vendor/cmock/vendor/c_exception/lib/CException.h +0 -70
- data/vendor/cmock/vendor/c_exception/makefile +0 -24
- data/vendor/cmock/vendor/c_exception/rakefile.rb +0 -41
- data/vendor/cmock/vendor/c_exception/release/build.info +0 -2
- data/vendor/cmock/vendor/c_exception/release/version.info +0 -2
- data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +0 -27
- data/vendor/cmock/vendor/c_exception/test/TestException.c +0 -291
- data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +0 -62
- data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +0 -94
- data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +0 -39
- data/vendor/cmock/vendor/unity/auto/generate_config.yml +0 -36
- data/vendor/cmock/vendor/unity/auto/generate_module.rb +0 -202
- data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +0 -313
- data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +0 -23
- data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +0 -139
- data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
- data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
- data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +0 -217
- data/vendor/cmock/vendor/unity/docs/license.txt +0 -31
- data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.c +0 -10
- data/vendor/cmock/vendor/unity/examples/rakefile.rb +0 -32
- data/vendor/cmock/vendor/unity/examples/readme.txt +0 -18
- data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +0 -46
- data/vendor/cmock/vendor/unity/extras/fixture/build/MakefileWorker.mk +0 -331
- data/vendor/cmock/vendor/unity/extras/fixture/build/filterGcov.sh +0 -61
- data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +0 -37
- data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +0 -178
- data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +0 -9
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +0 -381
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +0 -81
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +0 -44
- data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +0 -16
- data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +0 -21
- data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +0 -39
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +0 -321
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +0 -40
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +0 -56
- data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +0 -17
- data/vendor/cmock/vendor/unity/makefile +0 -35
- data/vendor/cmock/vendor/unity/rakefile.rb +0 -48
- data/vendor/cmock/vendor/unity/rakefile_helper.rb +0 -240
- data/vendor/cmock/vendor/unity/release/build.info +0 -2
- data/vendor/cmock/vendor/unity/release/version.info +0 -2
- data/vendor/cmock/vendor/unity/src/unity.c +0 -979
- data/vendor/cmock/vendor/unity/src/unity.h +0 -232
- data/vendor/cmock/vendor/unity/src/unity_internals.h +0 -424
- data/vendor/cmock/vendor/unity/targets/hitech_picc18.yml +0 -101
- data/vendor/cmock/vendor/unity/targets/iar_arm_v4.yml +0 -89
- data/vendor/cmock/vendor/unity/targets/iar_arm_v5.yml +0 -79
- data/vendor/cmock/vendor/unity/targets/iar_arm_v5_3.yml +0 -79
- data/vendor/cmock/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +0 -93
- data/vendor/cmock/vendor/unity/targets/iar_cortexm3_v5.yml +0 -83
- data/vendor/cmock/vendor/unity/targets/iar_msp430.yml +0 -94
- data/vendor/cmock/vendor/unity/targets/iar_sh2a_v6.yml +0 -85
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +0 -54
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +0 -50
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +0 -76
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +0 -72
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +0 -85
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +0 -85
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +0 -73
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +0 -85
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +0 -85
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +0 -86
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +0 -60
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +0 -63
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +0 -51
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +0 -60
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +0 -63
- data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +0 -64
- data/vendor/cmock/vendor/unity/test/test_generate_test_runner.rb +0 -94
- data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +0 -51
- data/vendor/cmock/vendor/unity/test/testdata/sample.yml +0 -9
- data/vendor/cmock/vendor/unity/test/testdata/testsample.c +0 -51
- data/vendor/cmock/vendor/unity/test/testparameterized.c +0 -101
- data/vendor/cmock/vendor/unity/test/testunity.c +0 -2024
- data/vendor/unity/Gemfile +0 -4
- data/vendor/unity/examples/helper/UnityHelper.h +0 -12
- data/vendor/unity/examples/rakefile_helper.rb +0 -256
- data/vendor/unity/examples/readme.txt +0 -18
|
@@ -4,7 +4,7 @@ class CMockGeneratorPluginReturnThruPtr
|
|
|
4
4
|
|
|
5
5
|
def initialize(config, utils)
|
|
6
6
|
@utils = utils
|
|
7
|
-
@priority =
|
|
7
|
+
@priority = 1
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def instance_typedefs(function)
|
|
@@ -26,7 +26,7 @@ class CMockGeneratorPluginReturnThruPtr
|
|
|
26
26
|
lines << "#define #{function[:name]}_ReturnThruPtr_#{arg[:name]}(#{arg[:name]})"
|
|
27
27
|
lines << " #{function[:name]}_CMockReturnMemThruPtr_#{arg[:name]}(__LINE__, #{arg[:name]}, sizeof(*#{arg[:name]}))\n"
|
|
28
28
|
lines << "#define #{function[:name]}_ReturnArrayThruPtr_#{arg[:name]}(#{arg[:name]}, cmock_len)"
|
|
29
|
-
lines << " #{function[:name]}_CMockReturnMemThruPtr_#{arg[:name]}(__LINE__, #{arg[:name]}, cmock_len * sizeof(*#{arg[:name]}))\n"
|
|
29
|
+
lines << " #{function[:name]}_CMockReturnMemThruPtr_#{arg[:name]}(__LINE__, #{arg[:name]}, (int)(cmock_len * (int)sizeof(*#{arg[:name]})))\n"
|
|
30
30
|
lines << "#define #{function[:name]}_ReturnMemThruPtr_#{arg[:name]}(#{arg[:name]}, cmock_size)"
|
|
31
31
|
lines << " #{function[:name]}_CMockReturnMemThruPtr_#{arg[:name]}(__LINE__, #{arg[:name]}, cmock_size)\n"
|
|
32
32
|
lines << "void #{function[:name]}_CMockReturnMemThruPtr_#{arg[:name]}(UNITY_LINE_TYPE cmock_line, #{arg[:type]} #{arg[:name]}, int cmock_size);\n"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# CMock Project - Automatic Mock Generation for C
|
|
3
3
|
# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
|
4
4
|
# [Released under MIT License. Please refer to license.txt for details]
|
|
5
|
-
# ==========================================
|
|
5
|
+
# ==========================================
|
|
6
6
|
|
|
7
7
|
class CMockGeneratorUtils
|
|
8
8
|
|
|
@@ -14,61 +14,67 @@ class CMockGeneratorUtils
|
|
|
14
14
|
@ordered = @config.enforce_strict_ordering
|
|
15
15
|
@arrays = @config.plugins.include? :array
|
|
16
16
|
@cexception = @config.plugins.include? :cexception
|
|
17
|
+
@expect_any = @config.plugins.include? :expect_any_args
|
|
17
18
|
@return_thru_ptr = @config.plugins.include? :return_thru_ptr
|
|
18
19
|
@ignore_arg = @config.plugins.include? :ignore_arg
|
|
20
|
+
@ignore = @config.plugins.include? :ignore
|
|
19
21
|
@treat_as = @config.treat_as
|
|
20
22
|
@helpers = helpers
|
|
21
|
-
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def code_verify_an_arg_expectation(function, arg)
|
|
22
26
|
if (@arrays)
|
|
23
27
|
case(@ptr_handling)
|
|
24
|
-
when :smart then
|
|
25
|
-
when :compare_data then
|
|
28
|
+
when :smart then code_verify_an_arg_expectation_with_smart_arrays(function, arg)
|
|
29
|
+
when :compare_data then code_verify_an_arg_expectation_with_normal_arrays(function, arg)
|
|
26
30
|
when :compare_ptr then raise "ERROR: the array plugin doesn't enjoy working with :compare_ptr only. Disable one option."
|
|
27
31
|
end
|
|
28
32
|
else
|
|
29
|
-
|
|
33
|
+
code_verify_an_arg_expectation_with_no_arrays(function, arg)
|
|
30
34
|
end
|
|
31
35
|
end
|
|
32
|
-
|
|
36
|
+
|
|
33
37
|
def code_add_base_expectation(func_name, global_ordering_supported=true)
|
|
34
38
|
lines = " CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_#{func_name}_CALL_INSTANCE));\n"
|
|
35
39
|
lines << " CMOCK_#{func_name}_CALL_INSTANCE* cmock_call_instance = (CMOCK_#{func_name}_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index);\n"
|
|
36
40
|
lines << " UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, \"CMock has run out of memory. Please allocate more.\");\n"
|
|
37
41
|
lines << " Mock.#{func_name}_CallInstance = CMock_Guts_MemChain(Mock.#{func_name}_CallInstance, cmock_guts_index);\n"
|
|
42
|
+
lines << " Mock.#{func_name}_IgnoreBool = (int)0;\n" if (@ignore)
|
|
38
43
|
lines << " cmock_call_instance->LineNumber = cmock_line;\n"
|
|
39
44
|
lines << " cmock_call_instance->CallOrder = ++GlobalExpectCount;\n" if (@ordered and global_ordering_supported)
|
|
40
45
|
lines << " cmock_call_instance->ExceptionToThrow = CEXCEPTION_NONE;\n" if (@cexception)
|
|
46
|
+
lines << " cmock_call_instance->IgnoreMode = CMOCK_ARG_ALL;\n" if (@expect_any)
|
|
41
47
|
lines
|
|
42
48
|
end
|
|
43
|
-
|
|
44
|
-
def code_add_an_arg_expectation(arg, depth=1)
|
|
49
|
+
|
|
50
|
+
def code_add_an_arg_expectation(arg, depth=1)
|
|
45
51
|
lines = code_assign_argument_quickly("cmock_call_instance->Expected_#{arg[:name]}", arg)
|
|
46
52
|
lines << " cmock_call_instance->Expected_#{arg[:name]}_Depth = #{arg[:name]}_Depth;\n" if (@arrays and (depth.class == String))
|
|
47
53
|
lines << " cmock_call_instance->IgnoreArg_#{arg[:name]} = 0;\n" if (@ignore_arg)
|
|
48
54
|
lines << " cmock_call_instance->ReturnThruPtr_#{arg[:name]}_Used = 0;\n" if (@return_thru_ptr and ptr_or_str?(arg[:type]) and not arg[:const?])
|
|
49
55
|
lines
|
|
50
56
|
end
|
|
51
|
-
|
|
52
|
-
def code_assign_argument_quickly(dest, arg)
|
|
57
|
+
|
|
58
|
+
def code_assign_argument_quickly(dest, arg)
|
|
53
59
|
if (arg[:ptr?] or @treat_as.include?(arg[:type]))
|
|
54
60
|
" #{dest} = #{arg[:const?] ? "(#{arg[:type]})" : ''}#{arg[:name]};\n"
|
|
55
61
|
else
|
|
56
62
|
" memcpy(&#{dest}, &#{arg[:name]}, sizeof(#{arg[:type]}));\n"
|
|
57
63
|
end
|
|
58
64
|
end
|
|
59
|
-
|
|
65
|
+
|
|
60
66
|
def code_add_argument_loader(function)
|
|
61
67
|
if (function[:args_string] != "void")
|
|
62
68
|
if (@arrays)
|
|
63
|
-
args_string = function[:args].map do |m|
|
|
69
|
+
args_string = function[:args].map do |m|
|
|
64
70
|
const_str = m[ :const? ] ? 'const ' : ''
|
|
65
71
|
m[:ptr?] ? "#{const_str}#{m[:type]} #{m[:name]}, int #{m[:name]}_Depth" : "#{const_str}#{m[:type]} #{m[:name]}"
|
|
66
72
|
end.join(', ')
|
|
67
|
-
"void CMockExpectParameters_#{function[:name]}(CMOCK_#{function[:name]}_CALL_INSTANCE* cmock_call_instance, #{args_string})\n{\n" +
|
|
73
|
+
"void CMockExpectParameters_#{function[:name]}(CMOCK_#{function[:name]}_CALL_INSTANCE* cmock_call_instance, #{args_string})\n{\n" +
|
|
68
74
|
function[:args].inject("") { |all, arg| all + code_add_an_arg_expectation(arg, (arg[:ptr?] ? "#{arg[:name]}_Depth" : 1) ) } +
|
|
69
75
|
"}\n\n"
|
|
70
76
|
else
|
|
71
|
-
"void CMockExpectParameters_#{function[:name]}(CMOCK_#{function[:name]}_CALL_INSTANCE* cmock_call_instance, #{function[:args_string]})\n{\n" +
|
|
77
|
+
"void CMockExpectParameters_#{function[:name]}(CMOCK_#{function[:name]}_CALL_INSTANCE* cmock_call_instance, #{function[:args_string]})\n{\n" +
|
|
72
78
|
function[:args].inject("") { |all, arg| all + code_add_an_arg_expectation(arg) } +
|
|
73
79
|
"}\n\n"
|
|
74
80
|
end
|
|
@@ -76,25 +82,25 @@ class CMockGeneratorUtils
|
|
|
76
82
|
""
|
|
77
83
|
end
|
|
78
84
|
end
|
|
79
|
-
|
|
85
|
+
|
|
80
86
|
def code_call_argument_loader(function)
|
|
81
87
|
if (function[:args_string] != "void")
|
|
82
88
|
args = function[:args].map do |m|
|
|
83
89
|
(@arrays and m[:ptr?]) ? "#{m[:name]}, 1" : m[:name]
|
|
84
90
|
end
|
|
85
|
-
" CMockExpectParameters_#{function[:name]}(cmock_call_instance, #{args.join(', ')});\n"
|
|
91
|
+
" CMockExpectParameters_#{function[:name]}(cmock_call_instance, #{args.join(', ')});\n"
|
|
86
92
|
else
|
|
87
93
|
""
|
|
88
94
|
end
|
|
89
95
|
end
|
|
90
|
-
|
|
96
|
+
|
|
91
97
|
def ptr_or_str?(arg_type)
|
|
92
98
|
return (arg_type.include? '*' or
|
|
93
99
|
@treat_as.fetch(arg_type, "").include? '*')
|
|
94
100
|
end
|
|
95
101
|
|
|
96
102
|
#private ######################
|
|
97
|
-
|
|
103
|
+
|
|
98
104
|
def lookup_expect_type(function, arg)
|
|
99
105
|
c_type = arg[:type]
|
|
100
106
|
arg_name = arg[:name]
|
|
@@ -108,7 +114,7 @@ class CMockGeneratorUtils
|
|
|
108
114
|
unity_msg = "Function '#{function[:name]}' called with unexpected value for argument '#{arg_name}'."
|
|
109
115
|
return c_type, arg_name, expected, ignore, unity_func[0], unity_func[1], unity_msg
|
|
110
116
|
end
|
|
111
|
-
|
|
117
|
+
|
|
112
118
|
def code_verify_an_arg_expectation_with_no_arrays(function, arg)
|
|
113
119
|
c_type, arg_name, expected, ignore, unity_func, pre, unity_msg = lookup_expect_type(function, arg)
|
|
114
120
|
lines = ""
|
|
@@ -124,17 +130,21 @@ class CMockGeneratorUtils
|
|
|
124
130
|
lines << " else\n"
|
|
125
131
|
lines << " { UNITY_TEST_ASSERT_EQUAL_MEMORY((void*)(#{pre}#{expected}), (void*)(#{pre}#{arg_name}), sizeof(#{c_type.sub('*','')}), cmock_line, \"#{unity_msg}\"); }\n"
|
|
126
132
|
when /_ARRAY/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
133
|
+
if (pre == '&')
|
|
134
|
+
lines << " #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, 1, cmock_line, \"#{unity_msg}\");\n"
|
|
135
|
+
else
|
|
136
|
+
lines << " if (#{pre}#{expected} == NULL)\n"
|
|
137
|
+
lines << " { UNITY_TEST_ASSERT_NULL(#{pre}#{arg_name}, cmock_line, \"Expected NULL. #{unity_msg}\"); }\n"
|
|
138
|
+
lines << " else\n"
|
|
139
|
+
lines << " { #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, 1, cmock_line, \"#{unity_msg}\"); }\n"
|
|
140
|
+
end
|
|
131
141
|
else
|
|
132
|
-
lines << " #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, cmock_line, \"#{unity_msg}\");\n"
|
|
142
|
+
lines << " #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, cmock_line, \"#{unity_msg}\");\n"
|
|
133
143
|
end
|
|
134
144
|
lines << " }\n"
|
|
135
145
|
lines
|
|
136
146
|
end
|
|
137
|
-
|
|
147
|
+
|
|
138
148
|
def code_verify_an_arg_expectation_with_normal_arrays(function, arg)
|
|
139
149
|
c_type, arg_name, expected, ignore, unity_func, pre, unity_msg = lookup_expect_type(function, arg)
|
|
140
150
|
depth_name = (arg[:ptr?]) ? "cmock_call_instance->Expected_#{arg_name}_Depth" : 1
|
|
@@ -160,12 +170,12 @@ class CMockGeneratorUtils
|
|
|
160
170
|
lines << " { #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, #{depth_name}, cmock_line, \"#{unity_msg}\"); }\n"
|
|
161
171
|
end
|
|
162
172
|
else
|
|
163
|
-
lines << " #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, cmock_line, \"#{unity_msg}\");\n"
|
|
173
|
+
lines << " #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, cmock_line, \"#{unity_msg}\");\n"
|
|
164
174
|
end
|
|
165
175
|
lines << " }\n"
|
|
166
176
|
lines
|
|
167
177
|
end
|
|
168
|
-
|
|
178
|
+
|
|
169
179
|
def code_verify_an_arg_expectation_with_smart_arrays(function, arg)
|
|
170
180
|
c_type, arg_name, expected, ignore, unity_func, pre, unity_msg = lookup_expect_type(function, arg)
|
|
171
181
|
depth_name = (arg[:ptr?]) ? "cmock_call_instance->Expected_#{arg_name}_Depth" : 1
|
|
@@ -193,10 +203,10 @@ class CMockGeneratorUtils
|
|
|
193
203
|
lines << " { #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, #{depth_name}, cmock_line, \"#{unity_msg}\"); }\n"
|
|
194
204
|
end
|
|
195
205
|
else
|
|
196
|
-
lines << " #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, cmock_line, \"#{unity_msg}\");\n"
|
|
206
|
+
lines << " #{unity_func}(#{pre}#{expected}, #{pre}#{arg_name}, cmock_line, \"#{unity_msg}\");\n"
|
|
197
207
|
end
|
|
198
208
|
lines << " }\n"
|
|
199
209
|
lines
|
|
200
210
|
end
|
|
201
|
-
|
|
211
|
+
|
|
202
212
|
end
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
# CMock Project - Automatic Mock Generation for C
|
|
3
3
|
# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
|
4
4
|
# [Released under MIT License. Please refer to license.txt for details]
|
|
5
|
-
# ==========================================
|
|
5
|
+
# ==========================================
|
|
6
6
|
|
|
7
7
|
class CMockHeaderParser
|
|
8
8
|
|
|
9
9
|
attr_accessor :funcs, :c_attributes, :treat_as_void, :treat_externs
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
def initialize(cfg)
|
|
12
12
|
@funcs = []
|
|
13
13
|
@c_strippables = cfg.strippables
|
|
@@ -22,31 +22,34 @@ class CMockHeaderParser
|
|
|
22
22
|
@treat_externs = cfg.treat_externs
|
|
23
23
|
@c_strippables += ['extern'] if (@treat_externs == :include) #we'll need to remove the attribute if we're allowing externs
|
|
24
24
|
end
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
def parse(name, source)
|
|
27
27
|
@module_name = name.gsub(/\W/,'')
|
|
28
28
|
@typedefs = []
|
|
29
29
|
@funcs = []
|
|
30
30
|
function_names = []
|
|
31
|
-
|
|
32
|
-
parse_functions( import_source(source) ).map do |decl|
|
|
31
|
+
|
|
32
|
+
parse_functions( import_source(source) ).map do |decl|
|
|
33
33
|
func = parse_declaration(decl)
|
|
34
34
|
unless (function_names.include? func[:name])
|
|
35
35
|
@funcs << func
|
|
36
36
|
function_names << func[:name]
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
{ :includes => nil,
|
|
41
41
|
:functions => @funcs,
|
|
42
42
|
:typedefs => @typedefs
|
|
43
43
|
}
|
|
44
44
|
end
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
private if $ThisIsOnlyATest.nil? ################
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
def import_source(source)
|
|
49
49
|
|
|
50
|
+
# let's clean up the encoding in case they've done anything weird with the characters we might find
|
|
51
|
+
source = source.force_encoding("ISO-8859-1").encode("utf-8", :replace => nil) if ($QUICK_RUBY_VERSION > 10900)
|
|
52
|
+
|
|
50
53
|
# void must be void for cmock _ExpectAndReturn calls to process properly, not some weird typedef which equates to void
|
|
51
54
|
# to a certain extent, this action assumes we're chewing on pre-processed header files, otherwise we'll most likely just get stuff from @treat_as_void
|
|
52
55
|
@local_as_void = @treat_as_void
|
|
@@ -54,48 +57,49 @@ class CMockHeaderParser
|
|
|
54
57
|
if void_types
|
|
55
58
|
@local_as_void += void_types.flatten.uniq.compact
|
|
56
59
|
end
|
|
57
|
-
|
|
60
|
+
|
|
58
61
|
# smush multiline macros into single line (checking for continuation character at end of line '\')
|
|
59
62
|
source.gsub!(/\s*\\\s*/m, ' ')
|
|
60
|
-
|
|
63
|
+
|
|
61
64
|
#remove comments (block and line, in three steps to ensure correct precedence)
|
|
62
65
|
source.gsub!(/\/\/(?:.+\/\*|\*(?:$|[^\/])).*$/, '') # remove line comments that comment out the start of blocks
|
|
63
|
-
source.gsub!(/\/\*.*?\*\//m, '') # remove block comments
|
|
66
|
+
source.gsub!(/\/\*.*?\*\//m, '') # remove block comments
|
|
64
67
|
source.gsub!(/\/\/.*$/, '') # remove line comments (all that remain)
|
|
65
68
|
|
|
66
69
|
# remove assembler pragma sections
|
|
67
70
|
source.gsub!(/^\s*#\s*pragma\s+asm\s+.*?#\s*pragma\s+endasm/m, '')
|
|
68
|
-
|
|
71
|
+
|
|
69
72
|
# remove gcc's __attribute__ tags
|
|
70
|
-
source.gsub(/
|
|
71
|
-
|
|
72
|
-
# remove preprocessor statements and extern "C"
|
|
73
|
+
source.gsub!(/__attribute(?:__)?\s*\(\(+.*\)\)+/, '')
|
|
74
|
+
|
|
75
|
+
# remove preprocessor statements and extern "C"
|
|
73
76
|
source.gsub!(/^\s*#.*/, '')
|
|
74
77
|
source.gsub!(/extern\s+\"C\"\s+\{/, '')
|
|
75
|
-
|
|
78
|
+
|
|
76
79
|
# enums, unions, structs, and typedefs can all contain things (e.g. function pointers) that parse like function prototypes, so yank them
|
|
77
80
|
# forward declared structs are removed before struct definitions so they don't mess up real thing later. we leave structs keywords in function prototypes
|
|
78
81
|
source.gsub!(/^[\w\s]*struct[^;\{\}\(\)]+;/m, '') # remove forward declared structs
|
|
79
82
|
source.gsub!(/^[\w\s]*(enum|union|struct|typepdef)[\w\s]*\{[^\}]+\}[\w\s\*\,]*;/m, '') # remove struct, union, and enum definitions and typedefs with braces
|
|
80
83
|
source.gsub!(/(\W)(?:register|auto|static|restrict)(\W)/, '\1\2') # remove problem keywords
|
|
81
84
|
source.gsub!(/\s*=\s*['"a-zA-Z0-9_\.]+\s*/, '') # remove default value statements from argument lists
|
|
82
|
-
source.gsub!(/^(?:[\w\s]*\W)?typedef\W
|
|
85
|
+
source.gsub!(/^(?:[\w\s]*\W)?typedef\W[^;]*/m, '') # remove typedef statements
|
|
86
|
+
source.gsub!(/\)(\w)/, ') \1') # add space between parenthese and alphanumeric
|
|
83
87
|
source.gsub!(/(^|\W+)(?:#{@c_strippables.join('|')})(?=$|\W+)/,'\1') unless @c_strippables.empty? # remove known attributes slated to be stripped
|
|
84
|
-
|
|
88
|
+
|
|
85
89
|
#scan for functions which return function pointers, because they are a pain
|
|
86
90
|
source.gsub!(/([\w\s\*]+)\(*\(\s*\*([\w\s\*]+)\s*\(([\w\s\*,]*)\)\)\s*\(([\w\s\*,]*)\)\)*/) do |m|
|
|
87
91
|
functype = "cmock_#{@module_name}_func_ptr#{@typedefs.size + 1}"
|
|
88
92
|
@typedefs << "typedef #{$1.strip}(*#{functype})(#{$4});"
|
|
89
93
|
"#{functype} #{$2.strip}(#{$3});"
|
|
90
94
|
end
|
|
91
|
-
|
|
95
|
+
|
|
92
96
|
#drop extra white space to make the rest go faster
|
|
93
97
|
source.gsub!(/^\s+/, '') # remove extra white space from beginning of line
|
|
94
98
|
source.gsub!(/\s+$/, '') # remove extra white space from end of line
|
|
95
99
|
source.gsub!(/\s*\(\s*/, '(') # remove extra white space from before left parens
|
|
96
100
|
source.gsub!(/\s*\)\s*/, ')') # remove extra white space from before right parens
|
|
97
101
|
source.gsub!(/\s+/, ' ') # remove remaining extra white space
|
|
98
|
-
|
|
102
|
+
|
|
99
103
|
#split lines on semicolons and remove things that are obviously not what we are looking for
|
|
100
104
|
src_lines = source.split(/\s*;\s*/)
|
|
101
105
|
src_lines.delete_if {|line| line.strip.length == 0} # remove blank lines
|
|
@@ -105,6 +109,9 @@ class CMockHeaderParser
|
|
|
105
109
|
else
|
|
106
110
|
src_lines.delete_if {|line| !(line =~ /(?:^|\s+)(?:extern|inline)\s+/).nil?} # remove inline and extern functions
|
|
107
111
|
end
|
|
112
|
+
src_lines.delete_if {|line| !(line =~ /\{/).nil? } # remove lines with opening braces { because this isn't a declaration, it's a definition!
|
|
113
|
+
src_lines.map!{|line| line.gsub(/.*\}/,'')} #remove braces left at the beginning of lines
|
|
114
|
+
src_lines.delete_if {|line| line.empty? } #drop empty lines
|
|
108
115
|
end
|
|
109
116
|
|
|
110
117
|
def parse_functions(source)
|
|
@@ -113,23 +120,23 @@ class CMockHeaderParser
|
|
|
113
120
|
if funcs.empty?
|
|
114
121
|
case @when_no_prototypes
|
|
115
122
|
when :error
|
|
116
|
-
raise "ERROR: No function prototypes found!"
|
|
123
|
+
raise "ERROR: No function prototypes found!"
|
|
117
124
|
when :warn
|
|
118
125
|
puts "WARNING: No function prototypes found!" unless (@verbosity < 1)
|
|
119
126
|
end
|
|
120
127
|
end
|
|
121
128
|
return funcs
|
|
122
129
|
end
|
|
123
|
-
|
|
130
|
+
|
|
124
131
|
def parse_args(arg_list)
|
|
125
132
|
args = []
|
|
126
133
|
arg_list.split(',').each do |arg|
|
|
127
|
-
arg.strip!
|
|
134
|
+
arg.strip!
|
|
128
135
|
return args if (arg =~ /^\s*((\.\.\.)|(void))\s*$/) # we're done if we reach void by itself or ...
|
|
129
136
|
arg_array = arg.split
|
|
130
137
|
arg_elements = arg_array - @c_attributes # split up words and remove known attributes
|
|
131
|
-
args << { :type => (arg_type =arg_elements[0..-2].join(' ')),
|
|
132
|
-
:name => arg_elements[-1],
|
|
138
|
+
args << { :type => (arg_type =arg_elements[0..-2].join(' ')),
|
|
139
|
+
:name => arg_elements[-1],
|
|
133
140
|
:ptr? => divine_ptr(arg_type),
|
|
134
141
|
:const? => arg_array.include?('const')
|
|
135
142
|
}
|
|
@@ -151,7 +158,7 @@ class CMockHeaderParser
|
|
|
151
158
|
arg_list.gsub!(/(\w+)(?:\s*\[[\s\d\w+-]*\])+/,'*\1') # magically turn brackets into asterisks
|
|
152
159
|
arg_list.gsub!(/\s+\*/,'*') # remove space to place asterisks with type (where they belong)
|
|
153
160
|
arg_list.gsub!(/\*(\w)/,'* \1') # pull asterisks away from arg to place asterisks with type (where they belong)
|
|
154
|
-
|
|
161
|
+
|
|
155
162
|
#scan argument list for function pointers and replace them with custom types
|
|
156
163
|
arg_list.gsub!(/([\w\s\*]+)\(+\s*\*[\*\s]*([\w\s]*)\s*\)+\s*\(((?:[\w\s\*]*,?)*)\s*\)*/) do |m|
|
|
157
164
|
|
|
@@ -168,25 +175,25 @@ class CMockHeaderParser
|
|
|
168
175
|
funcname = "cmock_arg#{c+=1}" if (funcname.empty?)
|
|
169
176
|
"#{functype} #{funconst}#{funcname}"
|
|
170
177
|
end
|
|
171
|
-
|
|
178
|
+
|
|
172
179
|
#automatically name unnamed arguments (those that only had a type)
|
|
173
|
-
arg_list.split(/\s*,\s*/).map { |arg|
|
|
180
|
+
arg_list.split(/\s*,\s*/).map { |arg|
|
|
174
181
|
parts = (arg.split - ['struct', 'union', 'enum', 'const', 'const*'])
|
|
175
182
|
if ((parts.size < 2) or (parts[-1][-1].chr == '*') or (@standards.include?(parts[-1])))
|
|
176
|
-
"#{arg} cmock_arg#{c+=1}"
|
|
183
|
+
"#{arg} cmock_arg#{c+=1}"
|
|
177
184
|
else
|
|
178
185
|
arg
|
|
179
186
|
end
|
|
180
187
|
}.join(', ')
|
|
181
188
|
end
|
|
182
189
|
end
|
|
183
|
-
|
|
190
|
+
|
|
184
191
|
def parse_declaration(declaration)
|
|
185
192
|
decl = {}
|
|
186
|
-
|
|
193
|
+
|
|
187
194
|
regex_match = @declaration_parse_matcher.match(declaration)
|
|
188
|
-
raise "Failed parsing function declaration: '#{declaration}'" if regex_match.nil?
|
|
189
|
-
|
|
195
|
+
raise "Failed parsing function declaration: '#{declaration}'" if regex_match.nil?
|
|
196
|
+
|
|
190
197
|
#grab argument list
|
|
191
198
|
args = regex_match[2].strip
|
|
192
199
|
|
|
@@ -214,17 +221,17 @@ class CMockHeaderParser
|
|
|
214
221
|
decl[:modifier] = decl[:modifier].join(' ')
|
|
215
222
|
rettype = rettype.join(' ')
|
|
216
223
|
rettype = 'void' if (@local_as_void.include?(rettype.strip))
|
|
217
|
-
decl[:return] = { :type => rettype,
|
|
218
|
-
:name => 'cmock_to_return',
|
|
224
|
+
decl[:return] = { :type => rettype,
|
|
225
|
+
:name => 'cmock_to_return',
|
|
219
226
|
:ptr? => divine_ptr(rettype),
|
|
220
|
-
:const? =>
|
|
227
|
+
:const? => decl[:modifier].split(/\s/).include?('const'),
|
|
221
228
|
:str => "#{rettype} cmock_to_return",
|
|
222
229
|
:void? => (rettype == 'void')
|
|
223
230
|
}
|
|
224
|
-
|
|
231
|
+
|
|
225
232
|
#remove default argument statements from mock definitions
|
|
226
233
|
args.gsub!(/=\s*[a-zA-Z0-9_\.]+\s*/, ' ')
|
|
227
|
-
|
|
234
|
+
|
|
228
235
|
#check for var args
|
|
229
236
|
if (args =~ /\.\.\./)
|
|
230
237
|
decl[:var_arg] = args.match( /[\w\s]*\.\.\./ ).to_s.strip
|
|
@@ -241,7 +248,7 @@ class CMockHeaderParser
|
|
|
241
248
|
decl[:args] = parse_args(args)
|
|
242
249
|
decl[:args_call] = decl[:args].map{|a| a[:name]}.join(', ')
|
|
243
250
|
decl[:contains_ptr?] = decl[:args].inject(false) {|ptr, arg| arg[:ptr?] ? true : ptr }
|
|
244
|
-
|
|
251
|
+
|
|
245
252
|
if (decl[:return][:type].nil? or decl[:name].nil? or decl[:args].nil? or
|
|
246
253
|
decl[:return][:type].empty? or decl[:name].empty?)
|
|
247
254
|
raise "Failed Parsing Declaration Prototype!\n" +
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# CMock Project - Automatic Mock Generation for C
|
|
3
3
|
# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
|
4
4
|
# [Released under MIT License. Please refer to license.txt for details]
|
|
5
|
-
# ==========================================
|
|
5
|
+
# ==========================================
|
|
6
6
|
|
|
7
7
|
require 'yaml'
|
|
8
8
|
require 'fileutils'
|
|
@@ -18,23 +18,23 @@ module RakefileHelpers
|
|
|
18
18
|
SYSTEST_COMPILE_MOCKABLES_PATH = 'test/system/test_compilation/'
|
|
19
19
|
C_EXTENSION = '.c'
|
|
20
20
|
RESULT_EXTENSION = '.result'
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
def load_configuration(config_file)
|
|
23
23
|
$cfg_file = config_file
|
|
24
24
|
$cfg = YAML.load(File.read('./targets/' + $cfg_file))
|
|
25
25
|
$colour_output = false unless $cfg['colour']
|
|
26
26
|
end
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
def configure_clean
|
|
29
29
|
CLEAN.include(SYSTEST_GENERATED_FILES_PATH + '*.*')
|
|
30
30
|
CLEAN.include(SYSTEST_BUILD_FILES_PATH + '*.*')
|
|
31
31
|
end
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
def configure_toolchain(config_file)
|
|
34
34
|
load_configuration(config_file)
|
|
35
35
|
configure_clean
|
|
36
36
|
end
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
def get_local_include_dirs
|
|
39
39
|
include_dirs = $cfg['compiler']['includes']['items'].dup
|
|
40
40
|
include_dirs.delete_if {|dir| dir.is_a?(Array)}
|
|
@@ -90,7 +90,7 @@ module RakefileHelpers
|
|
|
90
90
|
execute(cmd_str + obj_file)
|
|
91
91
|
return obj_file
|
|
92
92
|
end
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
def build_linker_fields
|
|
95
95
|
command = tackit($cfg['linker']['path'])
|
|
96
96
|
if $cfg['linker']['options'].nil?
|
|
@@ -106,7 +106,7 @@ module RakefileHelpers
|
|
|
106
106
|
includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
|
|
107
107
|
return {:command => command, :options => options, :includes => includes}
|
|
108
108
|
end
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
def link_it(exe_name, obj_list)
|
|
111
111
|
linker = build_linker_fields
|
|
112
112
|
cmd_str = "#{linker[:command]}#{linker[:options]}#{linker[:includes]} " +
|
|
@@ -116,7 +116,7 @@ module RakefileHelpers
|
|
|
116
116
|
exe_name + $cfg['linker']['bin_files']['extension']
|
|
117
117
|
execute(cmd_str)
|
|
118
118
|
end
|
|
119
|
-
|
|
119
|
+
|
|
120
120
|
def build_simulator_fields
|
|
121
121
|
return nil if $cfg['simulator'].nil?
|
|
122
122
|
if $cfg['simulator']['path'].nil?
|
|
@@ -136,7 +136,7 @@ module RakefileHelpers
|
|
|
136
136
|
end
|
|
137
137
|
return {:command => command, :pre_support => pre_support, :post_support => post_support}
|
|
138
138
|
end
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
def execute(command_string, verbose=true, raise_on_failure=true)
|
|
141
141
|
#report command_string
|
|
142
142
|
output = `#{command_string}`.chomp
|
|
@@ -146,7 +146,7 @@ module RakefileHelpers
|
|
|
146
146
|
end
|
|
147
147
|
return output
|
|
148
148
|
end
|
|
149
|
-
|
|
149
|
+
|
|
150
150
|
def tackit(strings)
|
|
151
151
|
case(strings)
|
|
152
152
|
when Array
|
|
@@ -159,7 +159,7 @@ module RakefileHelpers
|
|
|
159
159
|
strings
|
|
160
160
|
end
|
|
161
161
|
end
|
|
162
|
-
|
|
162
|
+
|
|
163
163
|
def report_summary
|
|
164
164
|
summary = UnityTestSummary.new
|
|
165
165
|
summary.set_root_path(File.expand_path(File.dirname(__FILE__)) + '/')
|
|
@@ -170,28 +170,28 @@ module RakefileHelpers
|
|
|
170
170
|
summary.run
|
|
171
171
|
fail_out "FAIL: There were failures" if (summary.failures > 0)
|
|
172
172
|
end
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
def run_system_test_interactions(test_case_files)
|
|
175
175
|
load './lib/cmock.rb'
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
SystemTestGenerator.new.generate_files(test_case_files)
|
|
178
178
|
test_files = FileList.new(SYSTEST_GENERATED_FILES_PATH + 'test*.c')
|
|
179
|
-
|
|
179
|
+
|
|
180
180
|
load_configuration($cfg_file)
|
|
181
181
|
$cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
|
|
182
|
-
|
|
182
|
+
|
|
183
183
|
include_dirs = get_local_include_dirs
|
|
184
184
|
|
|
185
185
|
# Build and execute each unit test
|
|
186
186
|
test_files.each do |test|
|
|
187
187
|
|
|
188
188
|
obj_list = []
|
|
189
|
-
|
|
189
|
+
|
|
190
190
|
test_base = File.basename(test, C_EXTENSION)
|
|
191
191
|
cmock_config = test_base.gsub(/test_/, '') + '_cmock.yml'
|
|
192
|
-
|
|
192
|
+
|
|
193
193
|
report "Executing system tests in #{File.basename(test)}..."
|
|
194
|
-
|
|
194
|
+
|
|
195
195
|
# Detect dependencies and build required required modules
|
|
196
196
|
extract_headers(test).each do |header|
|
|
197
197
|
|
|
@@ -213,13 +213,13 @@ module RakefileHelpers
|
|
|
213
213
|
runner_path = $cfg['compiler']['source_path'] + runner_name
|
|
214
214
|
UnityTestRunnerGenerator.new(SYSTEST_GENERATED_FILES_PATH + cmock_config).run(test, runner_path)
|
|
215
215
|
obj_list << compile(runner_path)
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
# Build the test module
|
|
218
218
|
obj_list << compile(test)
|
|
219
|
-
|
|
219
|
+
|
|
220
220
|
# Link the test executable
|
|
221
221
|
link_it(test_base, obj_list)
|
|
222
|
-
|
|
222
|
+
|
|
223
223
|
# Execute unit test and generate results file
|
|
224
224
|
simulator = build_simulator_fields
|
|
225
225
|
executable = $cfg['linker']['bin_files']['destination'] + test_base + $cfg['linker']['bin_files']['extension']
|
|
@@ -232,19 +232,19 @@ module RakefileHelpers
|
|
|
232
232
|
test_results = $cfg['compiler']['build_path'] + test_base + RESULT_EXTENSION
|
|
233
233
|
File.open(test_results, 'w') { |f| f.print output }
|
|
234
234
|
end
|
|
235
|
-
|
|
235
|
+
|
|
236
236
|
# Parse and report test results
|
|
237
237
|
total_tests = 0
|
|
238
238
|
total_failures = 0
|
|
239
239
|
failure_messages = []
|
|
240
240
|
|
|
241
|
-
test_case_files.each do |test_case|
|
|
241
|
+
test_case_files.each do |test_case|
|
|
242
242
|
tests = (YAML.load_file(test_case))[:systest][:tests][:units]
|
|
243
243
|
total_tests += tests.size
|
|
244
244
|
|
|
245
245
|
test_file = 'test_' + File.basename(test_case).ext(C_EXTENSION)
|
|
246
246
|
result_file = test_file.ext(RESULT_EXTENSION)
|
|
247
|
-
test_results = File.readlines(SYSTEST_BUILD_FILES_PATH + result_file)
|
|
247
|
+
test_results = File.readlines(SYSTEST_BUILD_FILES_PATH + result_file).reject {|line| line.size < 10 } # we're rejecting lines that are too short to be realistic, which handles line ending problems
|
|
248
248
|
tests.each_with_index do |test, index|
|
|
249
249
|
# compare test's intended pass/fail state with pass/fail state in actual results;
|
|
250
250
|
# if they don't match, the system test has failed
|
|
@@ -268,26 +268,26 @@ module RakefileHelpers
|
|
|
268
268
|
end
|
|
269
269
|
end
|
|
270
270
|
end
|
|
271
|
-
|
|
271
|
+
|
|
272
272
|
report "\n"
|
|
273
273
|
report "------------------------------------\n"
|
|
274
274
|
report "SYSTEM TEST MOCK INTERACTION SUMMARY\n"
|
|
275
275
|
report "------------------------------------\n"
|
|
276
276
|
report "#{total_tests} Tests #{total_failures} Failures 0 Ignored\n"
|
|
277
277
|
report "\n"
|
|
278
|
-
|
|
278
|
+
|
|
279
279
|
if (failure_messages.size > 0)
|
|
280
280
|
report 'System test failures:'
|
|
281
281
|
failure_messages.each do |failure|
|
|
282
282
|
report failure
|
|
283
283
|
end
|
|
284
284
|
end
|
|
285
|
-
|
|
285
|
+
|
|
286
286
|
report ''
|
|
287
287
|
|
|
288
288
|
return total_failures
|
|
289
289
|
end
|
|
290
|
-
|
|
290
|
+
|
|
291
291
|
def profile_this(filename)
|
|
292
292
|
profile = true
|
|
293
293
|
begin
|
|
@@ -296,9 +296,9 @@ module RakefileHelpers
|
|
|
296
296
|
rescue
|
|
297
297
|
profile = false
|
|
298
298
|
end
|
|
299
|
-
|
|
299
|
+
|
|
300
300
|
yield
|
|
301
|
-
|
|
301
|
+
|
|
302
302
|
if (profile)
|
|
303
303
|
profile_result = RubyProf.stop
|
|
304
304
|
File.open("Profile_#{filename}.html", 'w') do |f|
|
|
@@ -306,10 +306,10 @@ module RakefileHelpers
|
|
|
306
306
|
end
|
|
307
307
|
end
|
|
308
308
|
end
|
|
309
|
-
|
|
309
|
+
|
|
310
310
|
def run_system_test_compilations(mockables)
|
|
311
311
|
load './lib/cmock.rb'
|
|
312
|
-
|
|
312
|
+
|
|
313
313
|
load_configuration($cfg_file)
|
|
314
314
|
$cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
|
|
315
315
|
|
|
@@ -324,10 +324,10 @@ module RakefileHelpers
|
|
|
324
324
|
compile(SYSTEST_GENERATED_FILES_PATH + mock_filename)
|
|
325
325
|
end
|
|
326
326
|
end
|
|
327
|
-
|
|
327
|
+
|
|
328
328
|
def run_system_test_profiles(mockables)
|
|
329
329
|
load './lib/cmock.rb'
|
|
330
|
-
|
|
330
|
+
|
|
331
331
|
load_configuration($cfg_file)
|
|
332
332
|
$cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
|
|
333
333
|
|
|
@@ -337,8 +337,8 @@ module RakefileHelpers
|
|
|
337
337
|
report "--------------------------\n"
|
|
338
338
|
mockables.each do |header|
|
|
339
339
|
mock_filename = 'mock_' + File.basename(header).ext('.c')
|
|
340
|
-
profile_this(mock_filename.gsub('.c','')) do
|
|
341
|
-
10.times do
|
|
340
|
+
profile_this(mock_filename.gsub('.c','')) do
|
|
341
|
+
10.times do
|
|
342
342
|
CMock.new(SYSTEST_COMPILE_MOCKABLES_PATH + 'config.yml').setup_mocks(header)
|
|
343
343
|
end
|
|
344
344
|
end
|
|
@@ -346,7 +346,7 @@ module RakefileHelpers
|
|
|
346
346
|
compile(SYSTEST_GENERATED_FILES_PATH + mock_filename)
|
|
347
347
|
end
|
|
348
348
|
end
|
|
349
|
-
|
|
349
|
+
|
|
350
350
|
def build_and_test_c_files
|
|
351
351
|
report "\n"
|
|
352
352
|
report "----------------\n"
|
|
@@ -372,7 +372,7 @@ module RakefileHelpers
|
|
|
372
372
|
end
|
|
373
373
|
end
|
|
374
374
|
end
|
|
375
|
-
|
|
375
|
+
|
|
376
376
|
def fail_out(msg)
|
|
377
377
|
puts msg
|
|
378
378
|
exit(-1)
|