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
@@ -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