ceedling 0.19.0 → 0.20.2

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