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.
Files changed (295) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +9 -13
  4. data/README.md +21 -3
  5. data/{rakefile.rb → Rakefile} +0 -0
  6. data/lib/ceedling/version.rb +4 -4
  7. data/lib/ceedling/version.rb.erb +1 -1
  8. data/release/version.info +1 -1
  9. data/vendor/c_exception/Gemfile +1 -1
  10. data/vendor/c_exception/Gemfile.lock +12 -0
  11. data/vendor/c_exception/{docs/license.txt → LICENSE.txt} +9 -9
  12. data/vendor/c_exception/README.md +146 -0
  13. data/vendor/c_exception/{rakefile.rb → Rakefile} +6 -5
  14. data/vendor/c_exception/lib/CException.c +9 -6
  15. data/vendor/c_exception/release/build.info +1 -1
  16. data/vendor/c_exception/release/version.info +1 -1
  17. data/vendor/c_exception/test/CExceptionConfig.h +2 -0
  18. data/vendor/c_exception/test/TestException.c +4 -1
  19. data/vendor/cmock/README.md +24 -0
  20. data/vendor/cmock/{rakefile.rb → Rakefile} +12 -12
  21. data/vendor/cmock/docs/CMock Summary.odt +0 -0
  22. data/vendor/cmock/docs/CMock Summary.pdf +0 -0
  23. data/vendor/cmock/docs/CMock_Summary.md +130 -111
  24. data/vendor/cmock/docs/license.txt +1 -1
  25. data/vendor/cmock/lib/cmock.rb +36 -12
  26. data/vendor/cmock/lib/cmock_config.rb +39 -36
  27. data/vendor/cmock/lib/cmock_generator.rb +33 -25
  28. data/vendor/cmock/lib/cmock_generator_plugin_expect_any_args.rb +68 -0
  29. data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +18 -42
  30. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +2 -2
  31. data/vendor/cmock/lib/cmock_generator_utils.rb +39 -29
  32. data/vendor/cmock/lib/cmock_header_parser.rb +46 -39
  33. data/vendor/cmock/rakefile_helper.rb +38 -38
  34. data/vendor/cmock/src/cmock.c +20 -4
  35. data/vendor/cmock/src/cmock.h +6 -1
  36. data/vendor/cmock/src/cmock_internals.h +26 -3
  37. data/vendor/cmock/targets/clang_strict.yml +85 -0
  38. data/vendor/cmock/targets/gcc.yml +4 -2
  39. data/vendor/cmock/targets/gcc_64.yml +55 -0
  40. data/vendor/cmock/test/c/TestCMockC.c +3 -3
  41. data/vendor/cmock/test/c/TestCMockCDynamic.c +11 -11
  42. data/vendor/cmock/test/c/TestCMockCDynamic_Runner.c +4 -2
  43. data/vendor/cmock/test/c/TestCMockC_Runner.c +1 -1
  44. data/vendor/cmock/test/system/systest_generator.rb +38 -26
  45. data/vendor/cmock/test/system/test_compilation/const.h +8 -3
  46. data/vendor/cmock/test/system/test_interactions/all_plugins_but_other_limits.yml +92 -58
  47. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +53 -48
  48. data/vendor/cmock/test/system/test_interactions/array_and_pointer_handling.yml +58 -56
  49. data/vendor/cmock/test/system/test_interactions/basic_expect_and_return.yml +19 -18
  50. data/vendor/cmock/test/system/test_interactions/expect_and_return_custom_types.yml +13 -13
  51. data/vendor/cmock/test/system/test_interactions/expect_and_return_treat_as.yml +20 -20
  52. data/vendor/cmock/test/system/test_interactions/expect_any_args.yml +238 -0
  53. data/vendor/cmock/test/system/test_interactions/fancy_pointer_handling.yml +36 -34
  54. data/vendor/cmock/test/system/test_interactions/ignore_and_return.yml +24 -15
  55. data/vendor/cmock/test/system/test_interactions/nonstandard_parsed_stuff_2.yml +11 -11
  56. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_and_expect_any_args.yml +235 -0
  57. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +22 -26
  58. data/vendor/cmock/test/system/test_interactions/stubs_with_callbacks.yml +31 -31
  59. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +141 -109
  60. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +82 -0
  61. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +17 -81
  62. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +10 -10
  63. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +47 -41
  64. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +290 -227
  65. data/vendor/unity/{rakefile.rb → Rakefile} +13 -6
  66. data/vendor/unity/auto/colour_prompt.rb +33 -12
  67. data/vendor/unity/auto/generate_test_runner.rb +67 -63
  68. data/vendor/unity/auto/parseOutput.rb +189 -0
  69. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_1}/makefile +41 -40
  70. data/vendor/unity/examples/example_1/readme.txt +5 -0
  71. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_1}/src/ProductionCode.c +24 -24
  72. data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_1}/src/ProductionCode.h +3 -3
  73. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_1}/src/ProductionCode2.c +9 -9
  74. data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_1}/src/ProductionCode2.h +2 -2
  75. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_1}/test/TestProductionCode.c +62 -62
  76. data/vendor/unity/examples/{test → example_1/test}/TestProductionCode2.c +31 -31
  77. data/vendor/unity/examples/{test/no_ruby → example_1/test/test_runners}/TestProductionCode2_Runner.c +46 -46
  78. data/vendor/unity/examples/{test/no_ruby → example_1/test/test_runners}/TestProductionCode_Runner.c +50 -50
  79. data/vendor/unity/examples/example_2/makefile +45 -0
  80. data/vendor/unity/examples/example_2/readme.txt +5 -0
  81. data/vendor/unity/examples/{src → example_2/src}/ProductionCode.c +24 -24
  82. data/vendor/unity/examples/{src → example_2/src}/ProductionCode.h +3 -3
  83. data/vendor/unity/examples/{src → example_2/src}/ProductionCode2.c +9 -9
  84. data/vendor/unity/examples/{src → example_2/src}/ProductionCode2.h +2 -2
  85. data/vendor/unity/examples/{test → example_2/test}/TestProductionCode.c +64 -62
  86. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_2}/test/TestProductionCode2.c +33 -31
  87. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  88. data/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  89. data/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  90. data/vendor/unity/examples/{helper → example_3/helper}/UnityHelper.c +10 -10
  91. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/helper/UnityHelper.h +12 -12
  92. data/vendor/unity/examples/{makefile → example_3/makefile} +41 -40
  93. data/vendor/unity/examples/{rakefile.rb → example_3/rakefile.rb} +44 -43
  94. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/rakefile_helper.rb +256 -256
  95. data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/readme.txt +18 -17
  96. data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/src/ProductionCode.c +24 -24
  97. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/src/ProductionCode.h +3 -3
  98. data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/src/ProductionCode2.c +9 -9
  99. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/src/ProductionCode2.h +2 -2
  100. data/vendor/{c_exception/vendor/unity/targets/gcc_64.yml → unity/examples/example_3/target_gcc_32.yml} +46 -44
  101. data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/test/TestProductionCode.c +62 -62
  102. data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/test/TestProductionCode2.c +31 -31
  103. data/vendor/{c_exception/vendor/unity/examples → unity/examples/example_3}/test/no_ruby/TestProductionCode2_Runner.c +46 -46
  104. data/vendor/{cmock/vendor/unity/examples → unity/examples/example_3}/test/no_ruby/TestProductionCode_Runner.c +50 -50
  105. data/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  106. data/vendor/unity/extras/fixture/src/unity_fixture.c +4 -1
  107. data/vendor/unity/extras/fixture/src/unity_fixture.h +17 -16
  108. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +7 -7
  109. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +17 -0
  110. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +1 -0
  111. data/vendor/unity/makefile +6 -4
  112. data/vendor/unity/rakefile_helper.rb +36 -27
  113. data/vendor/unity/src/unity.c +180 -181
  114. data/vendor/unity/src/unity.h +64 -2
  115. data/vendor/unity/src/unity_internals.h +188 -102
  116. data/vendor/unity/targets/clang_strict.yml +83 -0
  117. data/vendor/unity/targets/gcc_32.yml +5 -0
  118. data/vendor/unity/targets/gcc_64.yml +5 -0
  119. data/vendor/{c_exception/vendor/unity/targets/gcc.yml → unity/targets/gcc_auto_limits.yml} +5 -2
  120. data/vendor/{cmock/vendor/unity/targets/gcc_64.yml → unity/targets/gcc_auto_sizeof.yml} +6 -3
  121. data/vendor/{cmock/vendor/unity/targets/gcc.yml → unity/targets/gcc_auto_stdint.yml} +4 -2
  122. data/vendor/unity/test/expectdata/testsample_cmd.c +57 -54
  123. data/vendor/unity/test/expectdata/testsample_def.c +53 -50
  124. data/vendor/unity/test/expectdata/testsample_mock_cmd.c +79 -76
  125. data/vendor/unity/test/expectdata/testsample_mock_def.c +75 -72
  126. data/vendor/unity/test/expectdata/testsample_mock_new1.c +88 -85
  127. data/vendor/unity/test/expectdata/testsample_mock_new2.c +88 -85
  128. data/vendor/unity/test/expectdata/testsample_mock_param.c +76 -73
  129. data/vendor/unity/test/expectdata/testsample_mock_run1.c +88 -85
  130. data/vendor/unity/test/expectdata/testsample_mock_run2.c +88 -85
  131. data/vendor/unity/test/expectdata/testsample_mock_yaml.c +89 -86
  132. data/vendor/unity/test/expectdata/testsample_new1.c +63 -60
  133. data/vendor/unity/test/expectdata/testsample_new2.c +66 -63
  134. data/vendor/unity/test/expectdata/testsample_param.c +54 -51
  135. data/vendor/unity/test/expectdata/testsample_run1.c +63 -60
  136. data/vendor/unity/test/expectdata/testsample_run2.c +66 -63
  137. data/vendor/unity/test/expectdata/testsample_yaml.c +67 -64
  138. data/vendor/unity/test/test_generate_test_runner.rb +66 -72
  139. data/vendor/unity/test/testunity.c +591 -111
  140. metadata +58 -195
  141. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +0 -94
  142. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +0 -39
  143. data/vendor/c_exception/vendor/unity/auto/generate_config.yml +0 -36
  144. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +0 -202
  145. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +0 -313
  146. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +0 -23
  147. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +0 -139
  148. data/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  149. data/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  150. data/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +0 -217
  151. data/vendor/c_exception/vendor/unity/docs/license.txt +0 -31
  152. data/vendor/c_exception/vendor/unity/examples/helper/UnityHelper.c +0 -10
  153. data/vendor/c_exception/vendor/unity/examples/helper/UnityHelper.h +0 -12
  154. data/vendor/c_exception/vendor/unity/examples/makefile +0 -40
  155. data/vendor/c_exception/vendor/unity/examples/rakefile.rb +0 -32
  156. data/vendor/c_exception/vendor/unity/examples/rakefile_helper.rb +0 -256
  157. data/vendor/c_exception/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +0 -50
  158. data/vendor/c_exception/vendor/unity/extras/fixture/build/MakefileWorker.mk +0 -331
  159. data/vendor/c_exception/vendor/unity/extras/fixture/build/filterGcov.sh +0 -61
  160. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +0 -37
  161. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +0 -178
  162. data/vendor/c_exception/vendor/unity/extras/fixture/readme.txt +0 -9
  163. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +0 -381
  164. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +0 -81
  165. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +0 -44
  166. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +0 -16
  167. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +0 -21
  168. data/vendor/c_exception/vendor/unity/extras/fixture/test/testunity_fixture.c +0 -39
  169. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +0 -321
  170. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +0 -40
  171. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +0 -56
  172. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +0 -17
  173. data/vendor/c_exception/vendor/unity/makefile +0 -35
  174. data/vendor/c_exception/vendor/unity/rakefile.rb +0 -59
  175. data/vendor/c_exception/vendor/unity/rakefile_helper.rb +0 -240
  176. data/vendor/c_exception/vendor/unity/release/build.info +0 -2
  177. data/vendor/c_exception/vendor/unity/release/version.info +0 -2
  178. data/vendor/c_exception/vendor/unity/src/unity.c +0 -979
  179. data/vendor/c_exception/vendor/unity/src/unity.h +0 -232
  180. data/vendor/c_exception/vendor/unity/src/unity_internals.h +0 -424
  181. data/vendor/c_exception/vendor/unity/targets/hitech_picc18.yml +0 -101
  182. data/vendor/c_exception/vendor/unity/targets/iar_arm_v4.yml +0 -89
  183. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5.yml +0 -79
  184. data/vendor/c_exception/vendor/unity/targets/iar_arm_v5_3.yml +0 -79
  185. data/vendor/c_exception/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +0 -93
  186. data/vendor/c_exception/vendor/unity/targets/iar_cortexm3_v5.yml +0 -83
  187. data/vendor/c_exception/vendor/unity/targets/iar_msp430.yml +0 -94
  188. data/vendor/c_exception/vendor/unity/targets/iar_sh2a_v6.yml +0 -85
  189. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +0 -54
  190. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +0 -50
  191. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +0 -76
  192. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +0 -72
  193. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +0 -85
  194. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +0 -85
  195. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +0 -73
  196. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +0 -85
  197. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +0 -85
  198. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +0 -86
  199. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +0 -60
  200. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +0 -63
  201. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +0 -51
  202. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +0 -60
  203. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +0 -63
  204. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +0 -64
  205. data/vendor/c_exception/vendor/unity/test/test_generate_test_runner.rb +0 -94
  206. data/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +0 -51
  207. data/vendor/c_exception/vendor/unity/test/testdata/sample.yml +0 -9
  208. data/vendor/c_exception/vendor/unity/test/testdata/testsample.c +0 -51
  209. data/vendor/c_exception/vendor/unity/test/testparameterized.c +0 -101
  210. data/vendor/c_exception/vendor/unity/test/testunity.c +0 -2024
  211. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  212. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  213. data/vendor/cmock/vendor/c_exception/docs/license.txt +0 -30
  214. data/vendor/cmock/vendor/c_exception/docs/readme.txt +0 -236
  215. data/vendor/cmock/vendor/c_exception/lib/CException.c +0 -39
  216. data/vendor/cmock/vendor/c_exception/lib/CException.h +0 -70
  217. data/vendor/cmock/vendor/c_exception/makefile +0 -24
  218. data/vendor/cmock/vendor/c_exception/rakefile.rb +0 -41
  219. data/vendor/cmock/vendor/c_exception/release/build.info +0 -2
  220. data/vendor/cmock/vendor/c_exception/release/version.info +0 -2
  221. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +0 -27
  222. data/vendor/cmock/vendor/c_exception/test/TestException.c +0 -291
  223. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +0 -62
  224. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +0 -94
  225. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +0 -39
  226. data/vendor/cmock/vendor/unity/auto/generate_config.yml +0 -36
  227. data/vendor/cmock/vendor/unity/auto/generate_module.rb +0 -202
  228. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +0 -313
  229. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +0 -23
  230. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +0 -139
  231. data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
  232. data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
  233. data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +0 -217
  234. data/vendor/cmock/vendor/unity/docs/license.txt +0 -31
  235. data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.c +0 -10
  236. data/vendor/cmock/vendor/unity/examples/rakefile.rb +0 -32
  237. data/vendor/cmock/vendor/unity/examples/readme.txt +0 -18
  238. data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +0 -46
  239. data/vendor/cmock/vendor/unity/extras/fixture/build/MakefileWorker.mk +0 -331
  240. data/vendor/cmock/vendor/unity/extras/fixture/build/filterGcov.sh +0 -61
  241. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +0 -37
  242. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +0 -178
  243. data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +0 -9
  244. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +0 -381
  245. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +0 -81
  246. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +0 -44
  247. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +0 -16
  248. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +0 -21
  249. data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +0 -39
  250. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +0 -321
  251. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +0 -40
  252. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +0 -56
  253. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +0 -17
  254. data/vendor/cmock/vendor/unity/makefile +0 -35
  255. data/vendor/cmock/vendor/unity/rakefile.rb +0 -48
  256. data/vendor/cmock/vendor/unity/rakefile_helper.rb +0 -240
  257. data/vendor/cmock/vendor/unity/release/build.info +0 -2
  258. data/vendor/cmock/vendor/unity/release/version.info +0 -2
  259. data/vendor/cmock/vendor/unity/src/unity.c +0 -979
  260. data/vendor/cmock/vendor/unity/src/unity.h +0 -232
  261. data/vendor/cmock/vendor/unity/src/unity_internals.h +0 -424
  262. data/vendor/cmock/vendor/unity/targets/hitech_picc18.yml +0 -101
  263. data/vendor/cmock/vendor/unity/targets/iar_arm_v4.yml +0 -89
  264. data/vendor/cmock/vendor/unity/targets/iar_arm_v5.yml +0 -79
  265. data/vendor/cmock/vendor/unity/targets/iar_arm_v5_3.yml +0 -79
  266. data/vendor/cmock/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +0 -93
  267. data/vendor/cmock/vendor/unity/targets/iar_cortexm3_v5.yml +0 -83
  268. data/vendor/cmock/vendor/unity/targets/iar_msp430.yml +0 -94
  269. data/vendor/cmock/vendor/unity/targets/iar_sh2a_v6.yml +0 -85
  270. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +0 -54
  271. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +0 -50
  272. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +0 -76
  273. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +0 -72
  274. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +0 -85
  275. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +0 -85
  276. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +0 -73
  277. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +0 -85
  278. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +0 -85
  279. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +0 -86
  280. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +0 -60
  281. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +0 -63
  282. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +0 -51
  283. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +0 -60
  284. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +0 -63
  285. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +0 -64
  286. data/vendor/cmock/vendor/unity/test/test_generate_test_runner.rb +0 -94
  287. data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +0 -51
  288. data/vendor/cmock/vendor/unity/test/testdata/sample.yml +0 -9
  289. data/vendor/cmock/vendor/unity/test/testdata/testsample.c +0 -51
  290. data/vendor/cmock/vendor/unity/test/testparameterized.c +0 -101
  291. data/vendor/cmock/vendor/unity/test/testunity.c +0 -2024
  292. data/vendor/unity/Gemfile +0 -4
  293. data/vendor/unity/examples/helper/UnityHelper.h +0 -12
  294. data/vendor/unity/examples/rakefile_helper.rb +0 -256
  295. data/vendor/unity/examples/readme.txt +0 -18
@@ -0,0 +1,12 @@
1
+ #include "unity_fixture.h"
2
+
3
+ static void RunAllTests(void)
4
+ {
5
+ RUN_TEST_GROUP(ProductionCode);
6
+ RUN_TEST_GROUP(ProductionCode2);
7
+ }
8
+
9
+ int main(int argc, char * argv[])
10
+ {
11
+ return UnityMain(argc, argv, RunAllTests);
12
+ }
@@ -1,10 +1,10 @@
1
- #include "unity.h"
2
- #include "UnityHelper.h"
3
- #include <stdio.h>
4
- #include <string.h>
5
-
6
- void AssertEqualExampleStruct(const EXAMPLE_STRUCT_T expected, const EXAMPLE_STRUCT_T actual, const unsigned short line)
7
- {
8
- UNITY_TEST_ASSERT_EQUAL_INT(expected.x, actual.x, line, "Example Struct Failed For Field x");
9
- UNITY_TEST_ASSERT_EQUAL_INT(expected.y, actual.y, line, "Example Struct Failed For Field y");
10
- }
1
+ #include "unity.h"
2
+ #include "UnityHelper.h"
3
+ #include <stdio.h>
4
+ #include <string.h>
5
+
6
+ void AssertEqualExampleStruct(const EXAMPLE_STRUCT_T expected, const EXAMPLE_STRUCT_T actual, const unsigned short line)
7
+ {
8
+ UNITY_TEST_ASSERT_EQUAL_INT(expected.x, actual.x, line, "Example Struct Failed For Field x");
9
+ UNITY_TEST_ASSERT_EQUAL_INT(expected.y, actual.y, line, "Example Struct Failed For Field y");
10
+ }
@@ -1,12 +1,12 @@
1
- #ifndef _TESTHELPER_H
2
- #define _TESTHELPER_H
3
-
4
- #include "Types.h"
5
-
6
- void AssertEqualExampleStruct(const EXAMPLE_STRUCT_T expected, const EXAMPLE_STRUCT_T actual, const unsigned short line);
7
-
8
- #define UNITY_TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual, line, message) AssertEqualExampleStruct(expected, actual, line);
9
-
10
- #define TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual) UNITY_TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual, __LINE__, NULL);
11
-
12
- #endif // _TESTHELPER_H
1
+ #ifndef _TESTHELPER_H
2
+ #define _TESTHELPER_H
3
+
4
+ #include "Types.h"
5
+
6
+ void AssertEqualExampleStruct(const EXAMPLE_STRUCT_T expected, const EXAMPLE_STRUCT_T actual, const unsigned short line);
7
+
8
+ #define UNITY_TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual, line, message) AssertEqualExampleStruct(expected, actual, line);
9
+
10
+ #define TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual) UNITY_TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual, __LINE__, NULL);
11
+
12
+ #endif // _TESTHELPER_H
@@ -1,40 +1,41 @@
1
- # ==========================================
2
- # Unity Project - A Test Framework for C
3
- # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
- # [Released under MIT License. Please refer to license.txt for details]
5
- # ==========================================
6
-
7
- C_COMPILER=gcc
8
- TARGET_BASE1=test1
9
- TARGET_BASE2=test2
10
- ifeq ($(OS),Windows_NT)
11
- TARGET_EXTENSION=.exe
12
- else
13
- TARGET_EXTENSION=.out
14
- endif
15
- TARGET1 = $(TARGET_BASE1)$(TARGET_EXTENSION)
16
- TARGET2 = $(TARGET_BASE2)$(TARGET_EXTENSION)
17
- SRC_FILES1=../src/unity.c src/ProductionCode.c test/TestProductionCode.c test/no_ruby/TestProductionCode_Runner.c
18
- SRC_FILES2=../src/unity.c src/ProductionCode2.c test/TestProductionCode2.c test/no_ruby/TestProductionCode2_Runner.c
19
- INC_DIRS=-Isrc -I../src
20
- SYMBOLS=-DTEST
21
-
22
- ifeq ($(OS),Windows_NT)
23
- CLEANUP = del /F /Q build\* && del /F /Q $(TARGET1) && del /F /Q $(TARGET2)
24
- else
25
- CLEANUP = rm -f build/*.o ; rm -f $(TARGET1) ; rm -f $(TARGET2)
26
- endif
27
-
28
- all: clean default
29
-
30
- default:
31
- # ruby auto/generate_test_runner.rb test/TestProductionCode.c test/no_ruby/TestProductionCode_Runner.c
32
- # ruby auto/generate_test_runner.rb test/TestProductionCode2.c test/no_ruby/TestProductionCode2_Runner.c
33
- $(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES1) -o $(TARGET1)
34
- $(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES2) -o $(TARGET2)
35
- ./$(TARGET1)
36
- ./$(TARGET2)
37
-
38
- clean:
39
- $(CLEANUP)
40
-
1
+ # ==========================================
2
+ # Unity Project - A Test Framework for C
3
+ # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
+ # [Released under MIT License. Please refer to license.txt for details]
5
+ # ==========================================
6
+
7
+ UNITY_ROOT=../..
8
+ C_COMPILER=gcc
9
+ TARGET_BASE1=test1
10
+ TARGET_BASE2=test2
11
+ ifeq ($(OS),Windows_NT)
12
+ TARGET_EXTENSION=.exe
13
+ else
14
+ TARGET_EXTENSION=.out
15
+ endif
16
+ TARGET1 = $(TARGET_BASE1)$(TARGET_EXTENSION)
17
+ TARGET2 = $(TARGET_BASE2)$(TARGET_EXTENSION)
18
+ SRC_FILES1=$(UNITY_ROOT)/src/unity.c src/ProductionCode.c test/TestProductionCode.c test/no_ruby/TestProductionCode_Runner.c
19
+ SRC_FILES2=$(UNITY_ROOT)/src/unity.c src/ProductionCode2.c test/TestProductionCode2.c test/no_ruby/TestProductionCode2_Runner.c
20
+ INC_DIRS=-Isrc -I$(UNITY_ROOT)/src
21
+ SYMBOLS=-DTEST
22
+
23
+ ifeq ($(OS),Windows_NT)
24
+ CLEANUP = del /F /Q $(TARGET1) && del /F /Q $(TARGET2)
25
+ else
26
+ CLEANUP = rm -f build/*.o ; rm -f $(TARGET1) ; rm -f $(TARGET2)
27
+ endif
28
+
29
+ all: clean default
30
+
31
+ default:
32
+ # ruby auto/generate_test_runner.rb test/TestProductionCode.c test/no_ruby/TestProductionCode_Runner.c
33
+ # ruby auto/generate_test_runner.rb test/TestProductionCode2.c test/no_ruby/TestProductionCode2_Runner.c
34
+ $(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES1) -o $(TARGET1)
35
+ $(C_COMPILER) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES2) -o $(TARGET2)
36
+ ./$(TARGET1)
37
+ ./$(TARGET2)
38
+
39
+ clean:
40
+ $(CLEANUP)
41
+
@@ -1,43 +1,44 @@
1
- HERE = File.expand_path(File.dirname(__FILE__)) + '/'
2
-
3
- require 'rake'
4
- require 'rake/clean'
5
- require 'rake/testtask'
6
- require HERE+'rakefile_helper'
7
-
8
- TEMP_DIRS = [
9
- File.join(HERE, 'build')
10
- ]
11
-
12
- TEMP_DIRS.each do |dir|
13
- directory(dir)
14
- CLOBBER.include(dir)
15
- end
16
-
17
- task :prepare_for_tests => TEMP_DIRS
18
-
19
- include RakefileHelpers
20
-
21
- # Load default configuration, for now
22
- DEFAULT_CONFIG_FILE = 'gcc_32.yml'
23
- configure_toolchain(DEFAULT_CONFIG_FILE)
24
-
25
- task :unit => [:prepare_for_tests] do
26
- run_tests get_unit_test_files
27
- end
28
-
29
- desc "Generate test summary"
30
- task :summary do
31
- report_summary
32
- end
33
-
34
- desc "Build and test Unity"
35
- task :all => [:clean, :unit, :summary]
36
- task :default => [:clobber, :all]
37
- task :ci => [:default]
38
- task :cruise => [:default]
39
-
40
- desc "Load configuration"
41
- task :config, :config_file do |t, args|
42
- configure_toolchain(args[:config_file])
43
- end
1
+ HERE = File.expand_path(File.dirname(__FILE__)) + '/'
2
+ UNITY_ROOT = File.expand_path(File.dirname(__FILE__)) + '/../..'
3
+
4
+ require 'rake'
5
+ require 'rake/clean'
6
+ require 'rake/testtask'
7
+ require HERE+'rakefile_helper'
8
+
9
+ TEMP_DIRS = [
10
+ File.join(HERE, 'build')
11
+ ]
12
+
13
+ TEMP_DIRS.each do |dir|
14
+ directory(dir)
15
+ CLOBBER.include(dir)
16
+ end
17
+
18
+ task :prepare_for_tests => TEMP_DIRS
19
+
20
+ include RakefileHelpers
21
+
22
+ # Load default configuration, for now
23
+ DEFAULT_CONFIG_FILE = 'target_gcc_32.yml'
24
+ configure_toolchain(DEFAULT_CONFIG_FILE)
25
+
26
+ task :unit => [:prepare_for_tests] do
27
+ run_tests get_unit_test_files
28
+ end
29
+
30
+ desc "Generate test summary"
31
+ task :summary do
32
+ report_summary
33
+ end
34
+
35
+ desc "Build and test Unity"
36
+ task :all => [:clean, :unit, :summary]
37
+ task :default => [:clobber, :all]
38
+ task :ci => [:default]
39
+ task :cruise => [:default]
40
+
41
+ desc "Load configuration"
42
+ task :config, :config_file do |t, args|
43
+ configure_toolchain(args[:config_file])
44
+ end
@@ -1,256 +1,256 @@
1
- require 'yaml'
2
- require 'fileutils'
3
- require HERE+'../auto/unity_test_summary'
4
- require HERE+'../auto/generate_test_runner'
5
- require HERE+'../auto/colour_reporter'
6
-
7
- module RakefileHelpers
8
-
9
- C_EXTENSION = '.c'
10
-
11
- def load_configuration(config_file)
12
- $cfg_file = "../targets/#{config_file}"
13
- $cfg = YAML.load(File.read($cfg_file))
14
- end
15
-
16
- def configure_clean
17
- CLEAN.include($cfg['compiler']['build_path'] + '*.*') unless $cfg['compiler']['build_path'].nil?
18
- end
19
-
20
- def configure_toolchain(config_file=DEFAULT_CONFIG_FILE)
21
- config_file += '.yml' unless config_file =~ /\.yml$/
22
- load_configuration('../targets/'+config_file)
23
- configure_clean
24
- end
25
-
26
- def get_unit_test_files
27
- path = $cfg['compiler']['unit_tests_path'] + 'Test*' + C_EXTENSION
28
- path.gsub!(/\\/, '/')
29
- FileList.new(path)
30
- end
31
-
32
- def get_local_include_dirs
33
- include_dirs = $cfg['compiler']['includes']['items'].dup
34
- include_dirs.delete_if {|dir| dir.is_a?(Array)}
35
- return include_dirs
36
- end
37
-
38
- def extract_headers(filename)
39
- includes = []
40
- lines = File.readlines(filename)
41
- lines.each do |line|
42
- m = line.match(/^\s*#include\s+\"\s*(.+\.[hH])\s*\"/)
43
- if not m.nil?
44
- includes << m[1]
45
- end
46
- end
47
- return includes
48
- end
49
-
50
- def find_source_file(header, paths)
51
- paths.each do |dir|
52
- src_file = dir + header.ext(C_EXTENSION)
53
- if (File.exists?(src_file))
54
- return src_file
55
- end
56
- end
57
- return nil
58
- end
59
-
60
- def tackit(strings)
61
- if strings.is_a?(Array)
62
- result = "\"#{strings.join}\""
63
- else
64
- result = strings
65
- end
66
- return result
67
- end
68
-
69
- def squash(prefix, items)
70
- result = ''
71
- items.each { |item| result += " #{prefix}#{tackit(item)}" }
72
- return result
73
- end
74
-
75
- def build_compiler_fields
76
- command = tackit($cfg['compiler']['path'])
77
- if $cfg['compiler']['defines']['items'].nil?
78
- defines = ''
79
- else
80
- defines = squash($cfg['compiler']['defines']['prefix'], $cfg['compiler']['defines']['items'])
81
- end
82
- options = squash('', $cfg['compiler']['options'])
83
- includes = squash($cfg['compiler']['includes']['prefix'], $cfg['compiler']['includes']['items'])
84
- includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
85
- return {:command => command, :defines => defines, :options => options, :includes => includes}
86
- end
87
-
88
- def compile(file, defines=[])
89
- compiler = build_compiler_fields
90
- cmd_str = "#{compiler[:command]}#{compiler[:defines]}#{compiler[:options]}#{compiler[:includes]} #{file} " +
91
- "#{$cfg['compiler']['object_files']['prefix']}#{$cfg['compiler']['object_files']['destination']}"
92
- obj_file = "#{File.basename(file, C_EXTENSION)}#{$cfg['compiler']['object_files']['extension']}"
93
- execute(cmd_str + obj_file)
94
- return obj_file
95
- end
96
-
97
- def build_linker_fields
98
- command = tackit($cfg['linker']['path'])
99
- if $cfg['linker']['options'].nil?
100
- options = ''
101
- else
102
- options = squash('', $cfg['linker']['options'])
103
- end
104
- if ($cfg['linker']['includes'].nil? || $cfg['linker']['includes']['items'].nil?)
105
- includes = ''
106
- else
107
- includes = squash($cfg['linker']['includes']['prefix'], $cfg['linker']['includes']['items'])
108
- end
109
- includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
110
- return {:command => command, :options => options, :includes => includes}
111
- end
112
-
113
- def link_it(exe_name, obj_list)
114
- linker = build_linker_fields
115
- cmd_str = "#{linker[:command]}#{linker[:options]}#{linker[:includes]} " +
116
- (obj_list.map{|obj|"#{$cfg['linker']['object_files']['path']}#{obj} "}).join +
117
- $cfg['linker']['bin_files']['prefix'] + ' ' +
118
- $cfg['linker']['bin_files']['destination'] +
119
- exe_name + $cfg['linker']['bin_files']['extension']
120
- execute(cmd_str)
121
- end
122
-
123
- def build_simulator_fields
124
- return nil if $cfg['simulator'].nil?
125
- if $cfg['simulator']['path'].nil?
126
- command = ''
127
- else
128
- command = (tackit($cfg['simulator']['path']) + ' ')
129
- end
130
- if $cfg['simulator']['pre_support'].nil?
131
- pre_support = ''
132
- else
133
- pre_support = squash('', $cfg['simulator']['pre_support'])
134
- end
135
- if $cfg['simulator']['post_support'].nil?
136
- post_support = ''
137
- else
138
- post_support = squash('', $cfg['simulator']['post_support'])
139
- end
140
- return {:command => command, :pre_support => pre_support, :post_support => post_support}
141
- end
142
-
143
- def execute(command_string, verbose=true, raise_on_fail=true)
144
- report command_string
145
- output = `#{command_string}`.chomp
146
- report(output) if (verbose && !output.nil? && (output.length > 0))
147
- if (($?.exitstatus != 0) and (raise_on_fail))
148
- raise "Command failed. (Returned #{$?.exitstatus})"
149
- end
150
- return output
151
- end
152
-
153
- def report_summary
154
- summary = UnityTestSummary.new
155
- summary.set_root_path(HERE)
156
- results_glob = "#{$cfg['compiler']['build_path']}*.test*"
157
- results_glob.gsub!(/\\/, '/')
158
- results = Dir[results_glob]
159
- summary.set_targets(results)
160
- summary.run
161
- fail_out "FAIL: There were failures" if (summary.failures > 0)
162
- end
163
-
164
- def run_tests(test_files)
165
-
166
- report 'Running system tests...'
167
-
168
- # Tack on TEST define for compiling unit tests
169
- load_configuration($cfg_file)
170
- test_defines = ['TEST']
171
- $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
172
- $cfg['compiler']['defines']['items'] << 'TEST'
173
-
174
- include_dirs = get_local_include_dirs
175
-
176
- # Build and execute each unit test
177
- test_files.each do |test|
178
- obj_list = []
179
-
180
- # Detect dependencies and build required required modules
181
- extract_headers(test).each do |header|
182
- # Compile corresponding source file if it exists
183
- src_file = find_source_file(header, include_dirs)
184
- if !src_file.nil?
185
- obj_list << compile(src_file, test_defines)
186
- end
187
- end
188
-
189
- # Build the test runner (generate if configured to do so)
190
- test_base = File.basename(test, C_EXTENSION)
191
- runner_name = test_base + '_Runner.c'
192
- if $cfg['compiler']['runner_path'].nil?
193
- runner_path = $cfg['compiler']['build_path'] + runner_name
194
- test_gen = UnityTestRunnerGenerator.new($cfg_file)
195
- test_gen.run(test, runner_path)
196
- else
197
- runner_path = $cfg['compiler']['runner_path'] + runner_name
198
- end
199
-
200
- obj_list << compile(runner_path, test_defines)
201
-
202
- # Build the test module
203
- obj_list << compile(test, test_defines)
204
-
205
- # Link the test executable
206
- link_it(test_base, obj_list)
207
-
208
- # Execute unit test and generate results file
209
- simulator = build_simulator_fields
210
- executable = $cfg['linker']['bin_files']['destination'] + test_base + $cfg['linker']['bin_files']['extension']
211
- if simulator.nil?
212
- cmd_str = executable
213
- else
214
- cmd_str = "#{simulator[:command]} #{simulator[:pre_support]} #{executable} #{simulator[:post_support]}"
215
- end
216
- output = execute(cmd_str, true, false)
217
- test_results = $cfg['compiler']['build_path'] + test_base
218
- if output.match(/OK$/m).nil?
219
- test_results += '.testfail'
220
- else
221
- test_results += '.testpass'
222
- end
223
- File.open(test_results, 'w') { |f| f.print output }
224
- end
225
- end
226
-
227
- def build_application(main)
228
-
229
- report "Building application..."
230
-
231
- obj_list = []
232
- load_configuration($cfg_file)
233
- main_path = $cfg['compiler']['source_path'] + main + C_EXTENSION
234
-
235
- # Detect dependencies and build required required modules
236
- include_dirs = get_local_include_dirs
237
- extract_headers(main_path).each do |header|
238
- src_file = find_source_file(header, include_dirs)
239
- if !src_file.nil?
240
- obj_list << compile(src_file)
241
- end
242
- end
243
-
244
- # Build the main source file
245
- main_base = File.basename(main_path, C_EXTENSION)
246
- obj_list << compile(main_path)
247
-
248
- # Create the executable
249
- link_it(main_base, obj_list)
250
- end
251
-
252
- def fail_out(msg)
253
- puts msg
254
- exit(-1)
255
- end
256
- end
1
+ require 'yaml'
2
+ require 'fileutils'
3
+ require UNITY_ROOT+'/auto/unity_test_summary'
4
+ require UNITY_ROOT+'/auto/generate_test_runner'
5
+ require UNITY_ROOT+'/auto/colour_reporter'
6
+
7
+ module RakefileHelpers
8
+
9
+ C_EXTENSION = '.c'
10
+
11
+ def load_configuration(config_file)
12
+ $cfg_file = config_file
13
+ $cfg = YAML.load(File.read($cfg_file))
14
+ end
15
+
16
+ def configure_clean
17
+ CLEAN.include($cfg['compiler']['build_path'] + '*.*') unless $cfg['compiler']['build_path'].nil?
18
+ end
19
+
20
+ def configure_toolchain(config_file=DEFAULT_CONFIG_FILE)
21
+ config_file += '.yml' unless config_file =~ /\.yml$/
22
+ load_configuration(config_file)
23
+ configure_clean
24
+ end
25
+
26
+ def get_unit_test_files
27
+ path = $cfg['compiler']['unit_tests_path'] + 'Test*' + C_EXTENSION
28
+ path.gsub!(/\\/, '/')
29
+ FileList.new(path)
30
+ end
31
+
32
+ def get_local_include_dirs
33
+ include_dirs = $cfg['compiler']['includes']['items'].dup
34
+ include_dirs.delete_if {|dir| dir.is_a?(Array)}
35
+ return include_dirs
36
+ end
37
+
38
+ def extract_headers(filename)
39
+ includes = []
40
+ lines = File.readlines(filename)
41
+ lines.each do |line|
42
+ m = line.match(/^\s*#include\s+\"\s*(.+\.[hH])\s*\"/)
43
+ if not m.nil?
44
+ includes << m[1]
45
+ end
46
+ end
47
+ return includes
48
+ end
49
+
50
+ def find_source_file(header, paths)
51
+ paths.each do |dir|
52
+ src_file = dir + header.ext(C_EXTENSION)
53
+ if (File.exists?(src_file))
54
+ return src_file
55
+ end
56
+ end
57
+ return nil
58
+ end
59
+
60
+ def tackit(strings)
61
+ if strings.is_a?(Array)
62
+ result = "\"#{strings.join}\""
63
+ else
64
+ result = strings
65
+ end
66
+ return result
67
+ end
68
+
69
+ def squash(prefix, items)
70
+ result = ''
71
+ items.each { |item| result += " #{prefix}#{tackit(item)}" }
72
+ return result
73
+ end
74
+
75
+ def build_compiler_fields
76
+ command = tackit($cfg['compiler']['path'])
77
+ if $cfg['compiler']['defines']['items'].nil?
78
+ defines = ''
79
+ else
80
+ defines = squash($cfg['compiler']['defines']['prefix'], $cfg['compiler']['defines']['items'])
81
+ end
82
+ options = squash('', $cfg['compiler']['options'])
83
+ includes = squash($cfg['compiler']['includes']['prefix'], $cfg['compiler']['includes']['items'])
84
+ includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
85
+ return {:command => command, :defines => defines, :options => options, :includes => includes}
86
+ end
87
+
88
+ def compile(file, defines=[])
89
+ compiler = build_compiler_fields
90
+ cmd_str = "#{compiler[:command]}#{compiler[:defines]}#{compiler[:options]}#{compiler[:includes]} #{file} " +
91
+ "#{$cfg['compiler']['object_files']['prefix']}#{$cfg['compiler']['object_files']['destination']}"
92
+ obj_file = "#{File.basename(file, C_EXTENSION)}#{$cfg['compiler']['object_files']['extension']}"
93
+ execute(cmd_str + obj_file)
94
+ return obj_file
95
+ end
96
+
97
+ def build_linker_fields
98
+ command = tackit($cfg['linker']['path'])
99
+ if $cfg['linker']['options'].nil?
100
+ options = ''
101
+ else
102
+ options = squash('', $cfg['linker']['options'])
103
+ end
104
+ if ($cfg['linker']['includes'].nil? || $cfg['linker']['includes']['items'].nil?)
105
+ includes = ''
106
+ else
107
+ includes = squash($cfg['linker']['includes']['prefix'], $cfg['linker']['includes']['items'])
108
+ end
109
+ includes = includes.gsub(/\\ /, ' ').gsub(/\\\"/, '"').gsub(/\\$/, '') # Remove trailing slashes (for IAR)
110
+ return {:command => command, :options => options, :includes => includes}
111
+ end
112
+
113
+ def link_it(exe_name, obj_list)
114
+ linker = build_linker_fields
115
+ cmd_str = "#{linker[:command]}#{linker[:options]}#{linker[:includes]} " +
116
+ (obj_list.map{|obj|"#{$cfg['linker']['object_files']['path']}#{obj} "}).join +
117
+ $cfg['linker']['bin_files']['prefix'] + ' ' +
118
+ $cfg['linker']['bin_files']['destination'] +
119
+ exe_name + $cfg['linker']['bin_files']['extension']
120
+ execute(cmd_str)
121
+ end
122
+
123
+ def build_simulator_fields
124
+ return nil if $cfg['simulator'].nil?
125
+ if $cfg['simulator']['path'].nil?
126
+ command = ''
127
+ else
128
+ command = (tackit($cfg['simulator']['path']) + ' ')
129
+ end
130
+ if $cfg['simulator']['pre_support'].nil?
131
+ pre_support = ''
132
+ else
133
+ pre_support = squash('', $cfg['simulator']['pre_support'])
134
+ end
135
+ if $cfg['simulator']['post_support'].nil?
136
+ post_support = ''
137
+ else
138
+ post_support = squash('', $cfg['simulator']['post_support'])
139
+ end
140
+ return {:command => command, :pre_support => pre_support, :post_support => post_support}
141
+ end
142
+
143
+ def execute(command_string, verbose=true, raise_on_fail=true)
144
+ report command_string
145
+ output = `#{command_string}`.chomp
146
+ report(output) if (verbose && !output.nil? && (output.length > 0))
147
+ if (($?.exitstatus != 0) and (raise_on_fail))
148
+ raise "Command failed. (Returned #{$?.exitstatus})"
149
+ end
150
+ return output
151
+ end
152
+
153
+ def report_summary
154
+ summary = UnityTestSummary.new
155
+ summary.set_root_path(HERE)
156
+ results_glob = "#{$cfg['compiler']['build_path']}*.test*"
157
+ results_glob.gsub!(/\\/, '/')
158
+ results = Dir[results_glob]
159
+ summary.set_targets(results)
160
+ summary.run
161
+ fail_out "FAIL: There were failures" if (summary.failures > 0)
162
+ end
163
+
164
+ def run_tests(test_files)
165
+
166
+ report 'Running system tests...'
167
+
168
+ # Tack on TEST define for compiling unit tests
169
+ load_configuration($cfg_file)
170
+ test_defines = ['TEST']
171
+ $cfg['compiler']['defines']['items'] = [] if $cfg['compiler']['defines']['items'].nil?
172
+ $cfg['compiler']['defines']['items'] << 'TEST'
173
+
174
+ include_dirs = get_local_include_dirs
175
+
176
+ # Build and execute each unit test
177
+ test_files.each do |test|
178
+ obj_list = []
179
+
180
+ # Detect dependencies and build required required modules
181
+ extract_headers(test).each do |header|
182
+ # Compile corresponding source file if it exists
183
+ src_file = find_source_file(header, include_dirs)
184
+ if !src_file.nil?
185
+ obj_list << compile(src_file, test_defines)
186
+ end
187
+ end
188
+
189
+ # Build the test runner (generate if configured to do so)
190
+ test_base = File.basename(test, C_EXTENSION)
191
+ runner_name = test_base + '_Runner.c'
192
+ if $cfg['compiler']['runner_path'].nil?
193
+ runner_path = $cfg['compiler']['build_path'] + runner_name
194
+ test_gen = UnityTestRunnerGenerator.new($cfg_file)
195
+ test_gen.run(test, runner_path)
196
+ else
197
+ runner_path = $cfg['compiler']['runner_path'] + runner_name
198
+ end
199
+
200
+ obj_list << compile(runner_path, test_defines)
201
+
202
+ # Build the test module
203
+ obj_list << compile(test, test_defines)
204
+
205
+ # Link the test executable
206
+ link_it(test_base, obj_list)
207
+
208
+ # Execute unit test and generate results file
209
+ simulator = build_simulator_fields
210
+ executable = $cfg['linker']['bin_files']['destination'] + test_base + $cfg['linker']['bin_files']['extension']
211
+ if simulator.nil?
212
+ cmd_str = executable
213
+ else
214
+ cmd_str = "#{simulator[:command]} #{simulator[:pre_support]} #{executable} #{simulator[:post_support]}"
215
+ end
216
+ output = execute(cmd_str, true, false)
217
+ test_results = $cfg['compiler']['build_path'] + test_base
218
+ if output.match(/OK$/m).nil?
219
+ test_results += '.testfail'
220
+ else
221
+ test_results += '.testpass'
222
+ end
223
+ File.open(test_results, 'w') { |f| f.print output }
224
+ end
225
+ end
226
+
227
+ def build_application(main)
228
+
229
+ report "Building application..."
230
+
231
+ obj_list = []
232
+ load_configuration($cfg_file)
233
+ main_path = $cfg['compiler']['source_path'] + main + C_EXTENSION
234
+
235
+ # Detect dependencies and build required required modules
236
+ include_dirs = get_local_include_dirs
237
+ extract_headers(main_path).each do |header|
238
+ src_file = find_source_file(header, include_dirs)
239
+ if !src_file.nil?
240
+ obj_list << compile(src_file)
241
+ end
242
+ end
243
+
244
+ # Build the main source file
245
+ main_base = File.basename(main_path, C_EXTENSION)
246
+ obj_list << compile(main_path)
247
+
248
+ # Create the executable
249
+ link_it(main_base, obj_list)
250
+ end
251
+
252
+ def fail_out(msg)
253
+ puts msg
254
+ exit(-1)
255
+ end
256
+ end