ceedling 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +17 -13
  3. data/ceedling-0.18.0.gem +0 -0
  4. data/docs/CeedlingPacket.md +7 -5
  5. data/lib/ceedling/configurator_builder.rb +10 -21
  6. data/lib/ceedling/configurator_setup.rb +16 -17
  7. data/lib/ceedling/constants.rb +4 -3
  8. data/lib/ceedling/defaults.rb +9 -4
  9. data/lib/ceedling/dependinator.rb +0 -1
  10. data/lib/ceedling/file_path_utils.rb +22 -26
  11. data/lib/ceedling/flaginator.rb +5 -5
  12. data/lib/ceedling/generator.rb +8 -7
  13. data/lib/ceedling/preprocessinator_file_handler.rb +6 -6
  14. data/lib/ceedling/preprocessinator_includes_handler.rb +1 -1
  15. data/lib/ceedling/rules_release.rake +5 -3
  16. data/lib/ceedling/rules_tests.rake +2 -1
  17. data/lib/ceedling/tasks_base.rake +1 -1
  18. data/lib/ceedling/tasks_vendor.rake +9 -10
  19. data/lib/ceedling/tool_executor.rb +23 -22
  20. data/lib/ceedling/version.rb +3 -3
  21. data/plugins/module_generator/lib/module_generator.rb +3 -3
  22. data/plugins/xml_tests_report/xml_tests_report.rb +1 -1
  23. data/spec/preprocessinator_includes_handler_spec.rb +1 -1
  24. data/spec/spec_system_helper.rb +192 -192
  25. data/vendor/c_exception/vendor/unity/Gemfile +4 -0
  26. data/vendor/c_exception/vendor/unity/Gemfile.lock +12 -0
  27. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +115 -0
  28. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -0
  29. data/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -0
  30. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -0
  31. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +320 -0
  32. data/vendor/c_exception/vendor/unity/auto/parseOutput.rb +189 -0
  33. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +23 -0
  34. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +139 -0
  35. data/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  36. data/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  37. data/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +216 -0
  38. data/vendor/c_exception/vendor/unity/docs/license.txt +31 -0
  39. data/vendor/c_exception/vendor/unity/examples/example_1/makefile +41 -0
  40. data/vendor/c_exception/vendor/unity/examples/example_1/readme.txt +5 -0
  41. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  42. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  43. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +9 -0
  44. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  45. data/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  46. data/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  47. data/vendor/{unity/examples/example_3/test/no_ruby → c_exception/vendor/unity/examples/example_1/test/test_runners}/TestProductionCode2_Runner.c +16 -3
  48. data/vendor/{unity/examples/example_3/test/no_ruby → c_exception/vendor/unity/examples/example_1/test/test_runners}/TestProductionCode_Runner.c +16 -3
  49. data/vendor/c_exception/vendor/unity/examples/example_2/makefile +45 -0
  50. data/vendor/c_exception/vendor/unity/examples/example_2/readme.txt +5 -0
  51. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  52. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  53. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +9 -0
  54. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  55. data/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  56. data/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  57. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  58. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  59. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  60. data/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  61. data/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  62. data/vendor/c_exception/vendor/unity/examples/example_3/makefile +41 -0
  63. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +44 -0
  64. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +256 -0
  65. data/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +19 -0
  66. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  67. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  68. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +9 -0
  69. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  70. data/vendor/c_exception/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  71. data/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  72. data/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  73. data/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  74. data/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode_Runner.c +50 -0
  75. data/vendor/c_exception/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  76. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +37 -0
  77. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +179 -0
  78. data/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +9 -0
  79. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +387 -0
  80. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +82 -0
  81. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  82. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  83. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  84. data/vendor/c_exception/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  85. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +341 -0
  86. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +41 -0
  87. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  88. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  89. data/vendor/c_exception/vendor/unity/makefile +37 -0
  90. data/vendor/c_exception/vendor/unity/rakefile.rb +61 -0
  91. data/vendor/c_exception/vendor/unity/rakefile_helper.rb +249 -0
  92. data/vendor/c_exception/vendor/unity/release/build.info +2 -0
  93. data/vendor/c_exception/vendor/unity/release/version.info +2 -0
  94. data/vendor/c_exception/vendor/unity/src/unity.c +1145 -0
  95. data/vendor/c_exception/vendor/unity/src/unity.h +307 -0
  96. data/vendor/c_exception/vendor/unity/src/unity_internals.h +620 -0
  97. data/vendor/c_exception/vendor/unity/targets/clang_strict.yml +83 -0
  98. data/vendor/c_exception/vendor/unity/targets/gcc_32.yml +44 -0
  99. data/vendor/c_exception/vendor/unity/targets/gcc_64.yml +45 -0
  100. data/vendor/c_exception/vendor/unity/targets/hitech_picc18.yml +101 -0
  101. data/vendor/c_exception/vendor/unity/targets/iar_arm_v4.yml +89 -0
  102. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5.yml +79 -0
  103. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  104. data/vendor/c_exception/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  105. data/vendor/c_exception/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  106. data/vendor/c_exception/vendor/unity/targets/iar_msp430.yml +94 -0
  107. data/vendor/c_exception/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  108. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +57 -0
  109. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +53 -0
  110. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +79 -0
  111. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +75 -0
  112. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +88 -0
  113. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +88 -0
  114. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +76 -0
  115. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +88 -0
  116. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +88 -0
  117. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +89 -0
  118. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +63 -0
  119. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +66 -0
  120. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +54 -0
  121. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +63 -0
  122. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +66 -0
  123. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +67 -0
  124. data/vendor/c_exception/vendor/unity/test/test_generate_test_runner.rb +88 -0
  125. data/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -0
  126. data/vendor/c_exception/vendor/unity/test/testdata/sample.yml +9 -0
  127. data/vendor/c_exception/vendor/unity/test/testdata/testsample.c +51 -0
  128. data/vendor/c_exception/vendor/unity/test/testparameterized.c +101 -0
  129. data/vendor/c_exception/vendor/unity/test/testunity.c +3447 -0
  130. data/vendor/cmock/README.md +1 -1
  131. data/vendor/cmock/Rakefile +106 -104
  132. data/vendor/cmock/config/production_environment.rb +14 -14
  133. data/vendor/cmock/config/test_environment.rb +16 -16
  134. data/vendor/cmock/docs/CMock_Summary.md +9 -0
  135. data/vendor/cmock/docs/license.txt +2 -2
  136. data/vendor/cmock/examples/make_example/Makefile +30 -0
  137. data/vendor/cmock/examples/make_example/src/foo.c +5 -0
  138. data/vendor/cmock/examples/make_example/src/foo.h +5 -0
  139. data/vendor/cmock/examples/make_example/src/main.c +15 -0
  140. data/vendor/cmock/examples/make_example/test/test_foo.c +17 -0
  141. data/vendor/cmock/examples/make_example/test/test_main.c +15 -0
  142. data/vendor/cmock/examples/{gcc.yml → temp_sensor/gcc.yml} +43 -43
  143. data/vendor/cmock/examples/{iar_v4.yml → temp_sensor/iar_v4.yml} +91 -91
  144. data/vendor/cmock/examples/{iar_v5.yml → temp_sensor/iar_v5.yml} +80 -80
  145. data/vendor/cmock/examples/{rakefile.rb → temp_sensor/rakefile.rb} +32 -32
  146. data/vendor/cmock/examples/{rakefile_helper.rb → temp_sensor/rakefile_helper.rb} +270 -270
  147. data/vendor/cmock/examples/{src → temp_sensor/src}/AT91SAM7X256.h +2556 -2556
  148. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcConductor.c +42 -42
  149. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcConductor.h +11 -11
  150. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcHardware.c +27 -27
  151. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcHardware.h +9 -9
  152. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcHardwareConfigurator.c +18 -18
  153. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcHardwareConfigurator.h +10 -10
  154. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcModel.c +33 -33
  155. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcModel.h +13 -13
  156. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcTemperatureSensor.c +51 -51
  157. data/vendor/cmock/examples/{src → temp_sensor/src}/AdcTemperatureSensor.h +10 -10
  158. data/vendor/cmock/examples/{src → temp_sensor/src}/Executor.c +25 -25
  159. data/vendor/cmock/examples/{src → temp_sensor/src}/Executor.h +9 -9
  160. data/vendor/cmock/examples/{src → temp_sensor/src}/IntrinsicsWrapper.c +18 -18
  161. data/vendor/cmock/examples/{src → temp_sensor/src}/IntrinsicsWrapper.h +7 -7
  162. data/vendor/cmock/examples/{src → temp_sensor/src}/Main.c +46 -46
  163. data/vendor/cmock/examples/{src → temp_sensor/src}/Main.h +7 -7
  164. data/vendor/cmock/examples/{src → temp_sensor/src}/Model.c +10 -10
  165. data/vendor/cmock/examples/{src → temp_sensor/src}/Model.h +8 -8
  166. data/vendor/cmock/examples/{src → temp_sensor/src}/ModelConfig.h +7 -7
  167. data/vendor/cmock/examples/{src → temp_sensor/src}/TaskScheduler.c +72 -72
  168. data/vendor/cmock/examples/{src → temp_sensor/src}/TaskScheduler.h +11 -11
  169. data/vendor/cmock/examples/{src → temp_sensor/src}/TemperatureCalculator.c +27 -27
  170. data/vendor/cmock/examples/{src → temp_sensor/src}/TemperatureCalculator.h +6 -6
  171. data/vendor/cmock/examples/{src → temp_sensor/src}/TemperatureFilter.c +39 -39
  172. data/vendor/cmock/examples/{src → temp_sensor/src}/TemperatureFilter.h +10 -10
  173. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerConductor.c +15 -15
  174. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerConductor.h +9 -9
  175. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerConfigurator.c +51 -51
  176. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerConfigurator.h +15 -15
  177. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerHardware.c +15 -15
  178. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerHardware.h +8 -8
  179. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerInterruptConfigurator.c +55 -55
  180. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerInterruptConfigurator.h +13 -13
  181. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerInterruptHandler.c +25 -25
  182. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerInterruptHandler.h +10 -10
  183. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerModel.c +9 -9
  184. data/vendor/cmock/examples/{src → temp_sensor/src}/TimerModel.h +8 -8
  185. data/vendor/cmock/examples/{src → temp_sensor/src}/Types.h +103 -103
  186. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartBaudRateRegisterCalculator.c +18 -18
  187. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartBaudRateRegisterCalculator.h +6 -6
  188. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartConductor.c +21 -21
  189. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartConductor.h +7 -7
  190. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartConfigurator.c +39 -39
  191. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartConfigurator.h +13 -13
  192. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartHardware.c +22 -22
  193. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartHardware.h +9 -9
  194. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartModel.c +34 -34
  195. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartModel.h +10 -10
  196. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartPutChar.c +16 -16
  197. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartPutChar.h +8 -8
  198. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartTransmitBufferStatus.c +7 -7
  199. data/vendor/cmock/examples/{src → temp_sensor/src}/UsartTransmitBufferStatus.h +8 -8
  200. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcConductor.c +121 -121
  201. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcHardware.c +44 -44
  202. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcHardwareConfigurator.c +43 -43
  203. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcModel.c +33 -33
  204. data/vendor/cmock/examples/{test → temp_sensor/test}/TestAdcTemperatureSensor.c +47 -47
  205. data/vendor/cmock/examples/{test → temp_sensor/test}/TestExecutor.c +36 -36
  206. data/vendor/cmock/examples/{test → temp_sensor/test}/TestMain.c +24 -24
  207. data/vendor/cmock/examples/{test → temp_sensor/test}/TestModel.c +20 -20
  208. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTaskScheduler.c +104 -104
  209. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTemperatureCalculator.c +33 -33
  210. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTemperatureFilter.c +69 -69
  211. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerConductor.c +32 -32
  212. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerConfigurator.c +112 -112
  213. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerHardware.c +26 -26
  214. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerInterruptConfigurator.c +78 -78
  215. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerInterruptHandler.c +66 -66
  216. data/vendor/cmock/examples/{test → temp_sensor/test}/TestTimerModel.c +18 -18
  217. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartBaudRateRegisterCalculator.c +21 -21
  218. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartConductor.c +40 -40
  219. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartConfigurator.c +77 -77
  220. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartHardware.c +37 -37
  221. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartModel.c +36 -36
  222. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartPutChar.c +43 -43
  223. data/vendor/cmock/examples/{test → temp_sensor/test}/TestUsartTransmitBufferStatus.c +22 -22
  224. data/vendor/cmock/iar/iar_v4/Resource/at91SAM7X256_FLASH.xcl +185 -185
  225. data/vendor/cmock/iar/iar_v4/Resource/at91SAM7X256_RAM.xcl +185 -185
  226. data/vendor/cmock/iar/iar_v4/Resource/ioat91sam7x256.ddf +2259 -2259
  227. data/vendor/cmock/iar/iar_v4/cmock_demo.dep +3691 -3691
  228. data/vendor/cmock/iar/iar_v4/cmock_demo.ewp +2581 -2581
  229. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X-EK.h +61 -61
  230. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.inc +2314 -2314
  231. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.rdf +4704 -4704
  232. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256.tcl +3407 -3407
  233. data/vendor/cmock/iar/iar_v4/incIAR/AT91SAM7X256_inc.h +2268 -2268
  234. data/vendor/cmock/iar/iar_v4/incIAR/ioat91sam7x256.h +4380 -4380
  235. data/vendor/cmock/iar/iar_v4/incIAR/lib_AT91SAM7X256.h +4211 -4211
  236. data/vendor/cmock/iar/iar_v4/settings/cmock_demo.cspy.bat +32 -32
  237. data/vendor/cmock/iar/iar_v4/srcIAR/Cstartup.s79 +265 -265
  238. data/vendor/cmock/iar/iar_v4/srcIAR/Cstartup_SAM7.c +98 -98
  239. data/vendor/cmock/iar/iar_v5/Resource/at91SAM7X256_FLASH.icf +43 -43
  240. data/vendor/cmock/iar/iar_v5/Resource/at91SAM7X256_RAM.icf +42 -42
  241. data/vendor/cmock/iar/iar_v5/cmock_demo.dep +4204 -4204
  242. data/vendor/cmock/iar/iar_v5/cmock_demo.ewp +2426 -2426
  243. data/vendor/cmock/iar/iar_v5/incIAR/AT91SAM7X-EK.h +61 -61
  244. data/vendor/cmock/iar/iar_v5/incIAR/AT91SAM7X256_inc.h +2268 -2268
  245. data/vendor/cmock/iar/iar_v5/incIAR/lib_AT91SAM7X256.h +4211 -4211
  246. data/vendor/cmock/iar/iar_v5/incIAR/project.h +30 -30
  247. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +33 -33
  248. data/vendor/cmock/iar/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +12 -12
  249. data/vendor/cmock/iar/iar_v5/settings/cmock_demo.cspy.bat +33 -33
  250. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_Binary.jlink +12 -12
  251. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +12 -12
  252. data/vendor/cmock/iar/iar_v5/settings/cmock_demo_RAM_Debug.jlink +12 -12
  253. data/vendor/cmock/iar/iar_v5/srcIAR/Cstartup.s +299 -299
  254. data/vendor/cmock/iar/iar_v5/srcIAR/Cstartup_SAM7.c +98 -98
  255. data/vendor/cmock/lib/cmock.rb +89 -89
  256. data/vendor/cmock/lib/cmock_config.rb +134 -133
  257. data/vendor/cmock/lib/cmock_file_writer.rb +40 -33
  258. data/vendor/cmock/lib/cmock_generator.rb +234 -215
  259. data/vendor/cmock/lib/cmock_generator_plugin_array.rb +63 -63
  260. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +96 -78
  261. data/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +52 -51
  262. data/vendor/cmock/lib/cmock_generator_plugin_expect.rb +104 -86
  263. data/vendor/cmock/lib/cmock_generator_plugin_expect_any_args.rb +68 -68
  264. data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +72 -71
  265. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +1 -1
  266. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +2 -2
  267. data/vendor/cmock/lib/cmock_generator_utils.rb +228 -213
  268. data/vendor/cmock/lib/cmock_header_parser.rb +1 -1
  269. data/vendor/cmock/lib/cmock_plugin_manager.rb +40 -40
  270. data/vendor/cmock/lib/cmock_unityhelper_parser.rb +75 -75
  271. data/vendor/cmock/rakefile_helper.rb +381 -381
  272. data/vendor/cmock/release/build.info +1 -1
  273. data/vendor/cmock/release/version.info +1 -1
  274. data/vendor/cmock/scripts/create_makefile.rb +161 -0
  275. data/vendor/cmock/scripts/create_mock.rb +8 -0
  276. data/vendor/cmock/scripts/create_runner.rb +20 -0
  277. data/vendor/cmock/scripts/test_summary.rb +11 -0
  278. data/vendor/cmock/src/cmock.c +203 -192
  279. data/vendor/cmock/src/cmock.h +38 -36
  280. data/vendor/cmock/src/cmock_internals.h +11 -1
  281. data/vendor/cmock/targets/clang_strict.yml +90 -85
  282. data/vendor/cmock/targets/gcc.yml +58 -55
  283. data/vendor/cmock/targets/gcc_64.yml +58 -55
  284. data/vendor/cmock/targets/gcc_tiny.yml +80 -0
  285. data/vendor/cmock/targets/iar_arm_v4.yml +110 -108
  286. data/vendor/cmock/targets/iar_arm_v5.yml +95 -93
  287. data/vendor/cmock/test/c/TestCMockC.c +323 -323
  288. data/vendor/cmock/test/c/TestCMockC.yml +1 -0
  289. data/vendor/cmock/test/c/TestCMockCDynamic.c +186 -186
  290. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +36 -36
  291. data/vendor/cmock/test/c/TestCMockC_Runner.c +39 -39
  292. data/vendor/cmock/test/system/systest_generator.rb +194 -194
  293. data/vendor/cmock/test/system/test_compilation/callingconv.h +11 -11
  294. data/vendor/cmock/test/system/test_compilation/osek.h +275 -275
  295. data/vendor/cmock/test/system/test_compilation/parsing.h +2 -0
  296. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +375 -375
  297. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +459 -389
  298. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +62 -0
  299. data/vendor/cmock/test/system/test_interactions/doesnt_leave_details_behind.yml +308 -0
  300. data/vendor/cmock/test/system/test_interactions/enforce_strict_ordering.yml +23 -23
  301. data/vendor/cmock/test/system/test_interactions/out_of_memory.yml +65 -0
  302. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +38 -20
  303. data/vendor/cmock/test/system/test_interactions/struct_union_enum_expect_and_return_with_plugins.yml +280 -0
  304. data/vendor/cmock/test/test_helper.rb +47 -47
  305. data/vendor/cmock/test/unit/cmock_config_test.rb +118 -118
  306. data/vendor/cmock/test/unit/cmock_config_test.yml +5 -5
  307. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +27 -27
  308. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +507 -489
  309. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +133 -133
  310. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +257 -189
  311. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +96 -93
  312. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +186 -0
  313. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +60 -81
  314. data/vendor/cmock/test/unit/{cmock_generator_plugin_expect_test.rb → cmock_generator_plugin_expect_b_test.rb} +202 -205
  315. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -116
  316. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +105 -103
  317. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +134 -134
  318. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +377 -334
  319. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +1381 -1337
  320. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +95 -95
  321. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +223 -223
  322. data/vendor/cmock/vendor/c_exception/Gemfile +4 -0
  323. data/vendor/cmock/vendor/c_exception/Gemfile.lock +12 -0
  324. data/vendor/cmock/vendor/c_exception/LICENSE.txt +30 -0
  325. data/vendor/cmock/vendor/c_exception/README.md +146 -0
  326. data/vendor/cmock/vendor/c_exception/Rakefile +42 -0
  327. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  328. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  329. data/vendor/cmock/vendor/c_exception/docs/readme.txt +242 -0
  330. data/vendor/cmock/vendor/c_exception/lib/CException.c +46 -0
  331. data/vendor/cmock/vendor/c_exception/lib/CException.h +86 -0
  332. data/vendor/cmock/vendor/c_exception/makefile +24 -0
  333. data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
  334. data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
  335. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +46 -0
  336. data/vendor/cmock/vendor/c_exception/test/TestException.c +342 -0
  337. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +74 -0
  338. data/vendor/cmock/vendor/c_exception/vendor/unity/Gemfile +4 -0
  339. data/vendor/cmock/vendor/c_exception/vendor/unity/Gemfile.lock +12 -0
  340. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +115 -0
  341. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +39 -0
  342. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -0
  343. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -0
  344. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +320 -0
  345. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parseOutput.rb +189 -0
  346. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +23 -0
  347. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +139 -0
  348. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  349. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  350. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +216 -0
  351. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/license.txt +31 -0
  352. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/makefile +41 -0
  353. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/readme.txt +5 -0
  354. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  355. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  356. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +9 -0
  357. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  358. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  359. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  360. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +46 -0
  361. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +50 -0
  362. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/makefile +45 -0
  363. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/readme.txt +5 -0
  364. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  365. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  366. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +9 -0
  367. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  368. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  369. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  370. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  371. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  372. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  373. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  374. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  375. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/makefile +41 -0
  376. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +44 -0
  377. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +256 -0
  378. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +19 -0
  379. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  380. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  381. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +9 -0
  382. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  383. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  384. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  385. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  386. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  387. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode_Runner.c +50 -0
  388. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  389. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +37 -0
  390. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +179 -0
  391. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +9 -0
  392. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +387 -0
  393. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +82 -0
  394. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  395. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  396. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  397. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  398. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +341 -0
  399. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +41 -0
  400. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  401. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  402. data/vendor/cmock/vendor/c_exception/vendor/unity/makefile +37 -0
  403. data/vendor/cmock/vendor/c_exception/vendor/unity/rakefile.rb +61 -0
  404. data/vendor/cmock/vendor/c_exception/vendor/unity/rakefile_helper.rb +249 -0
  405. data/vendor/cmock/vendor/c_exception/vendor/unity/release/build.info +2 -0
  406. data/vendor/cmock/vendor/c_exception/vendor/unity/release/version.info +2 -0
  407. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +1145 -0
  408. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.h +307 -0
  409. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity_internals.h +620 -0
  410. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/clang_strict.yml +83 -0
  411. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/gcc_32.yml +44 -0
  412. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/gcc_64.yml +45 -0
  413. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/hitech_picc18.yml +101 -0
  414. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_arm_v4.yml +89 -0
  415. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_arm_v5.yml +79 -0
  416. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  417. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  418. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  419. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_msp430.yml +94 -0
  420. data/vendor/cmock/vendor/c_exception/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  421. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +57 -0
  422. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +53 -0
  423. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +79 -0
  424. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +75 -0
  425. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +88 -0
  426. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +88 -0
  427. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +76 -0
  428. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +88 -0
  429. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +88 -0
  430. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +89 -0
  431. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +63 -0
  432. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +66 -0
  433. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +54 -0
  434. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +63 -0
  435. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +66 -0
  436. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +67 -0
  437. data/vendor/cmock/vendor/c_exception/vendor/unity/test/test_generate_test_runner.rb +88 -0
  438. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -0
  439. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/sample.yml +9 -0
  440. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testsample.c +51 -0
  441. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testparameterized.c +101 -0
  442. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testunity.c +3447 -0
  443. data/vendor/cmock/vendor/unity/README.md +211 -0
  444. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +115 -0
  445. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
  446. data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
  447. data/vendor/cmock/vendor/unity/auto/generate_module.rb +202 -0
  448. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +374 -0
  449. data/vendor/cmock/vendor/unity/auto/parseOutput.rb +191 -0
  450. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +23 -0
  451. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +8 -0
  452. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +135 -0
  453. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +148 -0
  454. data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
  455. data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
  456. data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +224 -0
  457. data/vendor/cmock/vendor/unity/docs/license.txt +21 -0
  458. data/vendor/{unity/examples/example_3 → cmock/vendor/unity/examples/example_1}/makefile +9 -5
  459. data/vendor/cmock/vendor/unity/examples/example_1/readme.txt +5 -0
  460. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  461. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  462. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -0
  463. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  464. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  465. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  466. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  467. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  468. data/vendor/cmock/vendor/unity/examples/example_2/makefile +71 -0
  469. data/vendor/cmock/vendor/unity/examples/example_2/readme.txt +5 -0
  470. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  471. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  472. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -0
  473. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  474. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  475. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  476. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  477. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  478. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  479. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  480. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  481. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +43 -0
  482. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +256 -0
  483. data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +19 -0
  484. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  485. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  486. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -0
  487. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  488. data/vendor/cmock/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  489. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  490. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  491. data/vendor/cmock/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  492. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +48 -0
  493. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +179 -0
  494. data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
  495. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +423 -0
  496. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +78 -0
  497. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +46 -0
  498. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +45 -0
  499. data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +19 -0
  500. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  501. data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  502. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +373 -0
  503. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +43 -0
  504. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +57 -0
  505. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  506. data/vendor/cmock/vendor/unity/release/build.info +2 -0
  507. data/vendor/cmock/vendor/unity/release/version.info +2 -0
  508. data/vendor/cmock/vendor/unity/src/unity.c +1324 -0
  509. data/vendor/cmock/vendor/unity/src/unity.h +285 -0
  510. data/vendor/cmock/vendor/unity/src/unity_internals.h +758 -0
  511. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +57 -0
  512. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +53 -0
  513. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +51 -0
  514. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +12 -0
  515. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -0
  516. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +76 -0
  517. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  518. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +11 -0
  519. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -0
  520. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -0
  521. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +77 -0
  522. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -0
  523. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -0
  524. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -0
  525. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +63 -0
  526. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +66 -0
  527. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +54 -0
  528. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +63 -0
  529. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +66 -0
  530. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +67 -0
  531. data/vendor/cmock/vendor/unity/test/rakefile +60 -0
  532. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +255 -0
  533. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +84 -0
  534. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +84 -0
  535. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +50 -0
  536. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +51 -0
  537. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +47 -0
  538. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_sizeof.yml +48 -0
  539. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -0
  540. data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +47 -0
  541. data/vendor/cmock/vendor/unity/test/targets/hitech_picc18.yml +101 -0
  542. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v4.yml +89 -0
  543. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5.yml +79 -0
  544. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5_3.yml +79 -0
  545. data/vendor/cmock/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  546. data/vendor/cmock/vendor/unity/test/targets/iar_cortexm3_v5.yml +83 -0
  547. data/vendor/cmock/vendor/unity/test/targets/iar_msp430.yml +94 -0
  548. data/vendor/cmock/vendor/unity/test/targets/iar_sh2a_v6.yml +85 -0
  549. data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +51 -0
  550. data/vendor/cmock/vendor/unity/test/testdata/sample.yml +9 -0
  551. data/vendor/cmock/vendor/unity/test/testdata/testsample.c +51 -0
  552. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +102 -0
  553. data/vendor/cmock/vendor/unity/test/tests/testparameterized.c +104 -0
  554. data/vendor/cmock/vendor/unity/test/tests/testunity.c +3656 -0
  555. data/vendor/unity/README.md +211 -203
  556. data/vendor/unity/auto/colour_reporter.rb +38 -38
  557. data/vendor/unity/auto/generate_config.yml +36 -36
  558. data/vendor/unity/auto/generate_module.rb +202 -202
  559. data/vendor/unity/auto/generate_test_runner.rb +389 -347
  560. data/vendor/unity/auto/parseOutput.rb +2 -0
  561. data/vendor/unity/auto/unity_test_summary.py +135 -135
  562. data/vendor/unity/auto/unity_test_summary.rb +148 -139
  563. data/vendor/unity/docs/Unity Summary.odt +0 -0
  564. data/vendor/unity/docs/Unity Summary.pdf +0 -0
  565. data/vendor/unity/docs/Unity Summary.txt +224 -216
  566. data/vendor/unity/docs/license.txt +21 -21
  567. data/vendor/unity/examples/example_1/makefile +7 -3
  568. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +29 -9
  569. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +26 -6
  570. data/vendor/unity/examples/example_2/makefile +7 -4
  571. data/vendor/unity/extras/fixture/rakefile.rb +48 -48
  572. data/vendor/unity/extras/fixture/rakefile_helper.rb +179 -179
  573. data/vendor/unity/extras/fixture/src/unity_fixture.c +123 -78
  574. data/vendor/unity/extras/fixture/src/unity_fixture.h +6 -14
  575. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +12 -15
  576. data/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +25 -0
  577. data/vendor/unity/extras/fixture/test/Makefile +35 -0
  578. data/vendor/unity/extras/fixture/test/main/AllTests.c +2 -1
  579. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +99 -4
  580. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +10 -0
  581. data/vendor/unity/extras/fixture/test/unity_output_Spy.c +3 -1
  582. data/vendor/unity/release/build.info +1 -1
  583. data/vendor/unity/release/version.info +1 -1
  584. data/vendor/unity/src/unity.c +1324 -1177
  585. data/vendor/unity/src/unity.h +285 -272
  586. data/vendor/unity/src/unity_internals.h +758 -692
  587. data/vendor/unity/test/expectdata/testsample_head1.c +51 -0
  588. data/vendor/unity/test/expectdata/testsample_head1.h +12 -0
  589. data/vendor/unity/test/expectdata/testsample_mock_cmd.c +1 -0
  590. data/vendor/unity/test/expectdata/testsample_mock_def.c +1 -0
  591. data/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  592. data/vendor/unity/test/expectdata/testsample_mock_head1.h +11 -0
  593. data/vendor/unity/test/expectdata/testsample_mock_new1.c +3 -2
  594. data/vendor/unity/test/expectdata/testsample_mock_new2.c +1 -0
  595. data/vendor/unity/test/expectdata/testsample_mock_param.c +1 -0
  596. data/vendor/unity/test/expectdata/testsample_mock_run1.c +3 -2
  597. data/vendor/unity/test/expectdata/testsample_mock_run2.c +1 -0
  598. data/vendor/unity/test/expectdata/testsample_mock_yaml.c +4 -3
  599. data/vendor/unity/test/expectdata/testsample_new1.c +2 -2
  600. data/vendor/unity/test/expectdata/testsample_run1.c +2 -2
  601. data/vendor/unity/test/expectdata/testsample_yaml.c +3 -3
  602. data/vendor/unity/test/rakefile +60 -60
  603. data/vendor/unity/test/rakefile_helper.rb +255 -249
  604. data/vendor/unity/test/targets/clang_file.yml +83 -0
  605. data/vendor/unity/test/targets/clang_strict.yml +83 -83
  606. data/vendor/unity/test/targets/gcc_32.yml +49 -49
  607. data/vendor/unity/test/targets/gcc_64.yml +50 -50
  608. data/vendor/unity/test/targets/gcc_auto_limits.yml +46 -46
  609. data/vendor/unity/test/targets/gcc_auto_sizeof.yml +47 -47
  610. data/vendor/unity/test/targets/gcc_auto_stdint.yml +58 -58
  611. data/vendor/unity/test/targets/gcc_manual_math.yml +46 -0
  612. data/vendor/unity/test/targets/hitech_picc18.yml +101 -101
  613. data/vendor/unity/test/targets/iar_arm_v4.yml +89 -89
  614. data/vendor/unity/test/targets/iar_arm_v5.yml +79 -79
  615. data/vendor/unity/test/targets/iar_arm_v5_3.yml +79 -79
  616. data/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -93
  617. data/vendor/unity/test/targets/iar_cortexm3_v5.yml +83 -83
  618. data/vendor/unity/test/targets/iar_msp430.yml +94 -94
  619. data/vendor/unity/test/targets/iar_sh2a_v6.yml +85 -85
  620. data/vendor/unity/test/testdata/mocksample.c +51 -51
  621. data/vendor/unity/test/testdata/sample.yml +8 -8
  622. data/vendor/unity/test/testdata/testsample.c +51 -51
  623. data/vendor/unity/test/tests/test_generate_test_runner.rb +102 -88
  624. data/vendor/unity/test/tests/testparameterized.c +104 -101
  625. data/vendor/unity/test/tests/testunity.c +3676 -3447
  626. metadata +549 -191
@@ -139,7 +139,7 @@ class CMockHeaderParser
139
139
  return args if (arg =~ /^\s*((\.\.\.)|(void))\s*$/) # we're done if we reach void by itself or ...
140
140
  arg_array = arg.split
141
141
  arg_elements = arg_array - @c_attributes # split up words and remove known attributes
142
- args << { :type => (arg_type =arg_elements[0..-2].join(' ')),
142
+ args << { :type => (arg_type = arg_elements[0..-2].join(' ')),
143
143
  :name => arg_elements[-1],
144
144
  :ptr? => divine_ptr(arg_type),
145
145
  :const? => arg_array.include?('const')
@@ -1,40 +1,40 @@
1
- # ==========================================
2
- # CMock Project - Automatic Mock Generation 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
- class CMockPluginManager
8
-
9
- attr_accessor :plugins
10
-
11
- def initialize(config, utils)
12
- @plugins = []
13
- plugins_to_load = [:expect, config.plugins].flatten.uniq.compact
14
- plugins_to_load.each do |plugin|
15
- plugin_name = plugin.to_s
16
- object_name = "CMockGeneratorPlugin" + camelize(plugin_name)
17
- begin
18
- unless (Object.const_defined? object_name)
19
- require "#{File.expand_path(File.dirname(__FILE__))}/cmock_generator_plugin_#{plugin_name.downcase}.rb"
20
- end
21
- @plugins << eval("#{object_name}.new(config, utils)")
22
- rescue
23
- raise "ERROR: CMock unable to load plugin '#{plugin_name}'"
24
- end
25
- end
26
- @plugins.sort! {|a,b| a.priority <=> b.priority }
27
- end
28
-
29
- def run(method, args=nil)
30
- if args.nil?
31
- return @plugins.collect{ |plugin| plugin.send(method) if plugin.respond_to?(method) }.flatten.join
32
- else
33
- return @plugins.collect{ |plugin| plugin.send(method, args) if plugin.respond_to?(method) }.flatten.join
34
- end
35
- end
36
-
37
- def camelize(lower_case_and_underscored_word)
38
- lower_case_and_underscored_word.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
39
- end
40
- end
1
+ # ==========================================
2
+ # CMock Project - Automatic Mock Generation 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
+ class CMockPluginManager
8
+
9
+ attr_accessor :plugins
10
+
11
+ def initialize(config, utils)
12
+ @plugins = []
13
+ plugins_to_load = [:expect, config.plugins].flatten.uniq.compact
14
+ plugins_to_load.each do |plugin|
15
+ plugin_name = plugin.to_s
16
+ object_name = "CMockGeneratorPlugin" + camelize(plugin_name)
17
+ begin
18
+ unless (Object.const_defined? object_name)
19
+ require "#{File.expand_path(File.dirname(__FILE__))}/cmock_generator_plugin_#{plugin_name.downcase}.rb"
20
+ end
21
+ @plugins << eval("#{object_name}.new(config, utils)")
22
+ rescue
23
+ raise "ERROR: CMock unable to load plugin '#{plugin_name}'"
24
+ end
25
+ end
26
+ @plugins.sort! {|a,b| a.priority <=> b.priority }
27
+ end
28
+
29
+ def run(method, args=nil)
30
+ if args.nil?
31
+ return @plugins.collect{ |plugin| plugin.send(method) if plugin.respond_to?(method) }.flatten.join
32
+ else
33
+ return @plugins.collect{ |plugin| plugin.send(method, args) if plugin.respond_to?(method) }.flatten.join
34
+ end
35
+ end
36
+
37
+ def camelize(lower_case_and_underscored_word)
38
+ lower_case_and_underscored_word.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
39
+ end
40
+ end
@@ -1,75 +1,75 @@
1
- # ==========================================
2
- # CMock Project - Automatic Mock Generation 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
- class CMockUnityHelperParser
8
-
9
- attr_accessor :c_types
10
-
11
- def initialize(config)
12
- @config = config
13
- @fallback = @config.plugins.include?(:array) ? 'UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY' : 'UNITY_TEST_ASSERT_EQUAL_MEMORY'
14
- @c_types = map_C_types.merge(import_source)
15
- end
16
-
17
- def get_helper(ctype)
18
- lookup = ctype.gsub(/(?:^|(\S?)(\s*)|(\W))const(?:$|(\s*)(\S)|(\W))/,'\1\3\5\6').strip.gsub(/\s+/,'_')
19
- return [@c_types[lookup], ''] if (@c_types[lookup])
20
- if (lookup =~ /\*$/)
21
- lookup = lookup.gsub(/\*$/,'')
22
- return [@c_types[lookup], '*'] if (@c_types[lookup])
23
- else
24
- lookup = lookup + '*'
25
- return [@c_types[lookup], '&'] if (@c_types[lookup])
26
- end
27
- return ['UNITY_TEST_ASSERT_EQUAL_PTR', ''] if (ctype =~ /cmock_\w+_ptr\d+/)
28
- raise("Don't know how to test #{ctype} and memory tests are disabled!") unless @config.memcmp_if_unknown
29
- return (lookup =~ /\*$/) ? [@fallback, '&'] : [@fallback, '']
30
- end
31
-
32
- private ###########################
33
-
34
- def map_C_types
35
- c_types = {}
36
- @config.treat_as.each_pair do |ctype, expecttype|
37
- c_type = ctype.gsub(/\s+/,'_')
38
- if (expecttype =~ /\*/)
39
- c_types[c_type] = "UNITY_TEST_ASSERT_EQUAL_#{expecttype.gsub(/\*/,'')}_ARRAY"
40
- else
41
- c_types[c_type] = "UNITY_TEST_ASSERT_EQUAL_#{expecttype}"
42
- c_types[c_type+'*'] ||= "UNITY_TEST_ASSERT_EQUAL_#{expecttype}_ARRAY"
43
- end
44
- end
45
- c_types
46
- end
47
-
48
- def import_source
49
- source = @config.load_unity_helper
50
- return {} if source.nil?
51
- c_types = {}
52
- source = source.gsub(/\/\/.*$/, '') #remove line comments
53
- source = source.gsub(/\/\*.*?\*\//m, '') #remove block comments
54
-
55
- #scan for comparison helpers
56
- match_regex = Regexp.new('^\s*#define\s+(UNITY_TEST_ASSERT_EQUAL_(\w+))\s*\(' + Array.new(4,'\s*\w+\s*').join(',') + '\)')
57
- pairs = source.scan(match_regex).flatten.compact
58
- (pairs.size/2).times do |i|
59
- expect = pairs[i*2]
60
- ctype = pairs[(i*2)+1]
61
- c_types[ctype] = expect unless expect.include?("_ARRAY")
62
- end
63
-
64
- #scan for array variants of those helpers
65
- match_regex = Regexp.new('^\s*#define\s+(UNITY_TEST_ASSERT_EQUAL_(\w+_ARRAY))\s*\(' + Array.new(5,'\s*\w+\s*').join(',') + '\)')
66
- pairs = source.scan(match_regex).flatten.compact
67
- (pairs.size/2).times do |i|
68
- expect = pairs[i*2]
69
- ctype = pairs[(i*2)+1]
70
- c_types[ctype.gsub('_ARRAY','*')] = expect
71
- end
72
-
73
- c_types
74
- end
75
- end
1
+ # ==========================================
2
+ # CMock Project - Automatic Mock Generation 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
+ class CMockUnityHelperParser
8
+
9
+ attr_accessor :c_types
10
+
11
+ def initialize(config)
12
+ @config = config
13
+ @fallback = @config.plugins.include?(:array) ? 'UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY' : 'UNITY_TEST_ASSERT_EQUAL_MEMORY'
14
+ @c_types = map_C_types.merge(import_source)
15
+ end
16
+
17
+ def get_helper(ctype)
18
+ lookup = ctype.gsub(/(?:^|(\S?)(\s*)|(\W))const(?:$|(\s*)(\S)|(\W))/,'\1\3\5\6').strip.gsub(/\s+/,'_')
19
+ return [@c_types[lookup], ''] if (@c_types[lookup])
20
+ if (lookup =~ /\*$/)
21
+ lookup = lookup.gsub(/\*$/,'')
22
+ return [@c_types[lookup], '*'] if (@c_types[lookup])
23
+ else
24
+ lookup = lookup + '*'
25
+ return [@c_types[lookup], '&'] if (@c_types[lookup])
26
+ end
27
+ return ['UNITY_TEST_ASSERT_EQUAL_PTR', ''] if (ctype =~ /cmock_\w+_ptr\d+/)
28
+ raise("Don't know how to test #{ctype} and memory tests are disabled!") unless @config.memcmp_if_unknown
29
+ return (lookup =~ /\*$/) ? [@fallback, '&'] : [@fallback, '']
30
+ end
31
+
32
+ private ###########################
33
+
34
+ def map_C_types
35
+ c_types = {}
36
+ @config.treat_as.each_pair do |ctype, expecttype|
37
+ c_type = ctype.gsub(/\s+/,'_')
38
+ if (expecttype =~ /\*/)
39
+ c_types[c_type] = "UNITY_TEST_ASSERT_EQUAL_#{expecttype.gsub(/\*/,'')}_ARRAY"
40
+ else
41
+ c_types[c_type] = "UNITY_TEST_ASSERT_EQUAL_#{expecttype}"
42
+ c_types[c_type+'*'] ||= "UNITY_TEST_ASSERT_EQUAL_#{expecttype}_ARRAY"
43
+ end
44
+ end
45
+ c_types
46
+ end
47
+
48
+ def import_source
49
+ source = @config.load_unity_helper
50
+ return {} if source.nil?
51
+ c_types = {}
52
+ source = source.gsub(/\/\/.*$/, '') #remove line comments
53
+ source = source.gsub(/\/\*.*?\*\//m, '') #remove block comments
54
+
55
+ #scan for comparison helpers
56
+ match_regex = Regexp.new('^\s*#define\s+(UNITY_TEST_ASSERT_EQUAL_(\w+))\s*\(' + Array.new(4,'\s*\w+\s*').join(',') + '\)')
57
+ pairs = source.scan(match_regex).flatten.compact
58
+ (pairs.size/2).times do |i|
59
+ expect = pairs[i*2]
60
+ ctype = pairs[(i*2)+1]
61
+ c_types[ctype] = expect unless expect.include?("_ARRAY")
62
+ end
63
+
64
+ #scan for array variants of those helpers
65
+ match_regex = Regexp.new('^\s*#define\s+(UNITY_TEST_ASSERT_EQUAL_(\w+_ARRAY))\s*\(' + Array.new(5,'\s*\w+\s*').join(',') + '\)')
66
+ pairs = source.scan(match_regex).flatten.compact
67
+ (pairs.size/2).times do |i|
68
+ expect = pairs[i*2]
69
+ ctype = pairs[(i*2)+1]
70
+ c_types[ctype.gsub('_ARRAY','*')] = expect
71
+ end
72
+
73
+ c_types
74
+ end
75
+ end
@@ -1,381 +1,381 @@
1
- # ==========================================
2
- # CMock Project - Automatic Mock Generation 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
- require 'yaml'
8
- require 'fileutils'
9
- require './vendor/unity/auto/generate_test_runner'
10
- require './vendor/unity/auto/unity_test_summary'
11
- require './test/system/systest_generator'
12
- require './vendor/unity/auto/colour_reporter.rb'
13
-
14
- module RakefileHelpers
15
-
16
- SYSTEST_GENERATED_FILES_PATH = 'test/system/generated/'
17
- SYSTEST_BUILD_FILES_PATH = 'test/system/build/'
18
- SYSTEST_COMPILE_MOCKABLES_PATH = 'test/system/test_compilation/'
19
- C_EXTENSION = '.c'
20
- RESULT_EXTENSION = '.result'
21
-
22
- def load_configuration(config_file)
23
- $cfg_file = config_file
24
- $cfg = YAML.load(File.read('./targets/' + $cfg_file))
25
- $colour_output = false unless $cfg['colour']
26
- end
27
-
28
- def configure_clean
29
- CLEAN.include(SYSTEST_GENERATED_FILES_PATH + '*.*')
30
- CLEAN.include(SYSTEST_BUILD_FILES_PATH + '*.*')
31
- end
32
-
33
- def configure_toolchain(config_file)
34
- load_configuration(config_file)
35
- configure_clean
36
- end
37
-
38
- def get_local_include_dirs
39
- include_dirs = $cfg['compiler']['includes']['items'].dup
40
- include_dirs.delete_if {|dir| dir.is_a?(Array)}
41
- return include_dirs
42
- end
43
-
44
- def extract_headers(filename)
45
- includes = []
46
- lines = File.readlines(filename)
47
- lines.each do |line|
48
- m = line.match(/^\s*#include\s+\"\s*(.+\.[hH])\s*\"/)
49
- if not m.nil?
50
- includes << m[1]
51
- end
52
- end
53
- return includes
54
- end
55
-
56
- def find_source_file(header, paths)
57
- paths.each do |dir|
58
- src_file = dir + header.ext(C_EXTENSION)
59
- if (File.exists?(src_file))
60
- return src_file
61
- end
62
- end
63
- return nil
64
- end
65
-
66
- def squash(prefix, items)
67
- result = ''
68
- items.each { |item| result += " #{prefix}#{tackit(item)}" }
69
- return result
70
- end
71
-
72
- def build_compiler_fields
73
- command = tackit($cfg['compiler']['path'])
74
- if $cfg['compiler']['defines']['items'].nil?
75
- defines = ''
76
- else
77
- defines = squash($cfg['compiler']['defines']['prefix'], $cfg['compiler']['defines']['items'])
78
- end
79
- options = squash('', $cfg['compiler']['options'])
80
- includes = squash($cfg['compiler']['includes']['prefix'], $cfg['compiler']['includes']['items'])
81
- includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
82
- return {:command => command, :defines => defines, :options => options, :includes => includes}
83
- end
84
-
85
- def compile(file, defines=[])
86
- compiler = build_compiler_fields
87
- cmd_str = "#{compiler[:command]}#{compiler[:defines]}#{defines.inject(''){|all, a| ' -D'+a+all }}#{compiler[:options]}#{compiler[:includes]} #{file} " +
88
- "#{$cfg['compiler']['object_files']['prefix']}#{$cfg['compiler']['object_files']['destination']}"
89
- obj_file = "#{File.basename(file, C_EXTENSION)}#{$cfg['compiler']['object_files']['extension']}"
90
- execute(cmd_str + obj_file)
91
- return obj_file
92
- end
93
-
94
- def build_linker_fields
95
- command = tackit($cfg['linker']['path'])
96
- if $cfg['linker']['options'].nil?
97
- options = ''
98
- else
99
- options = squash('', $cfg['linker']['options'])
100
- end
101
- if ($cfg['linker']['includes'].nil? || $cfg['linker']['includes']['items'].nil?)
102
- includes = ''
103
- else
104
- includes = squash($cfg['linker']['includes']['prefix'], $cfg['linker']['includes']['items'])
105
- end
106
- includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
107
- return {:command => command, :options => options, :includes => includes}
108
- end
109
-
110
- def link_it(exe_name, obj_list)
111
- linker = build_linker_fields
112
- cmd_str = "#{linker[:command]}#{linker[:options]}#{linker[:includes]} " +
113
- (obj_list.map{|obj|"#{$cfg['linker']['object_files']['path']}#{obj} "}).uniq.join +
114
- $cfg['linker']['bin_files']['prefix'] + ' ' +
115
- $cfg['linker']['bin_files']['destination'] +
116
- exe_name + $cfg['linker']['bin_files']['extension']
117
- execute(cmd_str)
118
- end
119
-
120
- def build_simulator_fields
121
- return nil if $cfg['simulator'].nil?
122
- if $cfg['simulator']['path'].nil?
123
- command = ''
124
- else
125
- command = (tackit($cfg['simulator']['path']) + ' ')
126
- end
127
- if $cfg['simulator']['pre_support'].nil?
128
- pre_support = ''
129
- else
130
- pre_support = squash('', $cfg['simulator']['pre_support'])
131
- end
132
- if $cfg['simulator']['post_support'].nil?
133
- post_support = ''
134
- else
135
- post_support = squash('', $cfg['simulator']['post_support'])
136
- end
137
- return {:command => command, :pre_support => pre_support, :post_support => post_support}
138
- end
139
-
140
- def execute(command_string, verbose=true, raise_on_failure=true)
141
- #report command_string
142
- output = `#{command_string}`.chomp
143
- report(output) if (verbose && !output.nil? && (output.length > 0))
144
- if ($?.exitstatus != 0) and (raise_on_failure)
145
- raise "#{command_string} failed. (Returned #{$?.exitstatus})"
146
- end
147
- return output
148
- end
149
-
150
- def tackit(strings)
151
- case(strings)
152
- when Array
153
- "\"#{strings.join}\""
154
- when /^-/
155
- strings
156
- when /\s/
157
- "\"#{strings}\""
158
- else
159
- strings
160
- end
161
- end
162
-
163
- def report_summary
164
- summary = UnityTestSummary.new
165
- summary.set_root_path(File.expand_path(File.dirname(__FILE__)) + '/')
166
- results_glob = "#{$cfg['compiler']['build_path']}*.test*"
167
- results_glob.gsub!(/\\/, '/')
168
- results = Dir[results_glob]
169
- summary.set_targets(results)
170
- summary.run
171
- fail_out "FAIL: There were failures" if (summary.failures > 0)
172
- end
173
-
174
- def run_system_test_interactions(test_case_files)
175
- load './lib/cmock.rb'
176
-
177
- SystemTestGenerator.new.generate_files(test_case_files)
178
- test_files = FileList.new(SYSTEST_GENERATED_FILES_PATH + 'test*.c')
179
-
180
- load_configuration($cfg_file)
181
- $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
182
-
183
- include_dirs = get_local_include_dirs
184
-
185
- # Build and execute each unit test
186
- test_files.each do |test|
187
-
188
- obj_list = []
189
-
190
- test_base = File.basename(test, C_EXTENSION)
191
- cmock_config = test_base.gsub(/test_/, '') + '_cmock.yml'
192
-
193
- report "Executing system tests in #{File.basename(test)}..."
194
-
195
- # Detect dependencies and build required required modules
196
- extract_headers(test).each do |header|
197
-
198
- # Generate any needed mocks
199
- if header =~ /^mock_(.*)\.h/i
200
- module_name = $1
201
- cmock = CMock.new(SYSTEST_GENERATED_FILES_PATH + cmock_config)
202
- cmock.setup_mocks("#{$cfg['compiler']['source_path']}#{module_name}.h")
203
- end
204
- # Compile corresponding source file if it exists
205
- src_file = find_source_file(header, include_dirs)
206
- if !src_file.nil?
207
- obj_list << compile(src_file)
208
- end
209
- end
210
-
211
- # Generate and build the test suite runner
212
- runner_name = test_base + '_runner.c'
213
- runner_path = $cfg['compiler']['source_path'] + runner_name
214
- UnityTestRunnerGenerator.new(SYSTEST_GENERATED_FILES_PATH + cmock_config).run(test, runner_path)
215
- obj_list << compile(runner_path)
216
-
217
- # Build the test module
218
- obj_list << compile(test)
219
-
220
- # Link the test executable
221
- link_it(test_base, obj_list)
222
-
223
- # Execute unit test and generate results file
224
- simulator = build_simulator_fields
225
- executable = $cfg['linker']['bin_files']['destination'] + test_base + $cfg['linker']['bin_files']['extension']
226
- if simulator.nil?
227
- cmd_str = executable
228
- else
229
- cmd_str = "#{simulator[:command]} #{simulator[:pre_support]} #{executable} #{simulator[:post_support]}"
230
- end
231
- output = execute(cmd_str, false, false)
232
- test_results = $cfg['compiler']['build_path'] + test_base + RESULT_EXTENSION
233
- File.open(test_results, 'w') { |f| f.print output }
234
- end
235
-
236
- # Parse and report test results
237
- total_tests = 0
238
- total_failures = 0
239
- failure_messages = []
240
-
241
- test_case_files.each do |test_case|
242
- tests = (YAML.load_file(test_case))[:systest][:tests][:units]
243
- total_tests += tests.size
244
-
245
- test_file = 'test_' + File.basename(test_case).ext(C_EXTENSION)
246
- result_file = test_file.ext(RESULT_EXTENSION)
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
- tests.each_with_index do |test, index|
249
- # compare test's intended pass/fail state with pass/fail state in actual results;
250
- # if they don't match, the system test has failed
251
- this_failed = case(test[:pass])
252
- when :ignore
253
- (test_results[index] =~ /:IGNORE/).nil?
254
- when true
255
- (test_results[index] =~ /:PASS/).nil?
256
- when false
257
- (test_results[index] =~ /:FAIL/).nil?
258
- end
259
- if (this_failed)
260
- total_failures += 1
261
- test_results[index] =~ /test#{index+1}:(.+)/
262
- failure_messages << "#{test_file}:test#{index+1}:should #{test[:should]}:#{$1}"
263
- end
264
- # some tests have additional requirements to check for (checking the actual output message)
265
- if (test[:verify_error]) and not (test_results[index] =~ /test#{index+1}:.*#{test[:verify_error]}/)
266
- total_failures += 1
267
- failure_messages << "#{test_file}:test#{index+1}:should #{test[:should]}:should have output matching '#{test[:verify_error]}'"
268
- end
269
- end
270
- end
271
-
272
- report "\n"
273
- report "------------------------------------\n"
274
- report "SYSTEM TEST MOCK INTERACTION SUMMARY\n"
275
- report "------------------------------------\n"
276
- report "#{total_tests} Tests #{total_failures} Failures 0 Ignored\n"
277
- report "\n"
278
-
279
- if (failure_messages.size > 0)
280
- report 'System test failures:'
281
- failure_messages.each do |failure|
282
- report failure
283
- end
284
- end
285
-
286
- report ''
287
-
288
- return total_failures
289
- end
290
-
291
- def profile_this(filename)
292
- profile = true
293
- begin
294
- require 'ruby-prof'
295
- RubyProf.start
296
- rescue
297
- profile = false
298
- end
299
-
300
- yield
301
-
302
- if (profile)
303
- profile_result = RubyProf.stop
304
- File.open("Profile_#{filename}.html", 'w') do |f|
305
- RubyProf::GraphHtmlPrinter.new(profile_result).print(f)
306
- end
307
- end
308
- end
309
-
310
- def run_system_test_compilations(mockables)
311
- load './lib/cmock.rb'
312
-
313
- load_configuration($cfg_file)
314
- $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
315
-
316
- report "\n"
317
- report "------------------------------------\n"
318
- report "SYSTEM TEST MOCK COMPILATION SUMMARY\n"
319
- report "------------------------------------\n"
320
- mockables.each do |header|
321
- mock_filename = 'mock_' + File.basename(header).ext('.c')
322
- CMock.new(SYSTEST_COMPILE_MOCKABLES_PATH + 'config.yml').setup_mocks(header)
323
- report "Compiling #{mock_filename}..."
324
- compile(SYSTEST_GENERATED_FILES_PATH + mock_filename)
325
- end
326
- end
327
-
328
- def run_system_test_profiles(mockables)
329
- load './lib/cmock.rb'
330
-
331
- load_configuration($cfg_file)
332
- $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
333
-
334
- report "\n"
335
- report "--------------------------\n"
336
- report "SYSTEM TEST MOCK PROFILING\n"
337
- report "--------------------------\n"
338
- mockables.each do |header|
339
- mock_filename = 'mock_' + File.basename(header).ext('.c')
340
- profile_this(mock_filename.gsub('.c','')) do
341
- 10.times do
342
- CMock.new(SYSTEST_COMPILE_MOCKABLES_PATH + 'config.yml').setup_mocks(header)
343
- end
344
- end
345
- report "Compiling #{mock_filename}..."
346
- compile(SYSTEST_GENERATED_FILES_PATH + mock_filename)
347
- end
348
- end
349
-
350
- def build_and_test_c_files
351
- report "\n"
352
- report "----------------\n"
353
- report "UNIT TEST C CODE\n"
354
- report "----------------\n"
355
- errors = false
356
- FileList.new("test/c/*.yml").each do |yaml_file|
357
- test = YAML.load(File.read(yaml_file))
358
- report "\nTesting #{yaml_file.sub('.yml','')}"
359
- report "(#{test[:options].join(', ')})"
360
- test[:files].each { |f| compile(f, test[:options]) }
361
- obj_files = test[:files].map { |f| f.gsub!(/.*\//,'').gsub!(C_EXTENSION, $cfg['compiler']['object_files']['extension']) }
362
- link_it('TestCMockC', obj_files)
363
- if $cfg['simulator'].nil?
364
- execute($cfg['linker']['bin_files']['destination'] + 'TestCMockC' + $cfg['linker']['bin_files']['extension'])
365
- else
366
- execute(tackit($cfg['simulator']['path'].join) + ' ' +
367
- $cfg['simulator']['pre_support'].map{|o| tackit(o)}.join(' ') + ' ' +
368
- $cfg['linker']['bin_files']['destination'] +
369
- 'TestCMockC' +
370
- $cfg['linker']['bin_files']['extension'] + ' ' +
371
- $cfg['simulator']['post_support'].map{|o| tackit(o)}.join(' ') )
372
- end
373
- end
374
- end
375
-
376
- def fail_out(msg)
377
- puts msg
378
- exit(-1)
379
- end
380
- end
381
-
1
+ # ==========================================
2
+ # CMock Project - Automatic Mock Generation 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
+ require 'yaml'
8
+ require 'fileutils'
9
+ require './vendor/unity/auto/generate_test_runner'
10
+ require './vendor/unity/auto/unity_test_summary'
11
+ require './test/system/systest_generator'
12
+ require './vendor/unity/auto/colour_reporter.rb'
13
+
14
+ module RakefileHelpers
15
+
16
+ SYSTEST_GENERATED_FILES_PATH = 'test/system/generated/'
17
+ SYSTEST_BUILD_FILES_PATH = 'test/system/build/'
18
+ SYSTEST_COMPILE_MOCKABLES_PATH = 'test/system/test_compilation/'
19
+ C_EXTENSION = '.c'
20
+ RESULT_EXTENSION = '.result'
21
+
22
+ def load_configuration(config_file)
23
+ $cfg_file = config_file
24
+ $cfg = YAML.load(File.read('./targets/' + $cfg_file))
25
+ $colour_output = false unless $cfg['colour']
26
+ end
27
+
28
+ def configure_clean
29
+ CLEAN.include(SYSTEST_GENERATED_FILES_PATH + '*.*')
30
+ CLEAN.include(SYSTEST_BUILD_FILES_PATH + '*.*')
31
+ end
32
+
33
+ def configure_toolchain(config_file)
34
+ load_configuration(config_file)
35
+ configure_clean
36
+ end
37
+
38
+ def get_local_include_dirs
39
+ include_dirs = $cfg['compiler']['includes']['items'].dup
40
+ include_dirs.delete_if {|dir| dir.is_a?(Array)}
41
+ return include_dirs
42
+ end
43
+
44
+ def extract_headers(filename)
45
+ includes = []
46
+ lines = File.readlines(filename)
47
+ lines.each do |line|
48
+ m = line.match(/^\s*#include\s+\"\s*(.+\.[hH])\s*\"/)
49
+ if not m.nil?
50
+ includes << m[1]
51
+ end
52
+ end
53
+ return includes
54
+ end
55
+
56
+ def find_source_file(header, paths)
57
+ paths.each do |dir|
58
+ src_file = dir + header.ext(C_EXTENSION)
59
+ if (File.exists?(src_file))
60
+ return src_file
61
+ end
62
+ end
63
+ return nil
64
+ end
65
+
66
+ def squash(prefix, items)
67
+ result = ''
68
+ items.each { |item| result += " #{prefix}#{tackit(item)}" }
69
+ return result
70
+ end
71
+
72
+ def build_compiler_fields
73
+ command = tackit($cfg['compiler']['path'])
74
+ if $cfg['compiler']['defines']['items'].nil?
75
+ defines = ''
76
+ else
77
+ defines = squash($cfg['compiler']['defines']['prefix'], $cfg['compiler']['defines']['items'])
78
+ end
79
+ options = squash('', $cfg['compiler']['options'])
80
+ includes = squash($cfg['compiler']['includes']['prefix'], $cfg['compiler']['includes']['items'])
81
+ includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
82
+ return {:command => command, :defines => defines, :options => options, :includes => includes}
83
+ end
84
+
85
+ def compile(file, defines=[])
86
+ compiler = build_compiler_fields
87
+ cmd_str = "#{compiler[:command]}#{compiler[:defines]}#{defines.inject(''){|all, a| ' -D'+a+all }}#{compiler[:options]}#{compiler[:includes]} #{file} " +
88
+ "#{$cfg['compiler']['object_files']['prefix']}#{$cfg['compiler']['object_files']['destination']}"
89
+ obj_file = "#{File.basename(file, C_EXTENSION)}#{$cfg['compiler']['object_files']['extension']}"
90
+ execute(cmd_str + obj_file)
91
+ return obj_file
92
+ end
93
+
94
+ def build_linker_fields
95
+ command = tackit($cfg['linker']['path'])
96
+ if $cfg['linker']['options'].nil?
97
+ options = ''
98
+ else
99
+ options = squash('', $cfg['linker']['options'])
100
+ end
101
+ if ($cfg['linker']['includes'].nil? || $cfg['linker']['includes']['items'].nil?)
102
+ includes = ''
103
+ else
104
+ includes = squash($cfg['linker']['includes']['prefix'], $cfg['linker']['includes']['items'])
105
+ end
106
+ includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
107
+ return {:command => command, :options => options, :includes => includes}
108
+ end
109
+
110
+ def link_it(exe_name, obj_list)
111
+ linker = build_linker_fields
112
+ cmd_str = "#{linker[:command]}#{linker[:options]}#{linker[:includes]} " +
113
+ (obj_list.map{|obj|"#{$cfg['linker']['object_files']['path']}#{obj} "}).uniq.join +
114
+ $cfg['linker']['bin_files']['prefix'] + ' ' +
115
+ $cfg['linker']['bin_files']['destination'] +
116
+ exe_name + $cfg['linker']['bin_files']['extension']
117
+ execute(cmd_str)
118
+ end
119
+
120
+ def build_simulator_fields
121
+ return nil if $cfg['simulator'].nil?
122
+ if $cfg['simulator']['path'].nil?
123
+ command = ''
124
+ else
125
+ command = (tackit($cfg['simulator']['path']) + ' ')
126
+ end
127
+ if $cfg['simulator']['pre_support'].nil?
128
+ pre_support = ''
129
+ else
130
+ pre_support = squash('', $cfg['simulator']['pre_support'])
131
+ end
132
+ if $cfg['simulator']['post_support'].nil?
133
+ post_support = ''
134
+ else
135
+ post_support = squash('', $cfg['simulator']['post_support'])
136
+ end
137
+ return {:command => command, :pre_support => pre_support, :post_support => post_support}
138
+ end
139
+
140
+ def execute(command_string, verbose=true, raise_on_failure=true)
141
+ #report command_string
142
+ output = `#{command_string}`.chomp
143
+ report(output) if (verbose && !output.nil? && (output.length > 0))
144
+ if ($?.exitstatus != 0) and (raise_on_failure)
145
+ raise "#{command_string} failed. (Returned #{$?.exitstatus})"
146
+ end
147
+ return output
148
+ end
149
+
150
+ def tackit(strings)
151
+ case(strings)
152
+ when Array
153
+ "\"#{strings.join}\""
154
+ when /^-/
155
+ strings
156
+ when /\s/
157
+ "\"#{strings}\""
158
+ else
159
+ strings
160
+ end
161
+ end
162
+
163
+ def report_summary
164
+ summary = UnityTestSummary.new
165
+ summary.set_root_path(File.expand_path(File.dirname(__FILE__)) + '/')
166
+ results_glob = "#{$cfg['compiler']['build_path']}*.test*"
167
+ results_glob.gsub!(/\\/, '/')
168
+ results = Dir[results_glob]
169
+ summary.set_targets(results)
170
+ summary.run
171
+ fail_out "FAIL: There were failures" if (summary.failures > 0)
172
+ end
173
+
174
+ def run_system_test_interactions(test_case_files)
175
+ load './lib/cmock.rb'
176
+
177
+ SystemTestGenerator.new.generate_files(test_case_files)
178
+ test_files = FileList.new(SYSTEST_GENERATED_FILES_PATH + 'test*.c')
179
+
180
+ load_configuration($cfg_file)
181
+ $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
182
+
183
+ include_dirs = get_local_include_dirs
184
+
185
+ # Build and execute each unit test
186
+ test_files.each do |test|
187
+
188
+ obj_list = []
189
+
190
+ test_base = File.basename(test, C_EXTENSION)
191
+ cmock_config = test_base.gsub(/test_/, '') + '_cmock.yml'
192
+
193
+ report "Executing system tests in #{File.basename(test)}..."
194
+
195
+ # Detect dependencies and build required required modules
196
+ extract_headers(test).each do |header|
197
+
198
+ # Generate any needed mocks
199
+ if header =~ /^mock_(.*)\.h/i
200
+ module_name = $1
201
+ cmock = CMock.new(SYSTEST_GENERATED_FILES_PATH + cmock_config)
202
+ cmock.setup_mocks("#{$cfg['compiler']['source_path']}#{module_name}.h")
203
+ end
204
+ # Compile corresponding source file if it exists
205
+ src_file = find_source_file(header, include_dirs)
206
+ if !src_file.nil?
207
+ obj_list << compile(src_file)
208
+ end
209
+ end
210
+
211
+ # Generate and build the test suite runner
212
+ runner_name = test_base + '_runner.c'
213
+ runner_path = $cfg['compiler']['source_path'] + runner_name
214
+ UnityTestRunnerGenerator.new(SYSTEST_GENERATED_FILES_PATH + cmock_config).run(test, runner_path)
215
+ obj_list << compile(runner_path)
216
+
217
+ # Build the test module
218
+ obj_list << compile(test)
219
+
220
+ # Link the test executable
221
+ link_it(test_base, obj_list)
222
+
223
+ # Execute unit test and generate results file
224
+ simulator = build_simulator_fields
225
+ executable = $cfg['linker']['bin_files']['destination'] + test_base + $cfg['linker']['bin_files']['extension']
226
+ if simulator.nil?
227
+ cmd_str = executable
228
+ else
229
+ cmd_str = "#{simulator[:command]} #{simulator[:pre_support]} #{executable} #{simulator[:post_support]}"
230
+ end
231
+ output = execute(cmd_str, false, false)
232
+ test_results = $cfg['compiler']['build_path'] + test_base + RESULT_EXTENSION
233
+ File.open(test_results, 'w') { |f| f.print output }
234
+ end
235
+
236
+ # Parse and report test results
237
+ total_tests = 0
238
+ total_failures = 0
239
+ failure_messages = []
240
+
241
+ test_case_files.each do |test_case|
242
+ tests = (YAML.load_file(test_case))[:systest][:tests][:units]
243
+ total_tests += tests.size
244
+
245
+ test_file = 'test_' + File.basename(test_case).ext(C_EXTENSION)
246
+ result_file = test_file.ext(RESULT_EXTENSION)
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
+ tests.each_with_index do |test, index|
249
+ # compare test's intended pass/fail state with pass/fail state in actual results;
250
+ # if they don't match, the system test has failed
251
+ this_failed = case(test[:pass])
252
+ when :ignore
253
+ (test_results[index] =~ /:IGNORE/).nil?
254
+ when true
255
+ (test_results[index] =~ /:PASS/).nil?
256
+ when false
257
+ (test_results[index] =~ /:FAIL/).nil?
258
+ end
259
+ if (this_failed)
260
+ total_failures += 1
261
+ test_results[index] =~ /test#{index+1}:(.+)/
262
+ failure_messages << "#{test_file}:test#{index+1}:should #{test[:should]}:#{$1}"
263
+ end
264
+ # some tests have additional requirements to check for (checking the actual output message)
265
+ if (test[:verify_error]) and not (test_results[index] =~ /test#{index+1}:.*#{test[:verify_error]}/)
266
+ total_failures += 1
267
+ failure_messages << "#{test_file}:test#{index+1}:should #{test[:should]}:should have output matching '#{test[:verify_error]}' but was '#{test_results[index]}'"
268
+ end
269
+ end
270
+ end
271
+
272
+ report "\n"
273
+ report "------------------------------------\n"
274
+ report "SYSTEM TEST MOCK INTERACTION SUMMARY\n"
275
+ report "------------------------------------\n"
276
+ report "#{total_tests} Tests #{total_failures} Failures 0 Ignored\n"
277
+ report "\n"
278
+
279
+ if (failure_messages.size > 0)
280
+ report 'System test failures:'
281
+ failure_messages.each do |failure|
282
+ report failure
283
+ end
284
+ end
285
+
286
+ report ''
287
+
288
+ return total_failures
289
+ end
290
+
291
+ def profile_this(filename)
292
+ profile = true
293
+ begin
294
+ require 'ruby-prof'
295
+ RubyProf.start
296
+ rescue
297
+ profile = false
298
+ end
299
+
300
+ yield
301
+
302
+ if (profile)
303
+ profile_result = RubyProf.stop
304
+ File.open("Profile_#{filename}.html", 'w') do |f|
305
+ RubyProf::GraphHtmlPrinter.new(profile_result).print(f)
306
+ end
307
+ end
308
+ end
309
+
310
+ def run_system_test_compilations(mockables)
311
+ load './lib/cmock.rb'
312
+
313
+ load_configuration($cfg_file)
314
+ $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
315
+
316
+ report "\n"
317
+ report "------------------------------------\n"
318
+ report "SYSTEM TEST MOCK COMPILATION SUMMARY\n"
319
+ report "------------------------------------\n"
320
+ mockables.each do |header|
321
+ mock_filename = 'mock_' + File.basename(header).ext('.c')
322
+ CMock.new(SYSTEST_COMPILE_MOCKABLES_PATH + 'config.yml').setup_mocks(header)
323
+ report "Compiling #{mock_filename}..."
324
+ compile(SYSTEST_GENERATED_FILES_PATH + mock_filename)
325
+ end
326
+ end
327
+
328
+ def run_system_test_profiles(mockables)
329
+ load './lib/cmock.rb'
330
+
331
+ load_configuration($cfg_file)
332
+ $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
333
+
334
+ report "\n"
335
+ report "--------------------------\n"
336
+ report "SYSTEM TEST MOCK PROFILING\n"
337
+ report "--------------------------\n"
338
+ mockables.each do |header|
339
+ mock_filename = 'mock_' + File.basename(header).ext('.c')
340
+ profile_this(mock_filename.gsub('.c','')) do
341
+ 10.times do
342
+ CMock.new(SYSTEST_COMPILE_MOCKABLES_PATH + 'config.yml').setup_mocks(header)
343
+ end
344
+ end
345
+ report "Compiling #{mock_filename}..."
346
+ compile(SYSTEST_GENERATED_FILES_PATH + mock_filename)
347
+ end
348
+ end
349
+
350
+ def build_and_test_c_files
351
+ report "\n"
352
+ report "----------------\n"
353
+ report "UNIT TEST C CODE\n"
354
+ report "----------------\n"
355
+ errors = false
356
+ FileList.new("test/c/*.yml").each do |yaml_file|
357
+ test = YAML.load(File.read(yaml_file))
358
+ report "\nTesting #{yaml_file.sub('.yml','')}"
359
+ report "(#{test[:options].join(', ')})"
360
+ test[:files].each { |f| compile(f, test[:options]) }
361
+ obj_files = test[:files].map { |f| f.gsub!(/.*\//,'').gsub!(C_EXTENSION, $cfg['compiler']['object_files']['extension']) }
362
+ link_it('TestCMockC', obj_files)
363
+ if $cfg['simulator'].nil?
364
+ execute($cfg['linker']['bin_files']['destination'] + 'TestCMockC' + $cfg['linker']['bin_files']['extension'])
365
+ else
366
+ execute(tackit($cfg['simulator']['path'].join) + ' ' +
367
+ $cfg['simulator']['pre_support'].map{|o| tackit(o)}.join(' ') + ' ' +
368
+ $cfg['linker']['bin_files']['destination'] +
369
+ 'TestCMockC' +
370
+ $cfg['linker']['bin_files']['extension'] + ' ' +
371
+ $cfg['simulator']['post_support'].map{|o| tackit(o)}.join(' ') )
372
+ end
373
+ end
374
+ end
375
+
376
+ def fail_out(msg)
377
+ puts msg
378
+ exit(-1)
379
+ end
380
+ end
381
+