ceedling 0.19.0 → 0.20.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 (426) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +10 -10
  3. data/bin/ceedling +205 -92
  4. data/ceedling-0.19.0.gem +0 -0
  5. data/config/test_environment.rb +12 -12
  6. data/docs/CeedlingPacket.md +866 -853
  7. data/docs/CeedlingPacket.odt +0 -0
  8. data/docs/CeedlingPacket.pdf +0 -0
  9. data/examples/temp_sensor/rakefile.rb +4 -4
  10. data/examples/temp_sensor/src/AdcConductor.c +42 -42
  11. data/examples/temp_sensor/src/AdcConductor.h +13 -13
  12. data/examples/temp_sensor/src/AdcHardware.c +27 -27
  13. data/examples/temp_sensor/src/AdcHardware.h +11 -11
  14. data/examples/temp_sensor/src/AdcHardwareConfigurator.c +18 -18
  15. data/examples/temp_sensor/src/AdcHardwareConfigurator.h +10 -10
  16. data/examples/temp_sensor/src/AdcModel.c +33 -33
  17. data/examples/temp_sensor/src/AdcModel.h +13 -13
  18. data/examples/temp_sensor/src/AdcTemperatureSensor.c +51 -51
  19. data/examples/temp_sensor/src/AdcTemperatureSensor.h +10 -10
  20. data/examples/temp_sensor/src/Executor.c +25 -25
  21. data/examples/temp_sensor/src/Executor.h +9 -9
  22. data/examples/temp_sensor/src/IntrinsicsWrapper.c +18 -18
  23. data/examples/temp_sensor/src/IntrinsicsWrapper.h +7 -7
  24. data/examples/temp_sensor/src/Main.c +46 -46
  25. data/examples/temp_sensor/src/Main.h +7 -7
  26. data/examples/temp_sensor/src/Model.c +10 -10
  27. data/examples/temp_sensor/src/Model.h +8 -8
  28. data/examples/temp_sensor/src/ModelConfig.h +7 -7
  29. data/examples/temp_sensor/src/TaskScheduler.c +72 -72
  30. data/examples/temp_sensor/src/TaskScheduler.h +11 -11
  31. data/examples/temp_sensor/src/TemperatureCalculator.c +27 -27
  32. data/examples/temp_sensor/src/TemperatureCalculator.h +8 -8
  33. data/examples/temp_sensor/src/TemperatureFilter.c +38 -38
  34. data/examples/temp_sensor/src/TemperatureFilter.h +10 -10
  35. data/examples/temp_sensor/src/TimerConductor.c +15 -15
  36. data/examples/temp_sensor/src/TimerConductor.h +9 -9
  37. data/examples/temp_sensor/src/TimerConfigurator.c +51 -51
  38. data/examples/temp_sensor/src/TimerConfigurator.h +15 -15
  39. data/examples/temp_sensor/src/TimerHardware.c +15 -15
  40. data/examples/temp_sensor/src/TimerHardware.h +8 -8
  41. data/examples/temp_sensor/src/TimerInterruptConfigurator.c +55 -55
  42. data/examples/temp_sensor/src/TimerInterruptConfigurator.h +13 -13
  43. data/examples/temp_sensor/src/TimerInterruptHandler.c +25 -25
  44. data/examples/temp_sensor/src/TimerInterruptHandler.h +10 -10
  45. data/examples/temp_sensor/src/TimerModel.c +9 -9
  46. data/examples/temp_sensor/src/TimerModel.h +8 -8
  47. data/examples/temp_sensor/src/Types.h +90 -90
  48. data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.c +18 -18
  49. data/examples/temp_sensor/src/UsartBaudRateRegisterCalculator.h +8 -8
  50. data/examples/temp_sensor/src/UsartConductor.c +21 -21
  51. data/examples/temp_sensor/src/UsartConductor.h +7 -7
  52. data/examples/temp_sensor/src/UsartConfigurator.c +39 -39
  53. data/examples/temp_sensor/src/UsartConfigurator.h +13 -13
  54. data/examples/temp_sensor/src/UsartHardware.c +22 -22
  55. data/examples/temp_sensor/src/UsartHardware.h +9 -9
  56. data/examples/temp_sensor/src/UsartModel.c +34 -34
  57. data/examples/temp_sensor/src/UsartModel.h +10 -10
  58. data/examples/temp_sensor/src/UsartPutChar.c +16 -16
  59. data/examples/temp_sensor/src/UsartPutChar.h +8 -8
  60. data/examples/temp_sensor/src/UsartTransmitBufferStatus.c +7 -7
  61. data/examples/temp_sensor/src/UsartTransmitBufferStatus.h +8 -8
  62. data/examples/temp_sensor/test/TestAdcConductor.c +121 -121
  63. data/examples/temp_sensor/test/TestAdcHardware.c +44 -44
  64. data/examples/temp_sensor/test/TestAdcModel.c +33 -33
  65. data/examples/temp_sensor/test/TestExecutor.c +36 -36
  66. data/examples/temp_sensor/test/TestMain.c +24 -24
  67. data/examples/temp_sensor/test/TestModel.c +20 -20
  68. data/examples/temp_sensor/test/TestTaskScheduler.c +104 -104
  69. data/examples/temp_sensor/test/TestTemperatureCalculator.c +33 -33
  70. data/examples/temp_sensor/test/TestTemperatureFilter.c +79 -79
  71. data/examples/temp_sensor/test/TestTimerConductor.c +32 -32
  72. data/examples/temp_sensor/test/TestTimerHardware.c +26 -26
  73. data/examples/temp_sensor/test/TestTimerModel.c +18 -18
  74. data/examples/temp_sensor/test/TestUsartBaudRateRegisterCalculator.c +21 -21
  75. data/examples/temp_sensor/test/TestUsartConductor.c +40 -40
  76. data/examples/temp_sensor/test/TestUsartHardware.c +36 -36
  77. data/examples/temp_sensor/test/TestUsartModel.c +36 -36
  78. data/examples/temp_sensor/test/support/UnityHelper.c +12 -12
  79. data/examples/temp_sensor/test/support/UnityHelper.h +12 -12
  80. data/lib/ceedling/configurator_builder.rb +1 -1
  81. data/lib/ceedling/tasks_base.rake +10 -2
  82. data/lib/ceedling/tool_executor.rb +3 -0
  83. data/lib/ceedling/version.rb +3 -3
  84. data/license.txt +1 -1
  85. data/plugins/bullseye/bullseye.rake +162 -162
  86. data/plugins/gcov/gcov.rake +152 -152
  87. data/plugins/module_generator/lib/module_generator.rb +145 -145
  88. data/plugins/module_generator/module_generator.rake +14 -14
  89. data/plugins/stdout_gtestlike_tests_report/assets/template.erb +84 -0
  90. data/plugins/stdout_gtestlike_tests_report/assets/template.erb copy +59 -0
  91. data/plugins/stdout_gtestlike_tests_report/config/stdout_gtestlike_tests_report.yml +4 -0
  92. data/plugins/stdout_gtestlike_tests_report/lib/stdout_gtestlike_tests_report.rb +43 -0
  93. data/spec/system/deployment_spec.rb +0 -1
  94. data/test_graveyard/integration/paths_test.rb +80 -80
  95. data/test_graveyard/integration/rake_rules_aux_dependencies_test.rb +75 -75
  96. data/test_graveyard/integration/rake_rules_cmock_test.rb +74 -74
  97. data/test_graveyard/integration/rake_rules_preprocess_test.rb +178 -178
  98. data/test_graveyard/integration/rake_rules_test.rb +268 -268
  99. data/test_graveyard/integration/rake_tasks_test.rb +103 -103
  100. data/test_graveyard/integration_test_helper.rb +34 -34
  101. data/test_graveyard/rakefile_rules.rb +10 -10
  102. data/test_graveyard/rakefile_rules_aux_dependencies.rb +10 -10
  103. data/test_graveyard/rakefile_rules_cmock.rb +10 -10
  104. data/test_graveyard/rakefile_rules_preprocess.rb +10 -10
  105. data/test_graveyard/rakefile_tasks.rb +10 -10
  106. data/test_graveyard/system/file_system_test.rb +78 -78
  107. data/test_graveyard/system/project_mocks_test.rb +38 -38
  108. data/test_graveyard/system/project_simple_test.rb +39 -39
  109. data/test_graveyard/system/rule_mocks_test.rb +44 -44
  110. data/test_graveyard/system/rule_runners_test.rb +44 -44
  111. data/test_graveyard/system_test_helper.rb +73 -73
  112. data/test_graveyard/test_helper.rb +93 -93
  113. data/test_graveyard/unit/busted/configurator_builder_test.rb +569 -569
  114. data/test_graveyard/unit/busted/configurator_helper_test.rb +234 -234
  115. data/test_graveyard/unit/busted/configurator_test.rb +232 -232
  116. data/test_graveyard/unit/busted/configurator_validator_test.rb +169 -169
  117. data/test_graveyard/unit/busted/deep_merge_fix_test.rb +55 -55
  118. data/test_graveyard/unit/busted/dependinator_test.rb +129 -129
  119. data/test_graveyard/unit/busted/file_finder_helper_test.rb +45 -45
  120. data/test_graveyard/unit/busted/file_finder_test.rb +114 -114
  121. data/test_graveyard/unit/busted/file_path_utils_test.rb +97 -97
  122. data/test_graveyard/unit/busted/file_system_utils_test.rb +21 -21
  123. data/test_graveyard/unit/busted/generator_test.rb +187 -187
  124. data/test_graveyard/unit/busted/generator_test_results_test.rb +129 -129
  125. data/test_graveyard/unit/busted/generator_test_runner_test.rb +475 -475
  126. data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +39 -39
  127. data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +156 -156
  128. data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +93 -93
  129. data/test_graveyard/unit/busted/preprocessinator_test.rb +57 -57
  130. data/test_graveyard/unit/busted/project_file_loader_test.rb +142 -142
  131. data/test_graveyard/unit/busted/setupinator_test.rb +45 -45
  132. data/test_graveyard/unit/busted/streaminator_test.rb +49 -49
  133. data/test_graveyard/unit/busted/task_invoker_test.rb +69 -69
  134. data/test_graveyard/unit/busted/test_includes_extractor_test.rb +111 -111
  135. data/test_graveyard/unit/busted/test_invoker_helper_test.rb +62 -62
  136. data/test_graveyard/unit/busted/test_invoker_test.rb +47 -47
  137. data/test_graveyard/unit/busted/tool_executor_helper_test.rb +100 -100
  138. data/test_graveyard/unit/busted/tool_executor_test.rb +351 -351
  139. data/test_graveyard/unit/busted/verbosinator_test.rb +65 -65
  140. data/test_graveyard/unit/preprocessinator_extractor_test.rb +731 -731
  141. data/test_graveyard/unit_test_helper.rb +16 -16
  142. data/vendor/c_exception/LICENSE.txt +30 -30
  143. data/vendor/c_exception/README.md +11 -1
  144. data/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  145. data/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  146. data/vendor/c_exception/docs/readme.txt +261 -242
  147. data/vendor/c_exception/lib/CException.c +46 -46
  148. data/vendor/c_exception/lib/CException.h +110 -86
  149. data/vendor/c_exception/makefile +23 -23
  150. data/vendor/c_exception/test/CExceptionConfig.h +46 -46
  151. data/vendor/c_exception/test/TestException.c +391 -342
  152. data/vendor/c_exception/test/TestException_Runner.c +5 -12
  153. data/vendor/c_exception/vendor/unity/README.md +211 -0
  154. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +1 -1
  155. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +38 -38
  156. data/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -36
  157. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -202
  158. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +391 -320
  159. data/vendor/c_exception/vendor/unity/auto/parseOutput.rb +2 -0
  160. data/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +260 -0
  161. data/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +8 -0
  162. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +135 -0
  163. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +148 -139
  164. data/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  165. data/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  166. data/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +224 -216
  167. data/vendor/c_exception/vendor/unity/docs/license.txt +21 -31
  168. data/vendor/c_exception/vendor/unity/examples/example_1/makefile +40 -15
  169. data/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +2 -0
  170. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +32 -25
  171. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +29 -22
  172. data/vendor/c_exception/vendor/unity/examples/example_2/makefile +40 -14
  173. data/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +2 -0
  174. data/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +2 -2
  175. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +0 -1
  176. data/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +2 -0
  177. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +48 -37
  178. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +179 -179
  179. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +135 -94
  180. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +13 -17
  181. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +12 -18
  182. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +30 -0
  183. data/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +60 -0
  184. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +4 -3
  185. data/vendor/c_exception/vendor/unity/extras/fixture/test/{testunity_fixture.c → template_fixture_tests.c} +0 -0
  186. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +182 -27
  187. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +13 -0
  188. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +8 -6
  189. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +2 -2
  190. data/vendor/c_exception/vendor/unity/release/build.info +1 -1
  191. data/vendor/c_exception/vendor/unity/release/version.info +1 -1
  192. data/vendor/c_exception/vendor/unity/src/unity.c +1333 -1145
  193. data/vendor/c_exception/vendor/unity/src/unity.h +290 -307
  194. data/vendor/c_exception/vendor/unity/src/unity_internals.h +758 -620
  195. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +7 -3
  196. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +7 -3
  197. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.c +55 -0
  198. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.h +15 -0
  199. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +4 -3
  200. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +4 -3
  201. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  202. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
  203. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +6 -5
  204. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +4 -3
  205. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +4 -3
  206. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +6 -5
  207. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +4 -3
  208. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +7 -6
  209. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +9 -5
  210. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +7 -3
  211. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +7 -3
  212. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +9 -5
  213. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +7 -3
  214. data/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +10 -6
  215. data/vendor/c_exception/vendor/unity/{rakefile.rb → test/rakefile} +60 -61
  216. data/vendor/c_exception/vendor/unity/{rakefile_helper.rb → test/rakefile_helper.rb} +255 -249
  217. data/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +83 -0
  218. data/vendor/c_exception/vendor/unity/{targets → test/targets}/clang_strict.yml +83 -83
  219. data/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +49 -0
  220. data/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +50 -0
  221. data/vendor/c_exception/vendor/unity/{targets/gcc_64.yml → test/targets/gcc_auto_limits.yml} +46 -45
  222. data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_sizeof.yml +47 -0
  223. data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_stdint.yml +58 -0
  224. data/vendor/{cmock/vendor/c_exception/vendor/unity/targets/gcc_64.yml → c_exception/vendor/unity/test/targets/gcc_manual_math.yml} +46 -45
  225. data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/hitech_picc18.yml +101 -101
  226. data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/iar_arm_v4.yml +89 -89
  227. data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/iar_arm_v5.yml +79 -79
  228. data/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_arm_v5_3.yml +79 -79
  229. data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -93
  230. data/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_cortexm3_v5.yml +83 -83
  231. data/vendor/{cmock/vendor/c_exception/vendor/unity → c_exception/vendor/unity/test}/targets/iar_msp430.yml +94 -94
  232. data/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_sh2a_v6.yml +85 -85
  233. data/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -51
  234. data/vendor/c_exception/vendor/unity/test/testdata/sample.yml +8 -8
  235. data/vendor/c_exception/vendor/unity/test/testdata/testsample.c +68 -51
  236. data/vendor/{cmock/vendor/c_exception/vendor/unity/test → c_exception/vendor/unity/test/tests}/test_generate_test_runner.rb +102 -88
  237. data/vendor/{cmock/vendor/c_exception/vendor/unity/test → c_exception/vendor/unity/test/tests}/testparameterized.c +104 -101
  238. data/vendor/c_exception/vendor/unity/test/{testunity.c → tests/testunity.c} +3682 -3447
  239. data/vendor/cmock/docs/CMock_Summary.md +3 -0
  240. data/vendor/cmock/lib/cmock_config.rb +1 -0
  241. data/vendor/cmock/lib/cmock_file_writer.rb +7 -3
  242. data/vendor/cmock/lib/cmock_generator.rb +3 -2
  243. data/vendor/cmock/lib/cmock_header_parser.rb +12 -5
  244. data/vendor/cmock/release/version.info +1 -1
  245. data/vendor/cmock/test/system/test_compilation/parsing.h +3 -0
  246. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +7 -0
  247. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +57 -1
  248. data/vendor/cmock/vendor/c_exception/LICENSE.txt +30 -30
  249. data/vendor/cmock/vendor/c_exception/README.md +11 -1
  250. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  251. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  252. data/vendor/cmock/vendor/c_exception/docs/readme.txt +261 -242
  253. data/vendor/cmock/vendor/c_exception/lib/CException.c +46 -46
  254. data/vendor/cmock/vendor/c_exception/lib/CException.h +110 -86
  255. data/vendor/cmock/vendor/c_exception/makefile +23 -23
  256. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +46 -46
  257. data/vendor/cmock/vendor/c_exception/test/TestException.c +391 -342
  258. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +5 -12
  259. data/vendor/cmock/vendor/c_exception/vendor/unity/README.md +211 -0
  260. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +1 -1
  261. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +38 -38
  262. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_config.yml +36 -36
  263. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -202
  264. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +391 -320
  265. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parseOutput.rb +2 -0
  266. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +260 -0
  267. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +8 -0
  268. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +135 -0
  269. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +148 -139
  270. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.odt +0 -0
  271. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf +0 -0
  272. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +224 -216
  273. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/license.txt +21 -31
  274. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/makefile +40 -15
  275. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/src/ProductionCode2.c +2 -0
  276. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +32 -25
  277. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +29 -22
  278. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/makefile +40 -14
  279. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/src/ProductionCode2.c +2 -0
  280. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/test/test_runners/all_tests.c +2 -2
  281. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +0 -1
  282. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/src/ProductionCode2.c +2 -0
  283. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +48 -37
  284. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +179 -179
  285. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +135 -94
  286. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +13 -17
  287. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +12 -18
  288. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +30 -0
  289. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +60 -0
  290. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +4 -3
  291. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/{testunity_fixture.c → template_fixture_tests.c} +0 -0
  292. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +182 -27
  293. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +13 -0
  294. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +8 -6
  295. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +2 -2
  296. data/vendor/cmock/vendor/c_exception/vendor/unity/release/build.info +1 -1
  297. data/vendor/cmock/vendor/c_exception/vendor/unity/release/version.info +1 -1
  298. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +1333 -1145
  299. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.h +290 -307
  300. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity_internals.h +758 -620
  301. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_cmd.c +7 -3
  302. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_def.c +7 -3
  303. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.c +55 -0
  304. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_head1.h +15 -0
  305. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_cmd.c +4 -3
  306. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_def.c +4 -3
  307. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  308. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
  309. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new1.c +6 -5
  310. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_new2.c +4 -3
  311. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_param.c +4 -3
  312. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run1.c +6 -5
  313. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_run2.c +4 -3
  314. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_mock_yaml.c +7 -6
  315. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new1.c +9 -5
  316. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_new2.c +7 -3
  317. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_param.c +7 -3
  318. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run1.c +9 -5
  319. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_run2.c +7 -3
  320. data/vendor/cmock/vendor/c_exception/vendor/unity/test/expectdata/testsample_yaml.c +10 -6
  321. data/vendor/cmock/vendor/c_exception/vendor/unity/{rakefile.rb → test/rakefile} +60 -61
  322. data/vendor/cmock/vendor/c_exception/vendor/unity/{rakefile_helper.rb → test/rakefile_helper.rb} +255 -249
  323. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +83 -0
  324. data/vendor/cmock/vendor/c_exception/vendor/unity/{targets → test/targets}/clang_strict.yml +83 -83
  325. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +49 -0
  326. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +50 -0
  327. data/vendor/cmock/vendor/c_exception/vendor/unity/{targets/gcc_32.yml → test/targets/gcc_auto_limits.yml} +46 -44
  328. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_auto_sizeof.yml +47 -0
  329. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_auto_stdint.yml +58 -0
  330. data/vendor/{c_exception/vendor/unity/targets/gcc_32.yml → cmock/vendor/c_exception/vendor/unity/test/targets/gcc_manual_math.yml} +46 -44
  331. data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/hitech_picc18.yml +101 -101
  332. data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/iar_arm_v4.yml +89 -89
  333. data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/iar_arm_v5.yml +79 -79
  334. data/vendor/cmock/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_arm_v5_3.yml +79 -79
  335. data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -93
  336. data/vendor/cmock/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_cortexm3_v5.yml +83 -83
  337. data/vendor/{c_exception/vendor/unity → cmock/vendor/c_exception/vendor/unity/test}/targets/iar_msp430.yml +94 -94
  338. data/vendor/cmock/vendor/c_exception/vendor/unity/{targets → test/targets}/iar_sh2a_v6.yml +85 -85
  339. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/mocksample.c +51 -51
  340. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/sample.yml +8 -8
  341. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testsample.c +68 -51
  342. data/vendor/{c_exception/vendor/unity/test → cmock/vendor/c_exception/vendor/unity/test/tests}/test_generate_test_runner.rb +102 -88
  343. data/vendor/{c_exception/vendor/unity/test → cmock/vendor/c_exception/vendor/unity/test/tests}/testparameterized.c +104 -101
  344. data/vendor/cmock/vendor/c_exception/vendor/unity/test/{testunity.c → tests/testunity.c} +3682 -3447
  345. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +30 -13
  346. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +260 -0
  347. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +96 -93
  348. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +1 -1
  349. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +12 -19
  350. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +18 -17
  351. data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +66 -5
  352. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +2 -1
  353. data/vendor/cmock/vendor/unity/extras/fixture/test/{testunity_fixture.c → template_fixture_tests.c} +0 -0
  354. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +187 -27
  355. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +14 -0
  356. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +6 -5
  357. data/vendor/cmock/vendor/unity/release/version.info +1 -1
  358. data/vendor/cmock/vendor/unity/src/unity.c +38 -27
  359. data/vendor/cmock/vendor/unity/src/unity.h +5 -0
  360. data/vendor/cmock/vendor/unity/src/unity_internals.h +22 -18
  361. data/vendor/cmock/vendor/unity/test/Makefile +52 -0
  362. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +4 -0
  363. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +4 -0
  364. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +4 -0
  365. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +7 -4
  366. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +6 -4
  367. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +4 -0
  368. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +4 -0
  369. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +4 -0
  370. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +4 -0
  371. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +4 -0
  372. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +4 -0
  373. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +1 -1
  374. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +0 -1
  375. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +0 -1
  376. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +0 -1
  377. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +0 -1
  378. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +0 -1
  379. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_sizeof.yml +0 -1
  380. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +0 -1
  381. data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +0 -1
  382. data/vendor/cmock/vendor/unity/test/testdata/testsample.c +19 -2
  383. data/vendor/cmock/vendor/unity/test/tests/testunity.c +55 -4
  384. data/vendor/unity/auto/generate_test_runner.rb +4 -2
  385. data/vendor/unity/auto/stylize_as_junit.rb +260 -0
  386. data/vendor/unity/extras/fixture/src/unity_fixture.c +24 -41
  387. data/vendor/unity/extras/fixture/src/unity_fixture.h +1 -1
  388. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +5 -7
  389. data/vendor/unity/extras/fixture/test/Makefile +53 -8
  390. data/vendor/unity/extras/fixture/test/{testunity_fixture.c → template_fixture_tests.c} +0 -0
  391. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +129 -32
  392. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +6 -0
  393. data/vendor/unity/extras/fixture/test/unity_output_Spy.c +4 -4
  394. data/vendor/unity/release/version.info +1 -1
  395. data/vendor/unity/src/unity.c +32 -21
  396. data/vendor/unity/src/unity.h +5 -0
  397. data/vendor/unity/src/unity_internals.h +7 -3
  398. data/vendor/unity/test/Makefile +52 -0
  399. data/vendor/unity/test/expectdata/testsample_cmd.c +4 -0
  400. data/vendor/unity/test/expectdata/testsample_def.c +4 -0
  401. data/vendor/unity/test/expectdata/testsample_head1.c +4 -0
  402. data/vendor/unity/test/expectdata/testsample_head1.h +7 -4
  403. data/vendor/unity/test/expectdata/testsample_mock_head1.h +6 -4
  404. data/vendor/unity/test/expectdata/testsample_new1.c +4 -0
  405. data/vendor/unity/test/expectdata/testsample_new2.c +4 -0
  406. data/vendor/unity/test/expectdata/testsample_param.c +4 -0
  407. data/vendor/unity/test/expectdata/testsample_run1.c +4 -0
  408. data/vendor/unity/test/expectdata/testsample_run2.c +4 -0
  409. data/vendor/unity/test/expectdata/testsample_yaml.c +4 -0
  410. data/vendor/unity/test/testdata/testsample.c +19 -2
  411. data/vendor/unity/test/tests/testunity.c +35 -4
  412. metadata +75 -52
  413. data/ceedling-0.18.0.gem +0 -0
  414. data/docs/CeedlingLogo.png +0 -0
  415. data/vendor/c_exception/vendor/unity/Gemfile +0 -4
  416. data/vendor/c_exception/vendor/unity/Gemfile.lock +0 -12
  417. data/vendor/c_exception/vendor/unity/examples/example_3/makefile +0 -41
  418. data/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode2_Runner.c +0 -46
  419. data/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode_Runner.c +0 -50
  420. data/vendor/c_exception/vendor/unity/makefile +0 -37
  421. data/vendor/cmock/vendor/c_exception/vendor/unity/Gemfile +0 -4
  422. data/vendor/cmock/vendor/c_exception/vendor/unity/Gemfile.lock +0 -12
  423. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/makefile +0 -41
  424. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode2_Runner.c +0 -46
  425. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/test/no_ruby/TestProductionCode_Runner.c +0 -50
  426. data/vendor/cmock/vendor/c_exception/vendor/unity/makefile +0 -37
@@ -28,6 +28,7 @@ class UnityTestRunnerGenerator
28
28
  :test_prefix => "test|spec|should",
29
29
  :setup_name => "setUp",
30
30
  :teardown_name => "tearDown",
31
+ :main_name => "main",
31
32
  }
32
33
  end
33
34
 
@@ -82,7 +83,7 @@ class UnityTestRunnerGenerator
82
83
 
83
84
  if (@options[:header_file] && !@options[:header_file].empty?)
84
85
  File.open(@options[:header_file], 'w') do |output|
85
- create_h_file(output, @options[:header_file], tests, testfile_includes)
86
+ create_h_file(output, @options[:header_file], tests, testfile_includes, used_mocks)
86
87
  end
87
88
  end
88
89
  end
@@ -90,7 +91,9 @@ class UnityTestRunnerGenerator
90
91
  def find_tests(source)
91
92
  tests_and_line_numbers = []
92
93
 
93
- source_scrubbed = source.gsub(/\/\/.*$/, '') # remove line comments
94
+ source_scrubbed = source.clone
95
+ source_scrubbed = source_scrubbed.gsub(/"[^"]*"/, '') # remove things in strings
96
+ source_scrubbed = source_scrubbed.gsub(/\/\/.*$/, '') # remove line comments
94
97
  source_scrubbed = source_scrubbed.gsub(/\/\*.*?\*\//m, '') # remove block comments
95
98
  lines = source_scrubbed.split(/(^\s*\#.*$) # Treat preprocessor directives as a logical line
96
99
  | (;|\{|\}) /x) # Match ;, {, and } as end of lines
@@ -145,8 +148,9 @@ class UnityTestRunnerGenerator
145
148
 
146
149
  def find_mocks(includes)
147
150
  mock_headers = []
148
- includes.each do |include_file|
149
- mock_headers << File.basename(include_file) if (include_file =~ /^mock/i)
151
+ includes.each do |include_path|
152
+ include_file = File.basename(include_path)
153
+ mock_headers << include_path if (include_file =~ /^mock/i)
150
154
  end
151
155
  return mock_headers
152
156
  end
@@ -191,8 +195,8 @@ class UnityTestRunnerGenerator
191
195
  output.puts('')
192
196
  end
193
197
 
194
- def create_mock_management(output, mocks)
195
- unless (mocks.empty?)
198
+ def create_mock_management(output, mock_headers)
199
+ unless (mock_headers.empty?)
196
200
  output.puts("\n//=======Mock Management=====")
197
201
  output.puts("static void CMock_Init(void)")
198
202
  output.puts("{")
@@ -201,6 +205,7 @@ class UnityTestRunnerGenerator
201
205
  output.puts(" GlobalVerifyOrder = 0;")
202
206
  output.puts(" GlobalOrderError = NULL;")
203
207
  end
208
+ mocks = mock_headers.map {|mock| File.basename(mock)}
204
209
  mocks.each do |mock|
205
210
  mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
206
211
  output.puts(" #{mock_clean}_Init();")
@@ -288,7 +293,10 @@ class UnityTestRunnerGenerator
288
293
 
289
294
  def create_main(output, filename, tests, used_mocks)
290
295
  output.puts("\n\n//=======MAIN=====")
291
- output.puts("int main(void)")
296
+ if (@options[:main_name] != "main")
297
+ output.puts("int #{@options[:main_name]}(void);")
298
+ end
299
+ output.puts("int #{@options[:main_name]}(void)")
292
300
  output.puts("{")
293
301
  output.puts(" suite_setup();") unless @options[:suite_setup].nil?
294
302
  output.puts(" UnityBegin(\"#{filename.gsub(/\\/,'\\\\')}\");")
@@ -309,11 +317,13 @@ class UnityTestRunnerGenerator
309
317
  output.puts("}")
310
318
  end
311
319
 
312
- def create_h_file(output, filename, tests, testfile_includes)
313
- filename = filename.upcase.gsub(/(?:\/|\\|\.)*/,'_')
320
+ def create_h_file(output, filename, tests, testfile_includes, used_mocks)
321
+ filename = File.basename(filename).gsub(/[-\/\\\.\,\s]/, "_").upcase
314
322
  output.puts("/* AUTOGENERATED FILE. DO NOT EDIT. */")
315
323
  output.puts("#ifndef _#{filename}")
316
324
  output.puts("#define _#{filename}\n\n")
325
+ output.puts("#include \"#{@options[:framework].to_s}.h\"")
326
+ output.puts('#include "cmock.h"') unless (used_mocks.empty?)
317
327
  @options[:includes].flatten.uniq.compact.each do |inc|
318
328
  output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}")
319
329
  end
@@ -321,7 +331,13 @@ class UnityTestRunnerGenerator
321
331
  output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}")
322
332
  end
323
333
  output.puts "\n"
324
- tests.each {|test| output.puts("void #{test[:test]}(#{test[:params]});") }
334
+ tests.each do |test|
335
+ if ((test[:params].nil?) or (test[:params].empty?))
336
+ output.puts("void #{test[:test]}(void);")
337
+ else
338
+ output.puts("void #{test[:test]}(#{test[:params]});")
339
+ end
340
+ end
325
341
  output.puts("#endif\n\n")
326
342
  end
327
343
  end
@@ -337,10 +353,10 @@ if ($0 == __FILE__)
337
353
  options[:plugins] = [:cexception]; true
338
354
  when /\.*\.ya?ml/
339
355
  options = UnityTestRunnerGenerator.grab_config(arg); true
340
- when /\.*\.h/
341
- options[:includes] << arg; true
342
356
  when /--(\w+)=\"?(.*)\"?/
343
357
  options[$1.to_sym] = $2; true
358
+ when /\.*\.h/
359
+ options[:includes] << arg; true
344
360
  else false
345
361
  end
346
362
  end
@@ -358,6 +374,7 @@ if ($0 == __FILE__)
358
374
  " -cexception - include cexception support",
359
375
  " --setup_name=\"\" - redefine setUp func name to something else",
360
376
  " --teardown_name=\"\" - redefine tearDown func name to something else",
377
+ " --main_name=\"\" - redefine main func name to something else",
361
378
  " --test_prefix=\"\" - redefine test prefix from default test|spec|should",
362
379
  " --suite_setup=\"\" - code to execute for setup of entire suite",
363
380
  " --suite_teardown=\"\" - code to execute for teardown of entire suite",
@@ -370,5 +387,5 @@ if ($0 == __FILE__)
370
387
  #create the default test runner name if not specified
371
388
  ARGV[1] = ARGV[0].gsub(".c","_Runner.c") if (!ARGV[1])
372
389
 
373
- puts UnityTestRunnerGenerator.new(options).run(ARGV[0], ARGV[1]).inspect
390
+ UnityTestRunnerGenerator.new(options).run(ARGV[0], ARGV[1])
374
391
  end
@@ -0,0 +1,260 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # unity_to_junit.rb
4
+ #
5
+ require 'fileutils'
6
+ require 'optparse'
7
+ require 'ostruct'
8
+ require 'set'
9
+
10
+ require 'pp'
11
+
12
+ VERSION = 1.0
13
+
14
+ class ArgvParser
15
+
16
+ #
17
+ # Return a structure describing the options.
18
+ #
19
+ def self.parse(args)
20
+ # The options specified on the command line will be collected in *options*.
21
+ # We set default values here.
22
+ options = OpenStruct.new
23
+ options.results_dir = "."
24
+ options.root_path = "."
25
+ options.out_file = "results.xml"
26
+
27
+ opts = OptionParser.new do |opts|
28
+ opts.banner = "Usage: unity_to_junit.rb [options]"
29
+
30
+ opts.separator ""
31
+ opts.separator "Specific options:"
32
+
33
+ opts.on("-r", "--results <dir>", "Look for Unity Results files here.") do |results|
34
+ #puts "results #{results}"
35
+ options.results_dir = results
36
+ end
37
+
38
+ opts.on("-p", "--root_path <path>", "Prepend this path to files in results.") do |root_path|
39
+ options.root_path = root_path
40
+ end
41
+
42
+ opts.on("-o", "--output <filename>", "XML file to generate.") do |out_file|
43
+ #puts "out_file: #{out_file}"
44
+ options.out_file = out_file
45
+ end
46
+
47
+ opts.separator ""
48
+ opts.separator "Common options:"
49
+
50
+ # No argument, shows at tail. This will print an options summary.
51
+ opts.on_tail("-h", "--help", "Show this message") do
52
+ puts opts
53
+ exit
54
+ end
55
+
56
+ # Another typical switch to print the version.
57
+ opts.on_tail("--version", "Show version") do
58
+ puts "unity_to_junit.rb version #{VERSION}"
59
+ exit
60
+ end
61
+ end
62
+
63
+ opts.parse!(args)
64
+ options
65
+ end # parse()
66
+
67
+ end # class OptparseExample
68
+
69
+ class UnityToJUnit
70
+ include FileUtils::Verbose
71
+ attr_reader :report, :total_tests, :failures, :ignored
72
+
73
+ def initialize
74
+ @report = ''
75
+ @unit_name = ''
76
+ end
77
+
78
+ def run
79
+ # Clean up result file names
80
+ results = @targets.map {|target| target.gsub(/\\/,"/")}
81
+ #puts "Output File: #{@out_file}"
82
+ f = File.new(@out_file, "w")
83
+ write_xml_header(f)
84
+ write_suites_header( f )
85
+ results.each do |result_file|
86
+ lines = File.readlines(result_file).map { |line| line.chomp }
87
+ if lines.length == 0
88
+ raise "Empty test result file: #{result_file}"
89
+ else
90
+ result_output = get_details(result_file, lines)
91
+ tests,failures,ignored = parse_test_summary(lines)
92
+ result_output[:counts][:total] = tests
93
+ result_output[:counts][:failed] = failures
94
+ result_output[:counts][:ignored] = ignored
95
+ result_output[:counts][:passed] = (result_output[:counts][:total] - result_output[:counts][:failed] - result_output[:counts][:ignored])
96
+ end
97
+ #use line[0] from the test output to get the test_file path and name
98
+ test_file_str = lines[0].gsub("\\","/")
99
+ test_file_str = test_file_str.split(":")
100
+ test_file = test_file_str[0] + ':' + test_file_str[1]
101
+ result_output[:source][:path] = File.dirname(test_file)
102
+ result_output[:source][:file] = File.basename(test_file)
103
+
104
+ # save result_output
105
+ @unit_name = File.basename(test_file, ".*")
106
+
107
+ write_suite_header( result_output[:counts], f)
108
+ write_failures( result_output, f )
109
+ write_tests( result_output, f )
110
+ write_ignored( result_output, f )
111
+ write_suite_footer( f )
112
+ end
113
+ write_suites_footer( f )
114
+ f.close
115
+ end
116
+
117
+ def set_targets(target_array)
118
+ @targets = target_array
119
+ end
120
+
121
+ def set_root_path(path)
122
+ @root = path
123
+ end
124
+ def set_out_file(filename)
125
+ @out_file = filename
126
+ end
127
+ def usage(err_msg=nil)
128
+ puts "\nERROR: "
129
+ puts err_msg if err_msg
130
+ puts "Usage: unity_to_junit.rb [options]"
131
+ puts ""
132
+ puts "Specific options:"
133
+ puts " -r, --results <dir> Look for Unity Results files here."
134
+ puts " -p, --root_path <path> Prepend this path to files in results."
135
+ puts " -o, --output <filename> XML file to generate."
136
+ puts ""
137
+ puts "Common options:"
138
+ puts " -h, --help Show this message"
139
+ puts " --version Show version"
140
+
141
+ exit 1
142
+ end
143
+
144
+ protected
145
+ def get_details(result_file, lines)
146
+ results = get_results_structure
147
+ lines.each do |line|
148
+ line = line.gsub("\\","/")
149
+ src_file,src_line,test_name,status,msg = line.split(/:/)
150
+ line_out = ((@root and (@root != 0)) ? "#{@root}#{line}" : line ).gsub(/\//, "\\")
151
+ case(status)
152
+ when 'IGNORE' then results[:ignores] << {:test => test_name, :line => src_line, :message => msg}
153
+ when 'FAIL' then results[:failures] << {:test => test_name, :line => src_line, :message => msg}
154
+ when 'PASS' then results[:successes] << {:test => test_name, :line => src_line, :message => msg}
155
+ end
156
+ end
157
+ return results
158
+ end
159
+
160
+ def parse_test_summary(summary)
161
+ if summary.find { |v| v =~ /(\d+) Tests (\d+) Failures (\d+) Ignored/ }
162
+ [$1.to_i,$2.to_i,$3.to_i]
163
+ else
164
+ raise "Couldn't parse test results: #{summary}"
165
+ end
166
+ end
167
+ def here; File.expand_path(File.dirname(__FILE__)); end
168
+
169
+ private
170
+
171
+ def get_results_structure
172
+ return {
173
+ :source => {:path => '', :file => ''},
174
+ :successes => [],
175
+ :failures => [],
176
+ :ignores => [],
177
+ :counts => {:total => 0, :passed => 0, :failed => 0, :ignored => 0},
178
+ :stdout => [],
179
+ }
180
+ end
181
+
182
+ def write_xml_header( stream )
183
+ stream.puts "<?xml version='1.0' encoding='utf-8' ?>"
184
+ end
185
+
186
+ def write_suites_header( stream )
187
+ stream.puts "<testsuites>"
188
+ end
189
+
190
+ def write_suite_header( counts, stream )
191
+ stream.puts "\t<testsuite errors=\"0\" skipped=\"#{counts[:ignored]}\" failures=\"#{counts[:failed]}\" tests=\"#{counts[:total]}\" name=\"unity\">"
192
+ end
193
+
194
+ def write_failures( results, stream )
195
+ result = results[:failures]
196
+ result.each do |item|
197
+ filename = File.join(results[:source][:path], File.basename(results[:source][:file], '.*'))
198
+ stream.puts "\t\t<testcase classname=\"#{@unit_name}\" name=\"#{item[:test]}\" time=\"0\">"
199
+ stream.puts "\t\t\t<failure message=\"#{item[:message]}\" type=\"Assertion\"/>"
200
+ stream.puts "\t\t\t<system-err>&#xD;[File] #{filename}&#xD;[Line] #{item[:line]}&#xD;</system-err>"
201
+ stream.puts "\t\t</testcase>"
202
+ end
203
+ end
204
+
205
+ def write_tests( results, stream )
206
+ result = results[:successes]
207
+ result.each do |item|
208
+ filename = File.join(results[:source][:path], File.basename(results[:source][:file], '.*'))
209
+ stream.puts "\t\t<testcase classname=\"#{@unit_name}\" name=\"#{item[:test]}\" time=\"0\" />"
210
+ end
211
+ end
212
+
213
+ def write_ignored( results, stream )
214
+ result = results[:ignores]
215
+ result.each do |item|
216
+ filename = File.join(results[:source][:path], File.basename(results[:source][:file], '.*'))
217
+ puts "Writing ignored tests for test harness: #{filename}"
218
+ stream.puts "\t\t<testcase classname=\"#{@unit_name}\" name=\"#{item[:test]}\" time=\"0\">"
219
+ stream.puts "\t\t\t<skipped message=\"#{item[:message]}\" type=\"Assertion\"/>"
220
+ stream.puts "\t\t\t<system-err>&#xD;[File] #{filename}&#xD;[Line] #{item[:line]}&#xD;</system-err>"
221
+ stream.puts "\t\t</testcase>"
222
+ end
223
+ end
224
+
225
+ def write_suite_footer( stream )
226
+ stream.puts "\t</testsuite>"
227
+ end
228
+
229
+ def write_suites_footer( stream )
230
+ stream.puts "</testsuites>"
231
+ end
232
+ end #UnityToJUnit
233
+
234
+ if __FILE__ == $0
235
+ #parse out the command options
236
+ options = ArgvParser.parse(ARGV)
237
+
238
+ #create an instance to work with
239
+ utj = UnityToJUnit.new
240
+ begin
241
+ #look in the specified or current directory for result files
242
+ targets = "#{options.results_dir.gsub(/\\/, '/')}**/*.test*"
243
+
244
+ results = Dir[targets]
245
+ raise "No *.testpass, *.testfail, or *.testresults files found in '#{targets}'" if results.empty?
246
+ utj.set_targets(results)
247
+
248
+ #set the root path
249
+ utj.set_root_path(options.root_path)
250
+
251
+ #set the output XML file name
252
+ #puts "Output File from options: #{options.out_file}"
253
+ utj.set_out_file(options.out_file)
254
+
255
+ #run the summarizer
256
+ puts utj.run
257
+ rescue Exception => e
258
+ utj.usage e.message
259
+ end
260
+ end
@@ -6,28 +6,26 @@
6
6
  ========================================== */
7
7
 
8
8
  #include <string.h>
9
- #include <stdio.h>
10
9
  #include "unity_fixture.h"
11
10
  #include "unity_internals.h"
12
11
 
13
- UNITY_FIXTURE_T UnityFixture;
12
+ struct _UnityFixture UnityFixture;
14
13
 
15
14
  //If you decide to use the function pointer approach.
16
- int (*outputChar)(int) = putchar;
15
+ //Build with -D UNITY_OUTPUT_CHAR=outputChar and include <stdio.h>
16
+ //int (*outputChar)(int) = putchar;
17
17
 
18
- int verbose = 0;
19
-
20
- void setUp(void);
21
- void tearDown(void);
18
+ #if !defined(UNITY_WEAK_ATTRIBUTE) && !defined(UNITY_WEAK_PRAGMA)
22
19
  void setUp(void) { /*does nothing*/ }
23
20
  void tearDown(void) { /*does nothing*/ }
21
+ #endif
24
22
 
25
23
  static void announceTestRun(unsigned int runNumber)
26
24
  {
27
25
  UnityPrint("Unity test run ");
28
- UnityPrintNumber(runNumber+1);
26
+ UnityPrintNumberUnsigned(runNumber+1);
29
27
  UnityPrint(" of ");
30
- UnityPrintNumber(UnityFixture.RepeatCount);
28
+ UnityPrintNumberUnsigned(UnityFixture.RepeatCount);
31
29
  UNITY_PRINT_EOL();
32
30
  }
33
31
 
@@ -47,10 +45,10 @@ int UnityMain(int argc, const char* argv[], void (*runAllTests)(void))
47
45
  UnityEnd();
48
46
  }
49
47
 
50
- return UnityFailureCount();
48
+ return (int)Unity.TestFailures;
51
49
  }
52
50
 
53
- static int selected(const char * filter, const char * name)
51
+ static int selected(const char* filter, const char* name)
54
52
  {
55
53
  if (filter == 0)
56
54
  return 1;
@@ -67,22 +65,16 @@ static int groupSelected(const char* group)
67
65
  return selected(UnityFixture.GroupFilter, group);
68
66
  }
69
67
 
70
- static void runTestCase(void)
71
- {
72
-
73
- }
74
-
75
68
  void UnityTestRunner(unityfunction* setup,
76
- unityfunction* testBody,
77
- unityfunction* teardown,
78
- const char * printableName,
79
- const char * group,
80
- const char * name,
81
- const char * file, int line)
69
+ unityfunction* testBody,
70
+ unityfunction* teardown,
71
+ const char* printableName,
72
+ const char* group,
73
+ const char* name,
74
+ const char* file, unsigned int line)
82
75
  {
83
76
  if (testSelected(name) && groupSelected(group))
84
77
  {
85
- Unity.CurrentTestFailed = 0;
86
78
  Unity.TestFile = file;
87
79
  Unity.CurrentTestName = printableName;
88
80
  Unity.CurrentTestLineNumber = line;
@@ -95,7 +87,6 @@ void UnityTestRunner(unityfunction* setup,
95
87
  UnityMalloc_StartTest();
96
88
  UnityPointer_Init();
97
89
 
98
- runTestCase();
99
90
  if (TEST_PROTECT())
100
91
  {
101
92
  setup();
@@ -115,17 +106,19 @@ void UnityTestRunner(unityfunction* setup,
115
106
  }
116
107
  }
117
108
 
118
- void UnityIgnoreTest(const char * printableName, const char * group, const char * name)
109
+ void UnityIgnoreTest(const char* printableName, const char* group, const char* name)
119
110
  {
120
111
  if (testSelected(name) && groupSelected(group))
121
112
  {
122
113
  Unity.NumberOfTests++;
123
- Unity.CurrentTestIgnored = 1;
114
+ Unity.TestIgnores++;
124
115
  if (!UnityFixture.Verbose)
125
116
  UNITY_OUTPUT_CHAR('!');
126
117
  else
118
+ {
127
119
  UnityPrint(printableName);
128
- UnityConcludeFixtureTest();
120
+ UNITY_PRINT_EOL();
121
+ }
129
122
  }
130
123
  }
131
124
 
@@ -148,7 +141,7 @@ void UnityMalloc_EndTest(void)
148
141
  malloc_fail_countdown = MALLOC_DONT_FAIL;
149
142
  if (malloc_count != 0)
150
143
  {
151
- TEST_FAIL_MESSAGE("This test leaks!");
144
+ UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "This test leaks!");
152
145
  }
153
146
  }
154
147
 
@@ -157,75 +150,92 @@ void UnityMalloc_MakeMallocFailAfterCount(int countdown)
157
150
  malloc_fail_countdown = countdown;
158
151
  }
159
152
 
160
- #ifdef malloc
153
+ // These definitions are always included from unity_fixture_malloc_overrides.h
154
+ // We undef to use them or avoid conflict with <stdlib.h> per the C standard
161
155
  #undef malloc
162
- #endif
163
-
164
- #ifdef free
165
156
  #undef free
166
- #endif
167
-
168
- #ifdef calloc
169
157
  #undef calloc
170
- #endif
171
-
172
- #ifdef realloc
173
158
  #undef realloc
174
- #endif
175
159
 
160
+ #ifdef UNITY_EXCLUDE_STDLIB_MALLOC
161
+ static unsigned char unity_heap[UNITY_INTERNAL_HEAP_SIZE_BYTES];
162
+ static size_t heap_index;
163
+ #else
176
164
  #include <stdlib.h>
177
- #include <string.h>
165
+ #endif
178
166
 
179
167
  typedef struct GuardBytes
180
168
  {
181
169
  size_t size;
182
- char guard_space[4];
170
+ size_t guard_space;
183
171
  } Guard;
184
172
 
185
173
 
186
174
  static const char end[] = "END";
187
175
 
188
- void * unity_malloc(size_t size)
176
+ void* unity_malloc(size_t size)
189
177
  {
190
178
  char* mem;
191
179
  Guard* guard;
180
+ size_t total_size = size + sizeof(Guard) + sizeof(end);
192
181
 
193
182
  if (malloc_fail_countdown != MALLOC_DONT_FAIL)
194
183
  {
195
184
  if (malloc_fail_countdown == 0)
196
- return 0;
185
+ return NULL;
197
186
  malloc_fail_countdown--;
198
187
  }
199
188
 
189
+ if (size == 0) return NULL;
190
+ #ifdef UNITY_EXCLUDE_STDLIB_MALLOC
191
+ if (heap_index + total_size > UNITY_INTERNAL_HEAP_SIZE_BYTES)
192
+ {
193
+ guard = NULL;
194
+ }
195
+ else
196
+ {
197
+ guard = (Guard*) &unity_heap[heap_index];
198
+ heap_index += total_size;
199
+ }
200
+ #else
201
+ guard = (Guard*)UNITY_FIXTURE_MALLOC(total_size);
202
+ #endif
203
+ if (guard == NULL) return NULL;
200
204
  malloc_count++;
201
-
202
- guard = (Guard*)UNITY_FIXTURE_MALLOC(size + sizeof(Guard) + sizeof(end));
203
205
  guard->size = size;
206
+ guard->guard_space = 0;
204
207
  mem = (char*)&(guard[1]);
205
208
  memcpy(&mem[size], end, sizeof(end));
206
209
 
207
210
  return (void*)mem;
208
211
  }
209
212
 
210
- static int isOverrun(void * mem)
213
+ static int isOverrun(void* mem)
211
214
  {
212
215
  Guard* guard = (Guard*)mem;
213
216
  char* memAsChar = (char*)mem;
214
217
  guard--;
215
218
 
216
- return strcmp(&memAsChar[guard->size], end) != 0;
219
+ return guard->guard_space != 0 || strcmp(&memAsChar[guard->size], end) != 0;
217
220
  }
218
221
 
219
- static void release_memory(void * mem)
222
+ static void release_memory(void* mem)
220
223
  {
221
224
  Guard* guard = (Guard*)mem;
222
225
  guard--;
223
226
 
224
227
  malloc_count--;
228
+ #ifdef UNITY_EXCLUDE_STDLIB_MALLOC
229
+ if (mem == unity_heap + heap_index - guard->size - sizeof(end))
230
+ {
231
+ heap_index -= (guard->size + sizeof(Guard) + sizeof(end));
232
+ }
233
+ #else
225
234
  UNITY_FIXTURE_FREE(guard);
235
+ #endif
226
236
  }
227
237
 
228
- void unity_free(void * mem)
238
+ void unity_free(void* mem)
229
239
  {
230
240
  int overrun;
231
241
 
@@ -234,64 +244,70 @@ void unity_free(void * mem)
234
244
  return;
235
245
  }
236
246
 
237
- overrun = isOverrun(mem);//strcmp(&memAsChar[guard->size], end) != 0;
247
+ overrun = isOverrun(mem);
238
248
  release_memory(mem);
239
249
  if (overrun)
240
250
  {
241
- TEST_FAIL_MESSAGE("Buffer overrun detected during free()");
251
+ UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "Buffer overrun detected during free()");
242
252
  }
243
253
  }
244
254
 
245
255
  void* unity_calloc(size_t num, size_t size)
246
256
  {
247
257
  void* mem = unity_malloc(num * size);
248
- memset(mem, 0, num*size);
258
+ if (mem == NULL) return NULL;
259
+ memset(mem, 0, num * size);
249
260
  return mem;
250
261
  }
251
262
 
252
- void* unity_realloc(void * oldMem, size_t size)
263
+ void* unity_realloc(void* oldMem, size_t size)
253
264
  {
254
265
  Guard* guard = (Guard*)oldMem;
255
- // char* memAsChar = (char*)oldMem;
256
266
  void* newMem;
257
267
 
258
- if (oldMem == 0)
259
- return unity_malloc(size);
268
+ if (oldMem == NULL) return unity_malloc(size);
260
269
 
261
270
  guard--;
262
271
  if (isOverrun(oldMem))
263
272
  {
264
273
  release_memory(oldMem);
265
- TEST_FAIL_MESSAGE("Buffer overrun detected during realloc()");
274
+ UNITY_TEST_FAIL(Unity.CurrentTestLineNumber, "Buffer overrun detected during realloc()");
266
275
  }
267
276
 
268
277
  if (size == 0)
269
278
  {
270
279
  release_memory(oldMem);
271
- return 0;
280
+ return NULL;
272
281
  }
273
282
 
274
- if (guard->size >= size)
275
- return oldMem;
283
+ if (guard->size >= size) return oldMem;
276
284
 
285
+ #ifdef UNITY_EXCLUDE_STDLIB_MALLOC // Optimization if memory is expandable
286
+ if (oldMem == unity_heap + heap_index - guard->size - sizeof(end) &&
287
+ heap_index + size - guard->size <= UNITY_INTERNAL_HEAP_SIZE_BYTES)
288
+ {
289
+ release_memory(oldMem); // Not thread-safe, like unity_heap generally
290
+ return unity_malloc(size); // No memcpy since data is in place
291
+ }
292
+ #endif
277
293
  newMem = unity_malloc(size);
294
+ if (newMem == NULL) return NULL; // Do not release old memory
278
295
  memcpy(newMem, oldMem, guard->size);
279
- unity_free(oldMem);
296
+ release_memory(oldMem);
280
297
  return newMem;
281
298
  }
282
299
 
283
300
 
284
301
  //--------------------------------------------------------
285
302
  //Automatic pointer restoration functions
286
- typedef struct _PointerPair
303
+ struct PointerPair
287
304
  {
288
- struct _PointerPair * next;
289
- void ** pointer;
290
- void * old_value;
291
- } PointerPair;
305
+ void** pointer;
306
+ void* old_value;
307
+ };
292
308
 
293
- enum {MAX_POINTERS=50};
294
- static PointerPair pointer_store[MAX_POINTERS+1];
309
+ enum { MAX_POINTERS = 50 };
310
+ static struct PointerPair pointer_store[MAX_POINTERS];
295
311
  static int pointer_index = 0;
296
312
 
297
313
  void UnityPointer_Init(void)
@@ -299,11 +315,11 @@ void UnityPointer_Init(void)
299
315
  pointer_index = 0;
300
316
  }
301
317
 
302
- void UnityPointer_Set(void ** pointer, void * newValue)
318
+ void UnityPointer_Set(void** pointer, void* newValue, UNITY_LINE_TYPE line)
303
319
  {
304
320
  if (pointer_index >= MAX_POINTERS)
305
321
  {
306
- TEST_FAIL_MESSAGE("Too many pointers set");
322
+ UNITY_TEST_FAIL(line, "Too many pointers set");
307
323
  }
308
324
  else
309
325
  {
@@ -320,26 +336,10 @@ void UnityPointer_UndoAllSets(void)
320
336
  {
321
337
  pointer_index--;
322
338
  *(pointer_store[pointer_index].pointer) =
323
- pointer_store[pointer_index].old_value;
324
-
339
+ pointer_store[pointer_index].old_value;
325
340
  }
326
341
  }
327
342
 
328
- UNITY_COUNTER_TYPE UnityFailureCount(void)
329
- {
330
- return Unity.TestFailures;
331
- }
332
-
333
- UNITY_COUNTER_TYPE UnityIgnoreCount(void)
334
- {
335
- return Unity.TestIgnores;
336
- }
337
-
338
- UNITY_COUNTER_TYPE UnityTestsCount(void)
339
- {
340
- return Unity.NumberOfTests;
341
- }
342
-
343
343
  int UnityGetCommandLineOptions(int argc, const char* argv[])
344
344
  {
345
345
  int i;
@@ -382,7 +382,13 @@ int UnityGetCommandLineOptions(int argc, const char* argv[])
382
382
  {
383
383
  if (*(argv[i]) >= '0' && *(argv[i]) <= '9')
384
384
  {
385
- UnityFixture.RepeatCount = atoi(argv[i]);
385
+ unsigned int digit = 0;
386
+ UnityFixture.RepeatCount = 0;
387
+ while (argv[i][digit] >= '0' && argv[i][digit] <= '9')
388
+ {
389
+ UnityFixture.RepeatCount *= 10;
390
+ UnityFixture.RepeatCount += (unsigned int)argv[i][digit++] - '0';
391
+ }
386
392
  i++;
387
393
  }
388
394
  }
@@ -398,11 +404,8 @@ void UnityConcludeFixtureTest(void)
398
404
  {
399
405
  if (Unity.CurrentTestIgnored)
400
406
  {
401
- if (UnityFixture.Verbose)
402
- {
403
- UNITY_PRINT_EOL();
404
- }
405
407
  Unity.TestIgnores++;
408
+ UNITY_PRINT_EOL();
406
409
  }
407
410
  else if (!Unity.CurrentTestFailed)
408
411
  {
@@ -412,7 +415,7 @@ void UnityConcludeFixtureTest(void)
412
415
  UNITY_PRINT_EOL();
413
416
  }
414
417
  }
415
- else if (Unity.CurrentTestFailed)
418
+ else // Unity.CurrentTestFailed
416
419
  {
417
420
  Unity.TestFailures++;
418
421
  UNITY_PRINT_EOL();