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
@@ -1,62 +1,62 @@
1
- require File.dirname(__FILE__) + '/../unit_test_helper'
2
- require 'ceedling/test_invoker_helper'
3
-
4
-
5
- class TestInvokerHelperTest < Test::Unit::TestCase
6
-
7
- def setup
8
- objects = create_mocks(:configurator, :task_invoker, :dependinator, :file_path_utils, :file_finder, :file_wrapper)
9
- create_mocks(:tests_list, :sources_list, :mocks_list, :runners_list, :pass_results_list, :fail_results_list)
10
- create_mocks(:dependencies_list1, :dependencies_list2, :dependencies_list3, :dependencies_list4)
11
- @test_invoker_helper = TestInvokerHelper.new(objects)
12
- end
13
-
14
- def teardown
15
- end
16
-
17
-
18
- should "clean all result files" do
19
- @file_wrapper.expects.rm_f(@fail_results_list)
20
- @file_wrapper.expects.rm_f(@pass_results_list)
21
-
22
- @test_invoker_helper.clean_results({:force_run => true}, @fail_results_list, @pass_results_list)
23
- end
24
-
25
- should "clean only fail result files" do
26
- @file_wrapper.expects.rm_f(@fail_results_list)
27
-
28
- @test_invoker_helper.clean_results({:force_run => false}, @fail_results_list, @pass_results_list)
29
- end
30
-
31
- should "process no auxiliary dependencies" do
32
- @configurator.expects.project_use_deep_dependencies.returns(false)
33
-
34
- @test_invoker_helper.process_deep_dependencies(@tests_list)
35
- end
36
-
37
- should "process auxiliary dependencies" do
38
- @configurator.expects.project_use_deep_dependencies.returns(true)
39
-
40
- @file_finder.expects.find_sources_from_tests(@tests_list).returns(@sources_list)
41
-
42
- @file_path_utils.expects.form_dependencies_filelist(@tests_list).returns(@dependencies_list1)
43
- @task_invoker.expects.invoke_dependencies_files(@dependencies_list1)
44
- @dependinator.expects.setup_test_object_dependencies(@dependencies_list1)
45
-
46
- @file_path_utils.expects.form_dependencies_filelist(@sources_list).returns(@dependencies_list2)
47
- @task_invoker.expects.invoke_dependencies_files(@dependencies_list2)
48
- @dependinator.expects.setup_test_object_dependencies(@dependencies_list2)
49
-
50
- @file_path_utils.expects.form_dependencies_filelist(@mocks_list).returns(@dependencies_list3)
51
- @task_invoker.expects.invoke_dependencies_files(@dependencies_list3)
52
- @dependinator.expects.setup_test_object_dependencies(@dependencies_list3)
53
-
54
- @file_path_utils.expects.form_dependencies_filelist(@runners_list).returns(@dependencies_list4)
55
- @task_invoker.expects.invoke_dependencies_files(@dependencies_list4)
56
- @dependinator.expects.setup_test_object_dependencies(@dependencies_list4)
57
-
58
- @test_invoker_helper.process_deep_dependencies(@tests_list, @mocks_list, @runners_list)
59
- end
60
-
61
-
62
- end
1
+ require File.dirname(__FILE__) + '/../unit_test_helper'
2
+ require 'ceedling/test_invoker_helper'
3
+
4
+
5
+ class TestInvokerHelperTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ objects = create_mocks(:configurator, :task_invoker, :dependinator, :file_path_utils, :file_finder, :file_wrapper)
9
+ create_mocks(:tests_list, :sources_list, :mocks_list, :runners_list, :pass_results_list, :fail_results_list)
10
+ create_mocks(:dependencies_list1, :dependencies_list2, :dependencies_list3, :dependencies_list4)
11
+ @test_invoker_helper = TestInvokerHelper.new(objects)
12
+ end
13
+
14
+ def teardown
15
+ end
16
+
17
+
18
+ should "clean all result files" do
19
+ @file_wrapper.expects.rm_f(@fail_results_list)
20
+ @file_wrapper.expects.rm_f(@pass_results_list)
21
+
22
+ @test_invoker_helper.clean_results({:force_run => true}, @fail_results_list, @pass_results_list)
23
+ end
24
+
25
+ should "clean only fail result files" do
26
+ @file_wrapper.expects.rm_f(@fail_results_list)
27
+
28
+ @test_invoker_helper.clean_results({:force_run => false}, @fail_results_list, @pass_results_list)
29
+ end
30
+
31
+ should "process no auxiliary dependencies" do
32
+ @configurator.expects.project_use_deep_dependencies.returns(false)
33
+
34
+ @test_invoker_helper.process_deep_dependencies(@tests_list)
35
+ end
36
+
37
+ should "process auxiliary dependencies" do
38
+ @configurator.expects.project_use_deep_dependencies.returns(true)
39
+
40
+ @file_finder.expects.find_sources_from_tests(@tests_list).returns(@sources_list)
41
+
42
+ @file_path_utils.expects.form_dependencies_filelist(@tests_list).returns(@dependencies_list1)
43
+ @task_invoker.expects.invoke_dependencies_files(@dependencies_list1)
44
+ @dependinator.expects.setup_test_object_dependencies(@dependencies_list1)
45
+
46
+ @file_path_utils.expects.form_dependencies_filelist(@sources_list).returns(@dependencies_list2)
47
+ @task_invoker.expects.invoke_dependencies_files(@dependencies_list2)
48
+ @dependinator.expects.setup_test_object_dependencies(@dependencies_list2)
49
+
50
+ @file_path_utils.expects.form_dependencies_filelist(@mocks_list).returns(@dependencies_list3)
51
+ @task_invoker.expects.invoke_dependencies_files(@dependencies_list3)
52
+ @dependinator.expects.setup_test_object_dependencies(@dependencies_list3)
53
+
54
+ @file_path_utils.expects.form_dependencies_filelist(@runners_list).returns(@dependencies_list4)
55
+ @task_invoker.expects.invoke_dependencies_files(@dependencies_list4)
56
+ @dependinator.expects.setup_test_object_dependencies(@dependencies_list4)
57
+
58
+ @test_invoker_helper.process_deep_dependencies(@tests_list, @mocks_list, @runners_list)
59
+ end
60
+
61
+
62
+ end
@@ -1,47 +1,47 @@
1
- require File.dirname(__FILE__) + '/../unit_test_helper'
2
- require 'ceedling/test_invoker'
3
-
4
-
5
- class TestInvokerTest < Test::Unit::TestCase
6
-
7
- def setup
8
- objects = create_mocks(:test_invoker_helper, :configurator, :preprocessinator, :task_invoker, :dependinator, :file_wrapper)
9
- create_mocks(:tests_list, :mocks_list, :runners_list, :pass_results_list, :fail_results_list)
10
- @test_invoker = TestInvoker.new(objects)
11
- end
12
-
13
- def teardown
14
- end
15
-
16
-
17
- should "run tests" do
18
- @file_wrapper.expects.instantiate_file_list(['project/tests/TestIng.c', 'project/tests/TestIcular.c']).returns(@tests_list)
19
-
20
- @configurator.expects.project_test_results_path.returns('project/build/results')
21
- @configurator.expects.extension_testfail.returns('.fail')
22
- @tests_list.expects.pathmap('project/build/results/%n.fail').returns(@fail_results_list)
23
- @configurator.expects.project_test_results_path.returns('project/build/results')
24
- @configurator.expects.extension_testpass.returns('.pass')
25
- @tests_list.expects.pathmap('project/build/results/%n.pass').returns(@pass_results_list)
26
-
27
- @test_invoker_helper.expects.clean_results({:force_run => true}, @fail_results_list, @pass_results_list)
28
-
29
- @preprocessinator.expects.preprocess_tests_and_invoke_mocks(@tests_list).returns(@mocks_list)
30
-
31
- @configurator.expects.project_test_runners_path.returns('project/build/runners')
32
- @configurator.expects.test_runner_file_suffix.returns('_runner')
33
- @tests_list.expects.pathmap('project/build/runners/%n_runner%x').returns(@runners_list)
34
-
35
- @task_invoker.expects.invoke_runners(@runners_list)
36
-
37
- @test_invoker_helper.expects.process_deep_dependencies(@tests_list, @mocks_list, @runners_list)
38
-
39
- @dependinator.expects.setup_test_executable_dependencies(@tests_list)
40
-
41
- @task_invoker.expects.invoke_results(@pass_results_list)
42
-
43
- @test_invoker.setup_and_invoke(['project/tests/TestIng.c', 'project/tests/TestIcular.c'])
44
- end
45
-
46
-
47
- end
1
+ require File.dirname(__FILE__) + '/../unit_test_helper'
2
+ require 'ceedling/test_invoker'
3
+
4
+
5
+ class TestInvokerTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ objects = create_mocks(:test_invoker_helper, :configurator, :preprocessinator, :task_invoker, :dependinator, :file_wrapper)
9
+ create_mocks(:tests_list, :mocks_list, :runners_list, :pass_results_list, :fail_results_list)
10
+ @test_invoker = TestInvoker.new(objects)
11
+ end
12
+
13
+ def teardown
14
+ end
15
+
16
+
17
+ should "run tests" do
18
+ @file_wrapper.expects.instantiate_file_list(['project/tests/TestIng.c', 'project/tests/TestIcular.c']).returns(@tests_list)
19
+
20
+ @configurator.expects.project_test_results_path.returns('project/build/results')
21
+ @configurator.expects.extension_testfail.returns('.fail')
22
+ @tests_list.expects.pathmap('project/build/results/%n.fail').returns(@fail_results_list)
23
+ @configurator.expects.project_test_results_path.returns('project/build/results')
24
+ @configurator.expects.extension_testpass.returns('.pass')
25
+ @tests_list.expects.pathmap('project/build/results/%n.pass').returns(@pass_results_list)
26
+
27
+ @test_invoker_helper.expects.clean_results({:force_run => true}, @fail_results_list, @pass_results_list)
28
+
29
+ @preprocessinator.expects.preprocess_tests_and_invoke_mocks(@tests_list).returns(@mocks_list)
30
+
31
+ @configurator.expects.project_test_runners_path.returns('project/build/runners')
32
+ @configurator.expects.test_runner_file_suffix.returns('_runner')
33
+ @tests_list.expects.pathmap('project/build/runners/%n_runner%x').returns(@runners_list)
34
+
35
+ @task_invoker.expects.invoke_runners(@runners_list)
36
+
37
+ @test_invoker_helper.expects.process_deep_dependencies(@tests_list, @mocks_list, @runners_list)
38
+
39
+ @dependinator.expects.setup_test_executable_dependencies(@tests_list)
40
+
41
+ @task_invoker.expects.invoke_results(@pass_results_list)
42
+
43
+ @test_invoker.setup_and_invoke(['project/tests/TestIng.c', 'project/tests/TestIcular.c'])
44
+ end
45
+
46
+
47
+ end
@@ -1,100 +1,100 @@
1
- require File.dirname(__FILE__) + '/../unit_test_helper'
2
- require 'ceedling/tool_executor_helper'
3
-
4
-
5
- class ToolExecutorHelperTest < Test::Unit::TestCase
6
-
7
- def setup
8
- objects = create_mocks(:verbosinator, :stream_wrapper)
9
- @tool_executor_helper = ToolExecutorHelper.new(objects)
10
- end
11
-
12
- def teardown
13
- end
14
-
15
-
16
- should "print no happy results" do
17
- # non-zero (fail) exit code
18
- shell_result = {:output => 'la la la. connect the dots.', :exit_code => 1}
19
- @tool_executor_helper.print_happy_results("", shell_result)
20
-
21
- # zero exit code but insufficent verbosity settings
22
- shell_result = {:output => "pee wee's playhouse", :exit_code => 0}
23
- @verbosinator.expects.should_output?(Verbosity::OBNOXIOUS).returns(false)
24
- @tool_executor_helper.print_happy_results("tool.exe", shell_result)
25
- end
26
-
27
- should "print happy results with response" do
28
- # zero exit code (success) and sufficent verbosity settings
29
- shell_result = {:output => "gcc blather", :exit_code => 0}
30
- @verbosinator.expects.should_output?(Verbosity::OBNOXIOUS).returns(true)
31
-
32
- @stream_wrapper.expects.stdout_puts("> Shell executed command:")
33
- @stream_wrapper.expects.stdout_puts("gcc -Iproject/source file.c -o file.out")
34
- @stream_wrapper.expects.stdout_puts("> Produced response:")
35
- @stream_wrapper.expects.stdout_puts("gcc blather")
36
- @stream_wrapper.expects.stdout_puts('')
37
- @stream_wrapper.expects.stdout_flush
38
-
39
- @tool_executor_helper.print_happy_results("gcc -Iproject/source file.c -o file.out", shell_result)
40
- end
41
-
42
- should "print happy results with no response" do
43
- # zero exit code (success) and sufficent verbosity settings
44
- shell_result = {:output => "", :exit_code => 0}
45
- @verbosinator.expects.should_output?(Verbosity::OBNOXIOUS).returns(true)
46
-
47
- @stream_wrapper.expects.stdout_puts("> Shell executed command:")
48
- @stream_wrapper.expects.stdout_puts("gcc -Iproject/source file.c -o file.out")
49
- @stream_wrapper.expects.stdout_puts('')
50
- @stream_wrapper.expects.stdout_flush
51
-
52
- @tool_executor_helper.print_happy_results("gcc -Iproject/source file.c -o file.out", shell_result)
53
- end
54
-
55
-
56
- should "print no error results" do
57
- # zero (success) exit code
58
- shell_result = {:output => 'here he comes to save the day!', :exit_code => 0}
59
- @tool_executor_helper.print_error_results("", shell_result)
60
-
61
- # non-zero exit code but insufficent verbosity settings
62
- shell_result = {:output => "mighty mouse", :exit_code => 1}
63
- @verbosinator.expects.should_output?(Verbosity::ERRORS).returns(false)
64
- @tool_executor_helper.print_error_results("cmd.exe", shell_result)
65
- end
66
-
67
- should "print error results with response" do
68
- # non-zero exit code (fail) and sufficent verbosity settings
69
- shell_result = {:output => "coverage: 56%", :exit_code => 99}
70
- @verbosinator.expects.should_output?(Verbosity::ERRORS).returns(true)
71
-
72
- @stream_wrapper.expects.stderr_puts("ERROR: Shell command failed.")
73
- @stream_wrapper.expects.stderr_puts("> Shell executed command:")
74
- @stream_wrapper.expects.stderr_puts("bullseye.exe project/build/output")
75
- @stream_wrapper.expects.stderr_puts("> Produced response:")
76
- @stream_wrapper.expects.stderr_puts("coverage: 56%")
77
- @stream_wrapper.expects.stderr_puts("> And exited with status: [99].")
78
- @stream_wrapper.expects.stderr_puts('')
79
- @stream_wrapper.expects.stderr_flush
80
-
81
- @tool_executor_helper.print_error_results("bullseye.exe project/build/output", shell_result)
82
- end
83
-
84
- should "print error results with no response" do
85
- # non-zero exit code (fail) and sufficent verbosity settings
86
- shell_result = {:output => "", :exit_code => 21}
87
- @verbosinator.expects.should_output?(Verbosity::ERRORS).returns(true)
88
-
89
- @stream_wrapper.expects.stderr_puts("ERROR: Shell command failed.")
90
- @stream_wrapper.expects.stderr_puts("> Shell executed command:")
91
- @stream_wrapper.expects.stderr_puts("bullseye.exe project/build/output")
92
- @stream_wrapper.expects.stderr_puts("> And exited with status: [21].")
93
- @stream_wrapper.expects.stderr_puts('')
94
- @stream_wrapper.expects.stderr_flush
95
-
96
- @tool_executor_helper.print_error_results("bullseye.exe project/build/output", shell_result)
97
- end
98
-
99
- end
100
-
1
+ require File.dirname(__FILE__) + '/../unit_test_helper'
2
+ require 'ceedling/tool_executor_helper'
3
+
4
+
5
+ class ToolExecutorHelperTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ objects = create_mocks(:verbosinator, :stream_wrapper)
9
+ @tool_executor_helper = ToolExecutorHelper.new(objects)
10
+ end
11
+
12
+ def teardown
13
+ end
14
+
15
+
16
+ should "print no happy results" do
17
+ # non-zero (fail) exit code
18
+ shell_result = {:output => 'la la la. connect the dots.', :exit_code => 1}
19
+ @tool_executor_helper.print_happy_results("", shell_result)
20
+
21
+ # zero exit code but insufficent verbosity settings
22
+ shell_result = {:output => "pee wee's playhouse", :exit_code => 0}
23
+ @verbosinator.expects.should_output?(Verbosity::OBNOXIOUS).returns(false)
24
+ @tool_executor_helper.print_happy_results("tool.exe", shell_result)
25
+ end
26
+
27
+ should "print happy results with response" do
28
+ # zero exit code (success) and sufficent verbosity settings
29
+ shell_result = {:output => "gcc blather", :exit_code => 0}
30
+ @verbosinator.expects.should_output?(Verbosity::OBNOXIOUS).returns(true)
31
+
32
+ @stream_wrapper.expects.stdout_puts("> Shell executed command:")
33
+ @stream_wrapper.expects.stdout_puts("gcc -Iproject/source file.c -o file.out")
34
+ @stream_wrapper.expects.stdout_puts("> Produced response:")
35
+ @stream_wrapper.expects.stdout_puts("gcc blather")
36
+ @stream_wrapper.expects.stdout_puts('')
37
+ @stream_wrapper.expects.stdout_flush
38
+
39
+ @tool_executor_helper.print_happy_results("gcc -Iproject/source file.c -o file.out", shell_result)
40
+ end
41
+
42
+ should "print happy results with no response" do
43
+ # zero exit code (success) and sufficent verbosity settings
44
+ shell_result = {:output => "", :exit_code => 0}
45
+ @verbosinator.expects.should_output?(Verbosity::OBNOXIOUS).returns(true)
46
+
47
+ @stream_wrapper.expects.stdout_puts("> Shell executed command:")
48
+ @stream_wrapper.expects.stdout_puts("gcc -Iproject/source file.c -o file.out")
49
+ @stream_wrapper.expects.stdout_puts('')
50
+ @stream_wrapper.expects.stdout_flush
51
+
52
+ @tool_executor_helper.print_happy_results("gcc -Iproject/source file.c -o file.out", shell_result)
53
+ end
54
+
55
+
56
+ should "print no error results" do
57
+ # zero (success) exit code
58
+ shell_result = {:output => 'here he comes to save the day!', :exit_code => 0}
59
+ @tool_executor_helper.print_error_results("", shell_result)
60
+
61
+ # non-zero exit code but insufficent verbosity settings
62
+ shell_result = {:output => "mighty mouse", :exit_code => 1}
63
+ @verbosinator.expects.should_output?(Verbosity::ERRORS).returns(false)
64
+ @tool_executor_helper.print_error_results("cmd.exe", shell_result)
65
+ end
66
+
67
+ should "print error results with response" do
68
+ # non-zero exit code (fail) and sufficent verbosity settings
69
+ shell_result = {:output => "coverage: 56%", :exit_code => 99}
70
+ @verbosinator.expects.should_output?(Verbosity::ERRORS).returns(true)
71
+
72
+ @stream_wrapper.expects.stderr_puts("ERROR: Shell command failed.")
73
+ @stream_wrapper.expects.stderr_puts("> Shell executed command:")
74
+ @stream_wrapper.expects.stderr_puts("bullseye.exe project/build/output")
75
+ @stream_wrapper.expects.stderr_puts("> Produced response:")
76
+ @stream_wrapper.expects.stderr_puts("coverage: 56%")
77
+ @stream_wrapper.expects.stderr_puts("> And exited with status: [99].")
78
+ @stream_wrapper.expects.stderr_puts('')
79
+ @stream_wrapper.expects.stderr_flush
80
+
81
+ @tool_executor_helper.print_error_results("bullseye.exe project/build/output", shell_result)
82
+ end
83
+
84
+ should "print error results with no response" do
85
+ # non-zero exit code (fail) and sufficent verbosity settings
86
+ shell_result = {:output => "", :exit_code => 21}
87
+ @verbosinator.expects.should_output?(Verbosity::ERRORS).returns(true)
88
+
89
+ @stream_wrapper.expects.stderr_puts("ERROR: Shell command failed.")
90
+ @stream_wrapper.expects.stderr_puts("> Shell executed command:")
91
+ @stream_wrapper.expects.stderr_puts("bullseye.exe project/build/output")
92
+ @stream_wrapper.expects.stderr_puts("> And exited with status: [21].")
93
+ @stream_wrapper.expects.stderr_puts('')
94
+ @stream_wrapper.expects.stderr_flush
95
+
96
+ @tool_executor_helper.print_error_results("bullseye.exe project/build/output", shell_result)
97
+ end
98
+
99
+ end
100
+
@@ -1,351 +1,351 @@
1
- require File.dirname(__FILE__) + '/../unit_test_helper'
2
- require 'ceedling/tool_executor'
3
- require 'yaml'
4
-
5
-
6
- NIL_GLOBAL_CONSTANT = nil
7
-
8
- class ToolExecutorTest < Test::Unit::TestCase
9
-
10
- def setup
11
- objects = create_mocks(:configurator, :tool_executor_helper, :streaminator, :system_wrapper)
12
- @tool_executor = ToolExecutor.new(objects)
13
- end
14
-
15
- def teardown
16
- end
17
-
18
-
19
- ######## Build Command Line #########
20
-
21
- should "build a command line that contains only an executable if no arguments or blank arguments provided" do
22
-
23
- yaml1 = %Q[
24
- :tool1:
25
- :name: test_compiler
26
- :executable: tool.exe
27
- :arguments:
28
- ].left_margin(0)
29
- config1 = YAML.load(yaml1)
30
-
31
- yaml2 = %Q[
32
- :tool2:
33
- :name: test_compiler
34
- :executable: tool.exe
35
- :arguments:
36
- -
37
- - ' '
38
- ].left_margin(0)
39
- config2 = YAML.load(yaml2)
40
-
41
- assert_equal('tool.exe', @tool_executor.build_command_line(config1[:tool1]))
42
- assert_equal('tool.exe', @tool_executor.build_command_line(config2[:tool2]))
43
- end
44
-
45
-
46
- should "build a command line where the executable is specified by argument parameter input replacement" do
47
-
48
- yaml = %Q[
49
- :tool:
50
- :name: test_compiler
51
- :executable: ${1}
52
- :arguments:
53
- - '> ${2}'
54
- ].left_margin(0)
55
- config = YAML.load(yaml)
56
-
57
- assert_equal(
58
- 'a_tool > files/build/tmp/file.out',
59
- @tool_executor.build_command_line(config[:tool], 'a_tool', 'files/build/tmp/file.out'))
60
-
61
- assert_equal(
62
- 'test.exe > results.out',
63
- @tool_executor.build_command_line(config[:tool], 'test.exe', 'results.out'))
64
- end
65
-
66
-
67
- should "build a command line where the executable is specified by argument parameter input replacement and ruby string substitution" do
68
-
69
- # use funky string construction to prevent ruby from performing actual string substitution we're simulating
70
- filepath_string = "\#{" + "File.join(A_PATH, '${2}'}"
71
-
72
- yaml = %Q[
73
- :tool:
74
- :name: test_compiler
75
- :executable: ${1}
76
- :arguments:
77
- - "> #{filepath_string}"
78
- ].left_margin(0)
79
- config = YAML.load(yaml)
80
-
81
- @system_wrapper.expects.eval("> \#{" + "File.join(A_PATH, 'file.out'}").returns('> files/build/tmp/file.out')
82
- @system_wrapper.expects.eval("> \#{" + "File.join(A_PATH, 'results.out'}").returns('> files/build/tmp/results.out')
83
-
84
- assert_equal(
85
- 'a_tool > files/build/tmp/file.out',
86
- @tool_executor.build_command_line(config[:tool], 'a_tool', 'file.out'))
87
-
88
- assert_equal(
89
- 'test.exe > files/build/tmp/results.out',
90
- @tool_executor.build_command_line(config[:tool], 'test.exe', 'results.out'))
91
- end
92
-
93
-
94
- should "complain when building a command line if tool executable is specified with a replacement parameter but referenced input is nil" do
95
-
96
- yaml = %Q[
97
- :tool:
98
- :name: tool_sample
99
- :executable: ${1}
100
- :arguments: []
101
- ].left_margin(0)
102
- config = YAML.load(yaml)
103
-
104
- @streaminator.expects.stderr_puts("ERROR: Tool 'tool_sample' expected valid argument data to accompany replacement operator ${1}.", Verbosity::ERRORS)
105
-
106
- assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tool], nil) }
107
- end
108
-
109
-
110
- should "build a command line from simple arguments and global constants using generic '$' string replacement indicator" do
111
-
112
- redefine_global_constant('DEFINES_TEST', ['WALDORF', 'STATLER'])
113
- redefine_global_constant('COLLECTION_ALL_INCLUDE_PATHS', ['files/include', 'lib/modules/include'])
114
- redefine_global_constant('PROJECT_BUILD_ROOT', 'project/files/tests/build')
115
-
116
- yaml = %Q[
117
- :tool:
118
- :name: test_compiler
119
- :executable: hecklers.exe
120
- :arguments:
121
- - '--dlib_config config.h'
122
- - -D$: DEFINES_TEST
123
- - --no_cse
124
- - -I"$": COLLECTION_ALL_INCLUDE_PATHS
125
- - -I"$/mocks": PROJECT_BUILD_ROOT
126
- - --no_unroll
127
- ].left_margin(0)
128
- config = YAML.load(yaml)
129
-
130
- command_line = 'hecklers.exe --dlib_config config.h -DWALDORF -DSTATLER --no_cse -I"files/include" -I"lib/modules/include" -I"project/files/tests/build/mocks" --no_unroll'
131
-
132
- assert_equal(command_line, @tool_executor.build_command_line(config[:tool]))
133
- end
134
-
135
-
136
- should "build a command line from simple arguments and inline yaml arrays using '$' string replacement indicator" do
137
-
138
- yaml = %Q[
139
- :tool:
140
- :name: test_compiler
141
- :executable: compiler.exe
142
- :arguments:
143
- - --no_cse
144
- - '--D $':
145
- - DIFFERENT_DEFINE
146
- - STILL_ANOTHER_DEFINE
147
- - $:
148
- - A
149
- - B
150
- - --a_setting
151
- ].left_margin(0)
152
- config = YAML.load(yaml)
153
-
154
- command_line = 'compiler.exe --no_cse --D DIFFERENT_DEFINE --D STILL_ANOTHER_DEFINE A B --a_setting'
155
-
156
- assert_equal(command_line, @tool_executor.build_command_line(config[:tool]))
157
- end
158
-
159
-
160
- should "build a command line with duplicates in argument array" do
161
-
162
- yaml = %Q[
163
- :tool:
164
- :name: test_compiler
165
- :executable: compiler.exe
166
- :arguments:
167
- - ${1}
168
- - --option1
169
- - --option1
170
- - '-D $':
171
- - DEFINE_A
172
- - DEFINE_A
173
- - $:
174
- - Z
175
- - Z
176
- - ${1}
177
- ].left_margin(0)
178
- config = YAML.load(yaml)
179
-
180
- command_line = 'compiler.exe arg --option1 --option1 -D DEFINE_A -D DEFINE_A Z Z arg'
181
-
182
- assert_equal(command_line, @tool_executor.build_command_line(config[:tool], 'arg'))
183
- end
184
-
185
-
186
- should "build a command line using ruby string substitution for simple arguments and '$' string replacement" do
187
-
188
- # use funky string construction to prevent ruby from performing actual string substitution we're simulating
189
- abc_string = "-\#{" + "['a', 'b', 'c'].join}"
190
- num_string = "\#{" + "s = String.new; (1..9).to_a.each {|val| s += val.to_s}}"
191
- sym_string = "\#{" + "\'*!~\'.reverse}"
192
-
193
- @system_wrapper.expects.eval(abc_string).returns('-abc')
194
- @system_wrapper.expects.eval(num_string).returns('123456789')
195
- @system_wrapper.expects.eval(sym_string).returns('~!*')
196
-
197
- yaml = %Q[
198
- :tool:
199
- :name: test_compiler
200
- :executable: compiler.exe
201
- :arguments:
202
- - "#{abc_string}"
203
- - '--i $': "#{num_string}"
204
- - '--o $':
205
- - "#{sym_string}"
206
- ].left_margin(0)
207
- config = YAML.load(yaml)
208
-
209
- command_line = 'compiler.exe -abc --i 123456789 --o ~!*'
210
-
211
- assert_equal(command_line, @tool_executor.build_command_line(config[:tool]))
212
- end
213
-
214
-
215
- should "build a command line from simple arguments (including non-strings), inline yaml arrays, and input/output specifiers using string replacement indicators" do
216
-
217
- yaml = %Q[
218
- :tool:
219
- :name: test_compiler
220
- :executable: compiler.exe
221
- :arguments:
222
- - --no_cse
223
- - '-flag-${3}'
224
- - ${1}
225
- - '-D$':
226
- - ELIGHT
227
- - ELICIOUS
228
- - '-verbose:${4}'
229
- - '-o ${2}'
230
- ].left_margin(0)
231
- config = YAML.load(yaml)
232
-
233
- command_line = 'compiler.exe --no_cse -flag-1 -flag-2 process_me.c me_too.c and_me_also.c -DELIGHT -DELICIOUS -verbose:5 -o processed.o'
234
-
235
- assert_equal(command_line, @tool_executor.build_command_line(config[:tool], ['process_me.c', 'me_too.c', 'and_me_also.c'], 'processed.o', [1, 2], 5))
236
- end
237
-
238
-
239
- should "build a command line without replacing an escaped string replacement indicator" do
240
-
241
- yaml = %Q[
242
- :tool:
243
- :name: test_compiler
244
- :executable: program
245
- :arguments:
246
- - --cse=\\$abc
247
- - '-\\$D$':
248
- - ELIGHT
249
- - ELICIOUS
250
- - '-o ${2}.\\$'
251
- ].left_margin(0)
252
- config = YAML.load(yaml)
253
-
254
- command_line = 'program --cse=$abc -$DELIGHT -$DELICIOUS -o processed1.$ -o processed2.$'
255
-
256
- assert_equal(command_line, @tool_executor.build_command_line(config[:tool], nil, ['processed1', 'processed2']))
257
- end
258
-
259
-
260
- should "complain when building a command line if a referenced constant is nil" do
261
-
262
- yaml = %Q[
263
- :tool:
264
- :name: test_compiler
265
- :executable: tool.exe
266
- :arguments:
267
- - -x$: NIL_GLOBAL_CONSTANT
268
- ].left_margin(0)
269
- config = YAML.load(yaml)
270
-
271
- @streaminator.expects.stderr_puts("ERROR: Tool 'test_compiler' found constant 'NIL_GLOBAL_CONSTANT' to be nil.", Verbosity::ERRORS)
272
-
273
- assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tool]) }
274
- end
275
-
276
-
277
- should "complain when building a command line if expansion elements are nil" do
278
-
279
- yaml = %Q[
280
- :tool:
281
- :name: test_compiler
282
- :executable: tool.exe
283
- :arguments:
284
- - -x$:
285
- ].left_margin(0)
286
- config = YAML.load(yaml)
287
-
288
- @streaminator.expects.stderr_puts("ERROR: Tool 'test_compiler' could not expand nil elements for format string '-x$'.", Verbosity::ERRORS)
289
-
290
- assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tool]) }
291
- end
292
-
293
-
294
- should "complain when building a command line if argument replacement parameters are specified but referenced input is nil" do
295
-
296
- yaml = %Q[
297
- :tool:
298
- :name: classic_movie
299
- :executable: harry
300
- :arguments:
301
- - ${1}
302
- ].left_margin(0)
303
- config = YAML.load(yaml)
304
-
305
- @streaminator.expects.stderr_puts("ERROR: Tool 'classic_movie' expected valid argument data to accompany replacement operator ${1}.", Verbosity::ERRORS)
306
-
307
- assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tool], nil, 'sally') }
308
- end
309
-
310
-
311
- should "complain when building a command line if argument replacement parameters are specified but no optional arguments are given" do
312
-
313
- yaml = %Q[
314
- :tools_a_tool:
315
- :name: take_a_dip_in_the_tool
316
- :executable: harry
317
- :arguments:
318
- - ${2}
319
- ].left_margin(0)
320
- config = YAML.load(yaml)
321
-
322
- @streaminator.expects.stderr_puts("ERROR: Tool 'take_a_dip_in_the_tool' expected valid argument data to accompany replacement operator ${2}.", Verbosity::ERRORS)
323
-
324
- assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tools_a_tool]) }
325
- end
326
-
327
- ######## Shell Out & Execute Command #########
328
-
329
- should "shell out & execute command with additional arguments" do
330
- shell_result = {:output => 'stdout string', :exit_code => 0}
331
-
332
- @system_wrapper.expects.shell_execute('shell_command arg1 arg2').returns(shell_result)
333
-
334
- @tool_executor_helper.expects.print_happy_results('shell_command arg1 arg2', shell_result)
335
- @tool_executor_helper.expects.print_error_results('shell_command arg1 arg2', shell_result)
336
-
337
- assert_equal('stdout string', @tool_executor.exec(' shell_command', ['arg1', 'arg2']))
338
- end
339
-
340
- should "shell out & execute command but raise on non-zero exit code" do
341
- shell_result = {:output => '', :exit_code => 1}
342
-
343
- @system_wrapper.expects.shell_execute('shell_fish').returns(shell_result)
344
-
345
- @tool_executor_helper.expects.print_happy_results('shell_fish', shell_result)
346
- @tool_executor_helper.expects.print_error_results('shell_fish', shell_result)
347
-
348
- assert_raise(RuntimeError){ @tool_executor.exec('shell_fish') }
349
- end
350
-
351
- end
1
+ require File.dirname(__FILE__) + '/../unit_test_helper'
2
+ require 'ceedling/tool_executor'
3
+ require 'yaml'
4
+
5
+
6
+ NIL_GLOBAL_CONSTANT = nil
7
+
8
+ class ToolExecutorTest < Test::Unit::TestCase
9
+
10
+ def setup
11
+ objects = create_mocks(:configurator, :tool_executor_helper, :streaminator, :system_wrapper)
12
+ @tool_executor = ToolExecutor.new(objects)
13
+ end
14
+
15
+ def teardown
16
+ end
17
+
18
+
19
+ ######## Build Command Line #########
20
+
21
+ should "build a command line that contains only an executable if no arguments or blank arguments provided" do
22
+
23
+ yaml1 = %Q[
24
+ :tool1:
25
+ :name: test_compiler
26
+ :executable: tool.exe
27
+ :arguments:
28
+ ].left_margin(0)
29
+ config1 = YAML.load(yaml1)
30
+
31
+ yaml2 = %Q[
32
+ :tool2:
33
+ :name: test_compiler
34
+ :executable: tool.exe
35
+ :arguments:
36
+ -
37
+ - ' '
38
+ ].left_margin(0)
39
+ config2 = YAML.load(yaml2)
40
+
41
+ assert_equal('tool.exe', @tool_executor.build_command_line(config1[:tool1]))
42
+ assert_equal('tool.exe', @tool_executor.build_command_line(config2[:tool2]))
43
+ end
44
+
45
+
46
+ should "build a command line where the executable is specified by argument parameter input replacement" do
47
+
48
+ yaml = %Q[
49
+ :tool:
50
+ :name: test_compiler
51
+ :executable: ${1}
52
+ :arguments:
53
+ - '> ${2}'
54
+ ].left_margin(0)
55
+ config = YAML.load(yaml)
56
+
57
+ assert_equal(
58
+ 'a_tool > files/build/tmp/file.out',
59
+ @tool_executor.build_command_line(config[:tool], 'a_tool', 'files/build/tmp/file.out'))
60
+
61
+ assert_equal(
62
+ 'test.exe > results.out',
63
+ @tool_executor.build_command_line(config[:tool], 'test.exe', 'results.out'))
64
+ end
65
+
66
+
67
+ should "build a command line where the executable is specified by argument parameter input replacement and ruby string substitution" do
68
+
69
+ # use funky string construction to prevent ruby from performing actual string substitution we're simulating
70
+ filepath_string = "\#{" + "File.join(A_PATH, '${2}'}"
71
+
72
+ yaml = %Q[
73
+ :tool:
74
+ :name: test_compiler
75
+ :executable: ${1}
76
+ :arguments:
77
+ - "> #{filepath_string}"
78
+ ].left_margin(0)
79
+ config = YAML.load(yaml)
80
+
81
+ @system_wrapper.expects.eval("> \#{" + "File.join(A_PATH, 'file.out'}").returns('> files/build/tmp/file.out')
82
+ @system_wrapper.expects.eval("> \#{" + "File.join(A_PATH, 'results.out'}").returns('> files/build/tmp/results.out')
83
+
84
+ assert_equal(
85
+ 'a_tool > files/build/tmp/file.out',
86
+ @tool_executor.build_command_line(config[:tool], 'a_tool', 'file.out'))
87
+
88
+ assert_equal(
89
+ 'test.exe > files/build/tmp/results.out',
90
+ @tool_executor.build_command_line(config[:tool], 'test.exe', 'results.out'))
91
+ end
92
+
93
+
94
+ should "complain when building a command line if tool executable is specified with a replacement parameter but referenced input is nil" do
95
+
96
+ yaml = %Q[
97
+ :tool:
98
+ :name: tool_sample
99
+ :executable: ${1}
100
+ :arguments: []
101
+ ].left_margin(0)
102
+ config = YAML.load(yaml)
103
+
104
+ @streaminator.expects.stderr_puts("ERROR: Tool 'tool_sample' expected valid argument data to accompany replacement operator ${1}.", Verbosity::ERRORS)
105
+
106
+ assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tool], nil) }
107
+ end
108
+
109
+
110
+ should "build a command line from simple arguments and global constants using generic '$' string replacement indicator" do
111
+
112
+ redefine_global_constant('DEFINES_TEST', ['WALDORF', 'STATLER'])
113
+ redefine_global_constant('COLLECTION_ALL_INCLUDE_PATHS', ['files/include', 'lib/modules/include'])
114
+ redefine_global_constant('PROJECT_BUILD_ROOT', 'project/files/tests/build')
115
+
116
+ yaml = %Q[
117
+ :tool:
118
+ :name: test_compiler
119
+ :executable: hecklers.exe
120
+ :arguments:
121
+ - '--dlib_config config.h'
122
+ - -D$: DEFINES_TEST
123
+ - --no_cse
124
+ - -I"$": COLLECTION_ALL_INCLUDE_PATHS
125
+ - -I"$/mocks": PROJECT_BUILD_ROOT
126
+ - --no_unroll
127
+ ].left_margin(0)
128
+ config = YAML.load(yaml)
129
+
130
+ command_line = 'hecklers.exe --dlib_config config.h -DWALDORF -DSTATLER --no_cse -I"files/include" -I"lib/modules/include" -I"project/files/tests/build/mocks" --no_unroll'
131
+
132
+ assert_equal(command_line, @tool_executor.build_command_line(config[:tool]))
133
+ end
134
+
135
+
136
+ should "build a command line from simple arguments and inline yaml arrays using '$' string replacement indicator" do
137
+
138
+ yaml = %Q[
139
+ :tool:
140
+ :name: test_compiler
141
+ :executable: compiler.exe
142
+ :arguments:
143
+ - --no_cse
144
+ - '--D $':
145
+ - DIFFERENT_DEFINE
146
+ - STILL_ANOTHER_DEFINE
147
+ - $:
148
+ - A
149
+ - B
150
+ - --a_setting
151
+ ].left_margin(0)
152
+ config = YAML.load(yaml)
153
+
154
+ command_line = 'compiler.exe --no_cse --D DIFFERENT_DEFINE --D STILL_ANOTHER_DEFINE A B --a_setting'
155
+
156
+ assert_equal(command_line, @tool_executor.build_command_line(config[:tool]))
157
+ end
158
+
159
+
160
+ should "build a command line with duplicates in argument array" do
161
+
162
+ yaml = %Q[
163
+ :tool:
164
+ :name: test_compiler
165
+ :executable: compiler.exe
166
+ :arguments:
167
+ - ${1}
168
+ - --option1
169
+ - --option1
170
+ - '-D $':
171
+ - DEFINE_A
172
+ - DEFINE_A
173
+ - $:
174
+ - Z
175
+ - Z
176
+ - ${1}
177
+ ].left_margin(0)
178
+ config = YAML.load(yaml)
179
+
180
+ command_line = 'compiler.exe arg --option1 --option1 -D DEFINE_A -D DEFINE_A Z Z arg'
181
+
182
+ assert_equal(command_line, @tool_executor.build_command_line(config[:tool], 'arg'))
183
+ end
184
+
185
+
186
+ should "build a command line using ruby string substitution for simple arguments and '$' string replacement" do
187
+
188
+ # use funky string construction to prevent ruby from performing actual string substitution we're simulating
189
+ abc_string = "-\#{" + "['a', 'b', 'c'].join}"
190
+ num_string = "\#{" + "s = String.new; (1..9).to_a.each {|val| s += val.to_s}}"
191
+ sym_string = "\#{" + "\'*!~\'.reverse}"
192
+
193
+ @system_wrapper.expects.eval(abc_string).returns('-abc')
194
+ @system_wrapper.expects.eval(num_string).returns('123456789')
195
+ @system_wrapper.expects.eval(sym_string).returns('~!*')
196
+
197
+ yaml = %Q[
198
+ :tool:
199
+ :name: test_compiler
200
+ :executable: compiler.exe
201
+ :arguments:
202
+ - "#{abc_string}"
203
+ - '--i $': "#{num_string}"
204
+ - '--o $':
205
+ - "#{sym_string}"
206
+ ].left_margin(0)
207
+ config = YAML.load(yaml)
208
+
209
+ command_line = 'compiler.exe -abc --i 123456789 --o ~!*'
210
+
211
+ assert_equal(command_line, @tool_executor.build_command_line(config[:tool]))
212
+ end
213
+
214
+
215
+ should "build a command line from simple arguments (including non-strings), inline yaml arrays, and input/output specifiers using string replacement indicators" do
216
+
217
+ yaml = %Q[
218
+ :tool:
219
+ :name: test_compiler
220
+ :executable: compiler.exe
221
+ :arguments:
222
+ - --no_cse
223
+ - '-flag-${3}'
224
+ - ${1}
225
+ - '-D$':
226
+ - ELIGHT
227
+ - ELICIOUS
228
+ - '-verbose:${4}'
229
+ - '-o ${2}'
230
+ ].left_margin(0)
231
+ config = YAML.load(yaml)
232
+
233
+ command_line = 'compiler.exe --no_cse -flag-1 -flag-2 process_me.c me_too.c and_me_also.c -DELIGHT -DELICIOUS -verbose:5 -o processed.o'
234
+
235
+ assert_equal(command_line, @tool_executor.build_command_line(config[:tool], ['process_me.c', 'me_too.c', 'and_me_also.c'], 'processed.o', [1, 2], 5))
236
+ end
237
+
238
+
239
+ should "build a command line without replacing an escaped string replacement indicator" do
240
+
241
+ yaml = %Q[
242
+ :tool:
243
+ :name: test_compiler
244
+ :executable: program
245
+ :arguments:
246
+ - --cse=\\$abc
247
+ - '-\\$D$':
248
+ - ELIGHT
249
+ - ELICIOUS
250
+ - '-o ${2}.\\$'
251
+ ].left_margin(0)
252
+ config = YAML.load(yaml)
253
+
254
+ command_line = 'program --cse=$abc -$DELIGHT -$DELICIOUS -o processed1.$ -o processed2.$'
255
+
256
+ assert_equal(command_line, @tool_executor.build_command_line(config[:tool], nil, ['processed1', 'processed2']))
257
+ end
258
+
259
+
260
+ should "complain when building a command line if a referenced constant is nil" do
261
+
262
+ yaml = %Q[
263
+ :tool:
264
+ :name: test_compiler
265
+ :executable: tool.exe
266
+ :arguments:
267
+ - -x$: NIL_GLOBAL_CONSTANT
268
+ ].left_margin(0)
269
+ config = YAML.load(yaml)
270
+
271
+ @streaminator.expects.stderr_puts("ERROR: Tool 'test_compiler' found constant 'NIL_GLOBAL_CONSTANT' to be nil.", Verbosity::ERRORS)
272
+
273
+ assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tool]) }
274
+ end
275
+
276
+
277
+ should "complain when building a command line if expansion elements are nil" do
278
+
279
+ yaml = %Q[
280
+ :tool:
281
+ :name: test_compiler
282
+ :executable: tool.exe
283
+ :arguments:
284
+ - -x$:
285
+ ].left_margin(0)
286
+ config = YAML.load(yaml)
287
+
288
+ @streaminator.expects.stderr_puts("ERROR: Tool 'test_compiler' could not expand nil elements for format string '-x$'.", Verbosity::ERRORS)
289
+
290
+ assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tool]) }
291
+ end
292
+
293
+
294
+ should "complain when building a command line if argument replacement parameters are specified but referenced input is nil" do
295
+
296
+ yaml = %Q[
297
+ :tool:
298
+ :name: classic_movie
299
+ :executable: harry
300
+ :arguments:
301
+ - ${1}
302
+ ].left_margin(0)
303
+ config = YAML.load(yaml)
304
+
305
+ @streaminator.expects.stderr_puts("ERROR: Tool 'classic_movie' expected valid argument data to accompany replacement operator ${1}.", Verbosity::ERRORS)
306
+
307
+ assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tool], nil, 'sally') }
308
+ end
309
+
310
+
311
+ should "complain when building a command line if argument replacement parameters are specified but no optional arguments are given" do
312
+
313
+ yaml = %Q[
314
+ :tools_a_tool:
315
+ :name: take_a_dip_in_the_tool
316
+ :executable: harry
317
+ :arguments:
318
+ - ${2}
319
+ ].left_margin(0)
320
+ config = YAML.load(yaml)
321
+
322
+ @streaminator.expects.stderr_puts("ERROR: Tool 'take_a_dip_in_the_tool' expected valid argument data to accompany replacement operator ${2}.", Verbosity::ERRORS)
323
+
324
+ assert_raise(RuntimeError) { @tool_executor.build_command_line(config[:tools_a_tool]) }
325
+ end
326
+
327
+ ######## Shell Out & Execute Command #########
328
+
329
+ should "shell out & execute command with additional arguments" do
330
+ shell_result = {:output => 'stdout string', :exit_code => 0}
331
+
332
+ @system_wrapper.expects.shell_execute('shell_command arg1 arg2').returns(shell_result)
333
+
334
+ @tool_executor_helper.expects.print_happy_results('shell_command arg1 arg2', shell_result)
335
+ @tool_executor_helper.expects.print_error_results('shell_command arg1 arg2', shell_result)
336
+
337
+ assert_equal('stdout string', @tool_executor.exec(' shell_command', ['arg1', 'arg2']))
338
+ end
339
+
340
+ should "shell out & execute command but raise on non-zero exit code" do
341
+ shell_result = {:output => '', :exit_code => 1}
342
+
343
+ @system_wrapper.expects.shell_execute('shell_fish').returns(shell_result)
344
+
345
+ @tool_executor_helper.expects.print_happy_results('shell_fish', shell_result)
346
+ @tool_executor_helper.expects.print_error_results('shell_fish', shell_result)
347
+
348
+ assert_raise(RuntimeError){ @tool_executor.exec('shell_fish') }
349
+ end
350
+
351
+ end