ceedling 0.13.0 → 0.15.0

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 (308) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +18 -14
  4. data/README.md +6 -4
  5. data/assets/project_as_gem.yml +1 -1
  6. data/assets/rakefile_as_gem.rb +2 -0
  7. data/assets/rakefile_with_guts.rb +3 -1
  8. data/ceedling.gemspec +1 -0
  9. data/examples/blinky/rakefile.rb +2 -2
  10. data/examples/temp_sensor/rakefile.rb +1 -1
  11. data/examples/temp_sensor/src/TemperatureFilter.c +1 -2
  12. data/examples/temp_sensor/test/TestTemperatureCalculator.c +1 -1
  13. data/examples/temp_sensor/test/TestTemperatureFilter.c +12 -2
  14. data/lib/ceedling.rb +94 -22
  15. data/lib/{build_invoker_utils.rb → ceedling/build_invoker_utils.rb} +27 -27
  16. data/lib/{cacheinator.rb → ceedling/cacheinator.rb} +42 -42
  17. data/lib/{cacheinator_helper.rb → ceedling/cacheinator_helper.rb} +12 -12
  18. data/lib/{cmock_builder.rb → ceedling/cmock_builder.rb} +15 -15
  19. data/lib/{configurator.rb → ceedling/configurator.rb} +333 -329
  20. data/lib/{configurator_builder.rb → ceedling/configurator_builder.rb} +437 -437
  21. data/lib/{configurator_plugins.rb → ceedling/configurator_plugins.rb} +124 -124
  22. data/lib/{configurator_setup.rb → ceedling/configurator_setup.rb} +124 -124
  23. data/lib/{configurator_validator.rb → ceedling/configurator_validator.rb} +184 -184
  24. data/lib/{constants.rb → ceedling/constants.rb} +20 -17
  25. data/lib/{defaults.rb → ceedling/defaults.rb} +19 -18
  26. data/lib/{dependinator.rb → ceedling/dependinator.rb} +92 -92
  27. data/lib/{erb_wrapper.rb → ceedling/erb_wrapper.rb} +8 -8
  28. data/lib/{file_finder.rb → ceedling/file_finder.rb} +132 -132
  29. data/lib/{file_finder_helper.rb → ceedling/file_finder_helper.rb} +54 -54
  30. data/lib/{file_path_utils.rb → ceedling/file_path_utils.rb} +189 -189
  31. data/lib/{file_system_utils.rb → ceedling/file_system_utils.rb} +69 -69
  32. data/lib/{file_system_wrapper.rb → ceedling/file_system_wrapper.rb} +9 -9
  33. data/lib/{file_wrapper.rb → ceedling/file_wrapper.rb} +79 -79
  34. data/lib/{flaginator.rb → ceedling/flaginator.rb} +54 -54
  35. data/lib/{generator.rb → ceedling/generator.rb} +164 -164
  36. data/lib/{generator_helper.rb → ceedling/generator_helper.rb} +40 -40
  37. data/lib/{generator_test_results.rb → ceedling/generator_test_results.rb} +86 -89
  38. data/lib/{generator_test_results_sanity_checker.rb → ceedling/generator_test_results_sanity_checker.rb} +64 -62
  39. data/lib/{generator_test_runner.rb → ceedling/generator_test_runner.rb} +63 -63
  40. data/lib/{loginator.rb → ceedling/loginator.rb} +31 -31
  41. data/lib/{makefile.rb → ceedling/makefile.rb} +0 -0
  42. data/lib/{objects.yml → ceedling/objects.yml} +0 -0
  43. data/lib/{par_map.rb → ceedling/par_map.rb} +0 -0
  44. data/lib/{plugin.rb → ceedling/plugin.rb} +80 -80
  45. data/lib/{plugin_builder.rb → ceedling/plugin_builder.rb} +52 -52
  46. data/lib/{plugin_manager.rb → ceedling/plugin_manager.rb} +107 -107
  47. data/lib/{plugin_manager_helper.rb → ceedling/plugin_manager_helper.rb} +19 -19
  48. data/lib/{plugin_reportinator.rb → ceedling/plugin_reportinator.rb} +2 -2
  49. data/lib/{plugin_reportinator_helper.rb → ceedling/plugin_reportinator_helper.rb} +1 -1
  50. data/lib/{preprocessinator.rb → ceedling/preprocessinator.rb} +43 -43
  51. data/lib/{preprocessinator_extractor.rb → ceedling/preprocessinator_extractor.rb} +30 -30
  52. data/lib/{preprocessinator_file_handler.rb → ceedling/preprocessinator_file_handler.rb} +21 -21
  53. data/lib/{preprocessinator_helper.rb → ceedling/preprocessinator_helper.rb} +46 -46
  54. data/lib/ceedling/preprocessinator_includes_handler.rb +82 -0
  55. data/lib/{project_config_manager.rb → ceedling/project_config_manager.rb} +38 -38
  56. data/lib/{project_file_loader.rb → ceedling/project_file_loader.rb} +64 -64
  57. data/lib/{rake_utils.rb → ceedling/rake_utils.rb} +17 -17
  58. data/lib/{rake_wrapper.rb → ceedling/rake_wrapper.rb} +33 -33
  59. data/lib/{rakefile.rb → ceedling/rakefile.rb} +78 -74
  60. data/lib/{release_invoker.rb → ceedling/release_invoker.rb} +58 -58
  61. data/lib/{release_invoker_helper.rb → ceedling/release_invoker_helper.rb} +16 -16
  62. data/lib/{reportinator.rb → ceedling/reportinator.rb} +9 -9
  63. data/lib/{rules_cmock.rake → ceedling/rules_cmock.rake} +9 -9
  64. data/lib/{rules_preprocess.rake → ceedling/rules_preprocess.rake} +26 -26
  65. data/lib/{rules_release.rake → ceedling/rules_release.rake} +79 -79
  66. data/lib/{rules_release_deep_dependencies.rake → ceedling/rules_release_deep_dependencies.rake} +15 -15
  67. data/lib/{rules_tests.rake → ceedling/rules_tests.rake} +59 -59
  68. data/lib/{rules_tests_deep_dependencies.rake → ceedling/rules_tests_deep_dependencies.rake} +15 -15
  69. data/lib/{setupinator.rb → ceedling/setupinator.rb} +51 -51
  70. data/lib/{stream_wrapper.rb → ceedling/stream_wrapper.rb} +20 -20
  71. data/lib/{streaminator.rb → ceedling/streaminator.rb} +40 -41
  72. data/lib/{streaminator_helper.rb → ceedling/streaminator_helper.rb} +15 -15
  73. data/lib/{system_utils.rb → ceedling/system_utils.rb} +0 -0
  74. data/lib/{system_wrapper.rb → ceedling/system_wrapper.rb} +76 -76
  75. data/lib/{target_loader.rb → ceedling/target_loader.rb} +0 -0
  76. data/lib/{task_invoker.rb → ceedling/task_invoker.rb} +89 -89
  77. data/lib/{tasks_base.rake → ceedling/tasks_base.rake} +104 -104
  78. data/lib/{tasks_filesystem.rake → ceedling/tasks_filesystem.rake} +91 -91
  79. data/lib/{tasks_release.rake → ceedling/tasks_release.rake} +28 -28
  80. data/lib/{tasks_release_deep_dependencies.rake → ceedling/tasks_release_deep_dependencies.rake} +9 -9
  81. data/lib/{tasks_tests.rake → ceedling/tasks_tests.rake} +52 -52
  82. data/lib/{tasks_tests_deep_dependencies.rake → ceedling/tasks_tests_deep_dependencies.rake} +9 -9
  83. data/lib/{tasks_vendor.rake → ceedling/tasks_vendor.rake} +36 -36
  84. data/lib/{test_includes_extractor.rb → ceedling/test_includes_extractor.rb} +81 -81
  85. data/lib/{test_invoker.rb → ceedling/test_invoker.rb} +97 -97
  86. data/lib/{test_invoker_helper.rb → ceedling/test_invoker_helper.rb} +28 -28
  87. data/lib/{tool_executor.rb → ceedling/tool_executor.rb} +215 -212
  88. data/lib/{tool_executor_helper.rb → ceedling/tool_executor_helper.rb} +115 -115
  89. data/lib/{verbosinator.rb → ceedling/verbosinator.rb} +10 -10
  90. data/lib/ceedling/version.rb +1 -1
  91. data/lib/{yaml_wrapper.rb → ceedling/yaml_wrapper.rb} +17 -16
  92. data/license.txt +31 -0
  93. data/plugins/bullseye/lib/bullseye.rb +2 -2
  94. data/plugins/gcov/gcov.rb +2 -2
  95. data/plugins/module_generator/lib/module_generator.rb +4 -3
  96. data/plugins/stdout_ide_tests_report/lib/stdout_ide_tests_report.rb +8 -8
  97. data/plugins/stdout_pretty_tests_report/lib/stdout_pretty_tests_report.rb +3 -3
  98. data/plugins/teamcity_tests_report/config/teamcity_tests_report.yml +4 -0
  99. data/plugins/teamcity_tests_report/lib/teamcity_tests_report.rb +57 -0
  100. data/plugins/xml_tests_report/xml_tests_report.rb +4 -4
  101. data/release/version.info +1 -1
  102. data/spec/ceedling_spec.rb +154 -0
  103. data/spec/par_map_spec.rb +1 -1
  104. data/spec/preprocessinator_extractor_spec.rb +26 -27
  105. data/spec/preprocessinator_includes_handler_spec.rb +175 -0
  106. data/spec/spec_helper.rb +8 -27
  107. data/test_graveyard/integration/paths_test.rb +2 -2
  108. data/test_graveyard/unit/busted/configurator_builder_test.rb +2 -2
  109. data/test_graveyard/unit/busted/configurator_test.rb +1 -1
  110. data/test_graveyard/unit/busted/configurator_validator_test.rb +1 -1
  111. data/test_graveyard/unit/busted/dependinator_test.rb +1 -1
  112. data/test_graveyard/unit/busted/file_finder_helper_test.rb +1 -1
  113. data/test_graveyard/unit/busted/file_finder_test.rb +1 -1
  114. data/test_graveyard/unit/busted/file_path_utils_test.rb +1 -1
  115. data/test_graveyard/unit/busted/file_system_utils_test.rb +1 -1
  116. data/test_graveyard/unit/busted/generator_test.rb +1 -1
  117. data/test_graveyard/unit/busted/generator_test_results_test.rb +1 -1
  118. data/test_graveyard/unit/busted/generator_test_runner_test.rb +1 -1
  119. data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +1 -1
  120. data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +1 -1
  121. data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +1 -1
  122. data/test_graveyard/unit/busted/preprocessinator_test.rb +1 -1
  123. data/test_graveyard/unit/busted/project_file_loader_test.rb +1 -1
  124. data/test_graveyard/unit/busted/setupinator_test.rb +1 -1
  125. data/test_graveyard/unit/busted/streaminator_test.rb +2 -2
  126. data/test_graveyard/unit/busted/task_invoker_test.rb +1 -1
  127. data/test_graveyard/unit/busted/test_includes_extractor_test.rb +1 -1
  128. data/test_graveyard/unit/busted/test_invoker_helper_test.rb +1 -1
  129. data/test_graveyard/unit/busted/test_invoker_test.rb +1 -1
  130. data/test_graveyard/unit/busted/tool_executor_helper_test.rb +1 -1
  131. data/test_graveyard/unit/busted/tool_executor_test.rb +1 -1
  132. data/test_graveyard/unit/busted/verbosinator_test.rb +1 -1
  133. data/test_graveyard/unit/preprocessinator_extractor_test.rb +1 -1
  134. data/vendor/c_exception/Gemfile +4 -0
  135. data/vendor/c_exception/lib/CException.h +1 -1
  136. data/vendor/c_exception/test/TestException.c +25 -14
  137. data/vendor/c_exception/test/TestException_Runner.c +74 -57
  138. data/vendor/cmock/Gemfile +11 -0
  139. data/vendor/cmock/lib/cmock_generator.rb +13 -12
  140. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +44 -0
  141. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +74 -0
  142. data/vendor/cmock/lib/cmock_generator_utils.rb +67 -42
  143. data/vendor/cmock/src/cmock.c +20 -30
  144. data/vendor/cmock/src/cmock.h +1 -0
  145. data/vendor/cmock/src/cmock_internals.h +43 -0
  146. data/vendor/cmock/test/c/TestCMockC.c +79 -36
  147. data/vendor/cmock/test/c/TestCMockC_Runner.c +2 -0
  148. data/vendor/cmock/test/spec/cmock_file_writer_spec.rb +21 -1
  149. data/vendor/cmock/test/spec/cmock_generator_plugin_array_spec.rb +52 -0
  150. data/vendor/cmock/test/system/test_interactions/all_plugins_coexist.yml +2 -0
  151. data/vendor/cmock/test/system/test_interactions/return_thru_ptr_ignore_arg.yml +235 -0
  152. data/vendor/cmock/test/test_helper.rb +10 -5
  153. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +38 -0
  154. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +116 -0
  155. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +134 -0
  156. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +58 -33
  157. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  158. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  159. data/vendor/cmock/vendor/c_exception/docs/license.txt +30 -0
  160. data/vendor/cmock/vendor/c_exception/docs/readme.txt +236 -0
  161. data/vendor/cmock/vendor/c_exception/lib/CException.c +39 -0
  162. data/vendor/cmock/vendor/c_exception/lib/CException.h +70 -0
  163. data/vendor/cmock/vendor/c_exception/makefile +24 -0
  164. data/vendor/cmock/vendor/c_exception/rakefile.rb +41 -0
  165. data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
  166. data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
  167. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +27 -0
  168. data/vendor/cmock/vendor/c_exception/test/TestException.c +291 -0
  169. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +62 -0
  170. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +94 -0
  171. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
  172. data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
  173. data/vendor/cmock/vendor/unity/auto/generate_module.rb +202 -0
  174. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +313 -0
  175. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +23 -0
  176. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +139 -0
  177. data/vendor/cmock/vendor/unity/docs/Unity Summary.odt +0 -0
  178. data/vendor/cmock/vendor/unity/docs/Unity Summary.pdf +0 -0
  179. data/vendor/cmock/vendor/unity/docs/Unity Summary.txt +217 -0
  180. data/vendor/cmock/vendor/unity/docs/license.txt +31 -0
  181. data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.c +10 -0
  182. data/vendor/cmock/vendor/unity/examples/helper/UnityHelper.h +12 -0
  183. data/vendor/cmock/vendor/unity/examples/makefile +40 -0
  184. data/vendor/cmock/vendor/unity/examples/rakefile.rb +32 -0
  185. data/vendor/cmock/vendor/unity/examples/rakefile_helper.rb +256 -0
  186. data/vendor/cmock/vendor/unity/examples/readme.txt +18 -0
  187. data/vendor/cmock/vendor/unity/examples/src/ProductionCode.c +24 -0
  188. data/vendor/cmock/vendor/unity/examples/src/ProductionCode.h +3 -0
  189. data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.c +9 -0
  190. data/vendor/cmock/vendor/unity/examples/src/ProductionCode2.h +2 -0
  191. data/vendor/cmock/vendor/unity/examples/test/TestProductionCode.c +62 -0
  192. data/vendor/cmock/vendor/unity/examples/test/TestProductionCode2.c +31 -0
  193. data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode2_Runner.c +46 -0
  194. data/vendor/cmock/vendor/unity/examples/test/no_ruby/TestProductionCode_Runner.c +50 -0
  195. data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/MakefileWorker.mk +0 -0
  196. data/vendor/{unity → cmock/vendor/unity}/extras/fixture/build/filterGcov.sh +0 -0
  197. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +37 -0
  198. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  199. data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
  200. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +381 -0
  201. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +81 -0
  202. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +44 -0
  203. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +16 -0
  204. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +21 -0
  205. data/vendor/cmock/vendor/unity/extras/fixture/test/testunity_fixture.c +39 -0
  206. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +321 -0
  207. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +40 -0
  208. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +56 -0
  209. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  210. data/vendor/cmock/vendor/unity/makefile +35 -0
  211. data/vendor/cmock/vendor/unity/rakefile.rb +48 -0
  212. data/vendor/cmock/vendor/unity/rakefile_helper.rb +240 -0
  213. data/vendor/cmock/vendor/unity/release/build.info +2 -0
  214. data/vendor/cmock/vendor/unity/release/version.info +2 -0
  215. data/vendor/cmock/vendor/unity/src/unity.c +979 -0
  216. data/vendor/cmock/vendor/unity/src/unity.h +232 -0
  217. data/vendor/cmock/vendor/unity/src/unity_internals.h +424 -0
  218. data/vendor/cmock/vendor/unity/targets/gcc.yml +43 -0
  219. data/vendor/cmock/vendor/unity/targets/gcc_64.yml +44 -0
  220. data/vendor/cmock/vendor/unity/targets/hitech_picc18.yml +101 -0
  221. data/vendor/cmock/vendor/unity/targets/iar_arm_v4.yml +89 -0
  222. data/vendor/cmock/vendor/unity/targets/iar_arm_v5.yml +79 -0
  223. data/vendor/cmock/vendor/unity/targets/iar_arm_v5_3.yml +79 -0
  224. data/vendor/cmock/vendor/unity/targets/iar_armcortex_LM3S9B92_v5_4.yml +93 -0
  225. data/vendor/cmock/vendor/unity/targets/iar_cortexm3_v5.yml +83 -0
  226. data/vendor/cmock/vendor/unity/targets/iar_msp430.yml +94 -0
  227. data/vendor/cmock/vendor/unity/targets/iar_sh2a_v6.yml +85 -0
  228. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +54 -0
  229. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +50 -0
  230. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +76 -0
  231. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +72 -0
  232. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +85 -0
  233. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +85 -0
  234. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +73 -0
  235. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +85 -0
  236. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +85 -0
  237. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +86 -0
  238. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +60 -0
  239. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +63 -0
  240. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +51 -0
  241. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +60 -0
  242. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +63 -0
  243. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +64 -0
  244. data/vendor/cmock/vendor/unity/test/test_generate_test_runner.rb +94 -0
  245. data/vendor/cmock/vendor/unity/test/testdata/mocksample.c +51 -0
  246. data/vendor/cmock/vendor/unity/test/testdata/sample.yml +9 -0
  247. data/vendor/cmock/vendor/unity/test/testdata/testsample.c +51 -0
  248. data/vendor/cmock/vendor/unity/test/testparameterized.c +101 -0
  249. data/vendor/cmock/vendor/unity/test/testunity.c +2024 -0
  250. data/vendor/unity/Gemfile +4 -0
  251. data/vendor/unity/auto/generate_test_runner.rb +6 -3
  252. data/vendor/unity/examples/makefile +2 -2
  253. data/vendor/unity/examples/rakefile.rb +13 -2
  254. data/vendor/unity/extras/fixture/rakefile.rb +1 -1
  255. data/vendor/unity/extras/fixture/rakefile_helper.rb +4 -3
  256. data/vendor/unity/extras/fixture/src/unity_fixture.c +15 -12
  257. data/vendor/unity/extras/fixture/src/unity_fixture.h +5 -5
  258. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +1 -1
  259. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +6 -3
  260. data/vendor/unity/makefile +2 -2
  261. data/vendor/unity/src/unity.c +183 -16
  262. data/vendor/unity/src/unity.h +18 -5
  263. data/vendor/unity/src/unity_internals.h +57 -23
  264. data/vendor/unity/targets/gcc_64.yml +45 -0
  265. data/vendor/unity/test/testunity.c +436 -28
  266. metadata +200 -137
  267. data/ceedling-0.13.0.rc4.gem +0 -0
  268. data/ceedling.sublime-project +0 -8
  269. data/ceedling.sublime-workspace +0 -365
  270. data/lib/preprocessinator_includes_handler.rb +0 -55
  271. data/tags +0 -977
  272. data/vendor/cmock/vendor/hardmock/CHANGES +0 -78
  273. data/vendor/cmock/vendor/hardmock/LICENSE +0 -7
  274. data/vendor/cmock/vendor/hardmock/README +0 -70
  275. data/vendor/cmock/vendor/hardmock/Rakefile +0 -8
  276. data/vendor/cmock/vendor/hardmock/config/environment.rb +0 -12
  277. data/vendor/cmock/vendor/hardmock/lib/assert_error.rb +0 -23
  278. data/vendor/cmock/vendor/hardmock/lib/extend_test_unit.rb +0 -14
  279. data/vendor/cmock/vendor/hardmock/lib/hardmock.rb +0 -86
  280. data/vendor/cmock/vendor/hardmock/lib/hardmock/errors.rb +0 -22
  281. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation.rb +0 -229
  282. data/vendor/cmock/vendor/hardmock/lib/hardmock/expectation_builder.rb +0 -9
  283. data/vendor/cmock/vendor/hardmock/lib/hardmock/expector.rb +0 -26
  284. data/vendor/cmock/vendor/hardmock/lib/hardmock/method_cleanout.rb +0 -33
  285. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock.rb +0 -180
  286. data/vendor/cmock/vendor/hardmock/lib/hardmock/mock_control.rb +0 -53
  287. data/vendor/cmock/vendor/hardmock/lib/hardmock/stubbing.rb +0 -210
  288. data/vendor/cmock/vendor/hardmock/lib/hardmock/trapper.rb +0 -31
  289. data/vendor/cmock/vendor/hardmock/lib/hardmock/utils.rb +0 -9
  290. data/vendor/cmock/vendor/hardmock/lib/test_unit_before_after.rb +0 -169
  291. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc.rake +0 -19
  292. data/vendor/cmock/vendor/hardmock/rake_tasks/rdoc_options.rb +0 -4
  293. data/vendor/cmock/vendor/hardmock/rake_tasks/test.rake +0 -22
  294. data/vendor/cmock/vendor/hardmock/test/functional/assert_error_test.rb +0 -52
  295. data/vendor/cmock/vendor/hardmock/test/functional/auto_verify_test.rb +0 -178
  296. data/vendor/cmock/vendor/hardmock/test/functional/direct_mock_usage_test.rb +0 -396
  297. data/vendor/cmock/vendor/hardmock/test/functional/hardmock_test.rb +0 -434
  298. data/vendor/cmock/vendor/hardmock/test/functional/stubbing_test.rb +0 -479
  299. data/vendor/cmock/vendor/hardmock/test/test_helper.rb +0 -43
  300. data/vendor/cmock/vendor/hardmock/test/unit/expectation_builder_test.rb +0 -19
  301. data/vendor/cmock/vendor/hardmock/test/unit/expectation_test.rb +0 -372
  302. data/vendor/cmock/vendor/hardmock/test/unit/expector_test.rb +0 -57
  303. data/vendor/cmock/vendor/hardmock/test/unit/method_cleanout_test.rb +0 -36
  304. data/vendor/cmock/vendor/hardmock/test/unit/mock_control_test.rb +0 -175
  305. data/vendor/cmock/vendor/hardmock/test/unit/mock_test.rb +0 -279
  306. data/vendor/cmock/vendor/hardmock/test/unit/test_unit_before_after_test.rb +0 -452
  307. data/vendor/cmock/vendor/hardmock/test/unit/trapper_test.rb +0 -62
  308. data/vendor/cmock/vendor/hardmock/test/unit/verify_error_test.rb +0 -40
@@ -1,437 +1,437 @@
1
- require 'rubygems'
2
- require 'rake' # for ext() method
3
- require 'file_path_utils' # for class methods
4
- require 'defaults'
5
- require 'constants' # for Verbosity constants class & base file paths
6
-
7
-
8
-
9
- class ConfiguratorBuilder
10
-
11
- constructor :file_system_utils, :file_wrapper, :system_wrapper
12
-
13
-
14
- def build_global_constants(config)
15
- config.each_pair do |key, value|
16
- formatted_key = key.to_s.upcase
17
- # undefine global constant if it already exists
18
- Object.send(:remove_const, formatted_key.to_sym) if @system_wrapper.constants_include?(formatted_key)
19
- # create global constant
20
- Object.module_eval("#{formatted_key} = value")
21
- end
22
- end
23
-
24
-
25
- def build_accessor_methods(config, context)
26
- config.each_pair do |key, value|
27
- # fill configurator object with accessor methods
28
- eval("def #{key.to_s.downcase}() return @project_config_hash[:#{key.to_s}] end", context)
29
- end
30
- end
31
-
32
-
33
- # create a flattened hash from the original configuration structure
34
- def flattenify(config)
35
- new_hash = {}
36
-
37
- config.each_key do | parent |
38
-
39
- # gracefully handle empty top-level entries
40
- next if (config[parent].nil?)
41
-
42
- case config[parent]
43
- when Array
44
- config[parent].each do |hash|
45
- key = "#{parent.to_s.downcase}_#{hash.keys[0].to_s.downcase}".to_sym
46
- new_hash[key] = hash[hash.keys[0]]
47
- end
48
- when Hash
49
- config[parent].each_pair do | child, value |
50
- key = "#{parent.to_s.downcase}_#{child.to_s.downcase}".to_sym
51
- new_hash[key] = value
52
- end
53
- # handle entries with no children, only values
54
- else
55
- new_hash["#{parent.to_s.downcase}".to_sym] = config[parent]
56
- end
57
-
58
- end
59
-
60
- return new_hash
61
- end
62
-
63
-
64
- def populate_defaults(config, defaults)
65
- defaults.keys.sort.each do |section|
66
- defaults[section].keys.sort.each do |entry|
67
- config[section][entry] = defaults[section][entry].deep_clone if (config[section].nil? or config[section][entry].nil?)
68
- end
69
- end
70
- end
71
-
72
-
73
- def clean(in_hash)
74
- # ensure that include files inserted into test runners have file extensions & proper ones at that
75
- in_hash[:test_runner_includes].map!{|include| include.ext(in_hash[:extension_header])}
76
- end
77
-
78
-
79
- def set_build_paths(in_hash)
80
- out_hash = {}
81
-
82
- project_build_artifacts_root = File.join(in_hash[:project_build_root], 'artifacts')
83
- project_build_tests_root = File.join(in_hash[:project_build_root], TESTS_BASE_PATH)
84
- project_build_release_root = File.join(in_hash[:project_build_root], RELEASE_BASE_PATH)
85
-
86
- paths = [
87
- [:project_build_artifacts_root, project_build_artifacts_root, true ],
88
- [:project_build_tests_root, project_build_tests_root, true ],
89
- [:project_build_release_root, project_build_release_root, in_hash[:project_release_build] ],
90
-
91
- [:project_test_artifacts_path, File.join(project_build_artifacts_root, TESTS_BASE_PATH), true ],
92
- [:project_test_runners_path, File.join(project_build_tests_root, 'runners'), true ],
93
- [:project_test_results_path, File.join(project_build_tests_root, 'results'), true ],
94
- [:project_test_build_output_path, File.join(project_build_tests_root, 'out'), true ],
95
- [:project_test_build_cache_path, File.join(project_build_tests_root, 'cache'), true ],
96
- [:project_test_dependencies_path, File.join(project_build_tests_root, 'dependencies'), true ],
97
-
98
- [:project_release_artifacts_path, File.join(project_build_artifacts_root, RELEASE_BASE_PATH), in_hash[:project_release_build] ],
99
- [:project_release_build_cache_path, File.join(project_build_release_root, 'cache'), in_hash[:project_release_build] ],
100
- [:project_release_build_output_path, File.join(project_build_release_root, 'out'), in_hash[:project_release_build] ],
101
- [:project_release_build_output_asm_path, File.join(project_build_release_root, 'out', 'asm'), in_hash[:project_release_build] ],
102
- [:project_release_build_output_c_path, File.join(project_build_release_root, 'out', 'c'), in_hash[:project_release_build] ],
103
- [:project_release_dependencies_path, File.join(project_build_release_root, 'dependencies'), in_hash[:project_release_build] ],
104
-
105
- [:project_log_path, File.join(in_hash[:project_build_root], 'logs'), true ],
106
- [:project_temp_path, File.join(in_hash[:project_build_root], 'temp'), true ],
107
-
108
- [:project_test_preprocess_includes_path, File.join(project_build_tests_root, 'preprocess/includes'), in_hash[:project_use_test_preprocessor] ],
109
- [:project_test_preprocess_files_path, File.join(project_build_tests_root, 'preprocess/files'), in_hash[:project_use_test_preprocessor] ],
110
- ]
111
-
112
- out_hash[:project_build_paths] = []
113
-
114
- # fetch already set mock path
115
- out_hash[:project_build_paths] << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
116
-
117
- paths.each do |path|
118
- build_path_name = path[0]
119
- build_path = path[1]
120
- build_path_add_condition = path[2]
121
-
122
- # insert path into build paths if associated with true condition
123
- out_hash[:project_build_paths] << build_path if build_path_add_condition
124
- # set path symbol name and path for each entry in paths array
125
- out_hash[build_path_name] = build_path
126
- end
127
-
128
- return out_hash
129
- end
130
-
131
-
132
- def set_force_build_filepaths(in_hash)
133
- out_hash = {}
134
-
135
- out_hash[:project_test_force_rebuild_filepath] = File.join( in_hash[:project_test_dependencies_path], 'force_build' )
136
- out_hash[:project_release_force_rebuild_filepath] = File.join( in_hash[:project_release_dependencies_path], 'force_build' ) if (in_hash[:project_release_build])
137
-
138
- return out_hash
139
- end
140
-
141
-
142
- def set_rakefile_components(in_hash)
143
- out_hash = {
144
- :project_rakefile_component_files =>
145
- [File.join(CEEDLING_LIB, 'tasks_base.rake'),
146
- File.join(CEEDLING_LIB, 'tasks_filesystem.rake'),
147
- File.join(CEEDLING_LIB, 'tasks_tests.rake'),
148
- File.join(CEEDLING_LIB, 'tasks_vendor.rake'),
149
- File.join(CEEDLING_LIB, 'rules_tests.rake')]}
150
-
151
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_cmock.rake') if (in_hash[:project_use_mocks])
152
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_preprocess.rake') if (in_hash[:project_use_test_preprocessor])
153
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
154
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'tasks_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
155
-
156
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
157
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'rules_release.rake') if (in_hash[:project_release_build])
158
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'tasks_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
159
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'tasks_release.rake') if (in_hash[:project_release_build])
160
-
161
- return out_hash
162
- end
163
-
164
-
165
- def set_library_build_info_filepaths(hash)
166
-
167
- # Notes:
168
- # - Dependency on a change to our input configuration hash is handled elsewhere as it is
169
- # dynamically formed during ceedling's execution
170
- # - Compiled vendor dependencies like cmock.o, unity.o, cexception.o are handled below;
171
- # here we're interested only in ceedling-based code generation dependencies
172
-
173
- ceedling_build_info_filepath = File.join(CEEDLING_RELEASE, 'build.info')
174
- cmock_build_info_filepath = FilePathUtils::form_ceedling_vendor_path('cmock/release', 'build.info')
175
-
176
- out_hash = {
177
- :ceedling_build_info_filepath => ceedling_build_info_filepath,
178
- :cmock_build_info_filepath => cmock_build_info_filepath
179
- }
180
-
181
- return out_hash
182
- end
183
-
184
-
185
- def set_release_target(in_hash)
186
- return {} if (not in_hash[:project_release_build])
187
-
188
- release_target_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_executable])) : in_hash[:release_build_output])
189
- release_map_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_map])) : in_hash[:release_build_output].ext(in_hash[:extension_map]))
190
-
191
- return {
192
- # tempted to make a helper method in file_path_utils? stop right there, pal. you'll introduce a cyclical dependency
193
- :project_release_build_target => File.join(in_hash[:project_build_release_root], release_target_file),
194
- :project_release_build_map => File.join(in_hash[:project_build_release_root], release_map_file)
195
- }
196
- end
197
-
198
-
199
- def collect_project_options(in_hash)
200
- options = []
201
-
202
- in_hash[:project_options_paths].each do |path|
203
- options << @file_wrapper.directory_listing( File.join(path, '*.yml') )
204
- end
205
-
206
- return {
207
- :collection_project_options => options.flatten
208
- }
209
- end
210
-
211
-
212
- def expand_all_path_globs(in_hash)
213
- out_hash = {}
214
- path_keys = []
215
-
216
- in_hash.each_key do |key|
217
- next if (not key.to_s[0..4] == 'paths')
218
- path_keys << key
219
- end
220
-
221
- # sorted to provide assured order of traversal in test calls on mocks
222
- path_keys.sort.each do |key|
223
- out_hash["collection_#{key.to_s}".to_sym] = @file_system_utils.collect_paths( in_hash[key] )
224
- end
225
-
226
- return out_hash
227
- end
228
-
229
-
230
- def collect_source_and_include_paths(in_hash)
231
- return {
232
- :collection_paths_source_and_include =>
233
- ( in_hash[:collection_paths_source] +
234
- in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
235
- }
236
- end
237
-
238
-
239
- def collect_source_include_vendor_paths(in_hash)
240
- extra_paths = []
241
- extra_paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
242
-
243
- return {
244
- :collection_paths_source_include_vendor =>
245
- in_hash[:collection_paths_source_and_include] +
246
- extra_paths
247
- }
248
- end
249
-
250
-
251
- def collect_test_support_source_include_paths(in_hash)
252
- return {
253
- :collection_paths_test_support_source_include =>
254
- (in_hash[:collection_paths_test] +
255
- in_hash[:collection_paths_support] +
256
- in_hash[:collection_paths_source] +
257
- in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
258
- }
259
- end
260
-
261
-
262
- def collect_vendor_paths(in_hash)
263
- return {:collection_paths_vendor => get_vendor_paths(in_hash)}
264
- end
265
-
266
-
267
- def collect_test_support_source_include_vendor_paths(in_hash)
268
- return {
269
- :collection_paths_test_support_source_include_vendor =>
270
- in_hash[:collection_paths_test_support_source_include] +
271
- get_vendor_paths(in_hash)
272
- }
273
- end
274
-
275
-
276
- def collect_tests(in_hash)
277
- all_tests = @file_wrapper.instantiate_file_list
278
-
279
- in_hash[:collection_paths_test].each do |path|
280
- all_tests.include( File.join(path, "#{in_hash[:project_test_file_prefix]}*#{in_hash[:extension_source]}") )
281
- end
282
-
283
- @file_system_utils.revise_file_list( all_tests, in_hash[:files_test] )
284
-
285
- return {:collection_all_tests => all_tests}
286
- end
287
-
288
-
289
- def collect_assembly(in_hash)
290
- all_assembly = @file_wrapper.instantiate_file_list
291
-
292
- return {:collection_all_assembly => all_assembly} if (not in_hash[:release_build_use_assembly])
293
-
294
- in_hash[:collection_paths_source].each do |path|
295
- all_assembly.include( File.join(path, "*#{in_hash[:extension_assembly]}") )
296
- end
297
-
298
- @file_system_utils.revise_file_list( all_assembly, in_hash[:files_assembly] )
299
-
300
- return {:collection_all_assembly => all_assembly}
301
- end
302
-
303
-
304
- def collect_source(in_hash)
305
- all_source = @file_wrapper.instantiate_file_list
306
- in_hash[:collection_paths_source].each do |path|
307
- if File.exists?(path) and not File.directory?(path)
308
- all_source.include( path )
309
- else
310
- all_source.include( File.join(path, "*#{in_hash[:extension_source]}") )
311
- end
312
- end
313
- @file_system_utils.revise_file_list( all_source, in_hash[:files_source] )
314
-
315
- return {:collection_all_source => all_source}
316
- end
317
-
318
-
319
- def collect_headers(in_hash)
320
- all_headers = @file_wrapper.instantiate_file_list
321
-
322
- paths =
323
- in_hash[:collection_paths_test] +
324
- in_hash[:collection_paths_support] +
325
- in_hash[:collection_paths_source] +
326
- in_hash[:collection_paths_include]
327
-
328
- paths.each do |path|
329
- all_headers.include( File.join(path, "*#{in_hash[:extension_header]}") )
330
- end
331
-
332
- @file_system_utils.revise_file_list( all_headers, in_hash[:files_include] )
333
-
334
- return {:collection_all_headers => all_headers}
335
- end
336
-
337
-
338
- def collect_all_existing_compilation_input(in_hash)
339
- all_input = @file_wrapper.instantiate_file_list
340
-
341
- paths =
342
- in_hash[:collection_paths_test] +
343
- in_hash[:collection_paths_support] +
344
- in_hash[:collection_paths_source] +
345
- in_hash[:collection_paths_include] +
346
- [FilePathUtils::form_ceedling_vendor_path(UNITY_LIB_PATH)]
347
-
348
- paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
349
- paths << FilePathUtils::form_ceedling_vendor_path(CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
350
-
351
- paths.each do |path|
352
- all_input.include( File.join(path, "*#{in_hash[:extension_header]}") )
353
- if File.exists?(path) and not File.directory?(path)
354
- all_input.include( path )
355
- else
356
- all_input.include( File.join(path, "*#{in_hash[:extension_source]}") )
357
- end
358
- end
359
-
360
- @file_system_utils.revise_file_list( all_input, in_hash[:files_test] )
361
- @file_system_utils.revise_file_list( all_input, in_hash[:files_support] )
362
- @file_system_utils.revise_file_list( all_input, in_hash[:files_source] )
363
- @file_system_utils.revise_file_list( all_input, in_hash[:files_include] )
364
- # finding assembly files handled explicitly through other means
365
-
366
- return {:collection_all_existing_compilation_input => all_input}
367
- end
368
-
369
-
370
- def collect_test_and_vendor_defines(in_hash)
371
- test_defines = in_hash[:defines_test].clone
372
-
373
- test_defines.concat(in_hash[:unity_defines])
374
- test_defines.concat(in_hash[:cmock_defines]) if (in_hash[:project_use_mocks])
375
- test_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
376
-
377
- return {:collection_defines_test_and_vendor => test_defines}
378
- end
379
-
380
-
381
- def collect_release_and_vendor_defines(in_hash)
382
- release_defines = in_hash[:defines_release].clone
383
-
384
- release_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
385
-
386
- return {:collection_defines_release_and_vendor => release_defines}
387
- end
388
-
389
-
390
- def collect_release_artifact_extra_link_objects(in_hash)
391
- objects = []
392
-
393
- # no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
394
- objects << CEXCEPTION_C_FILE.ext( in_hash[:extension_object] ) if (in_hash[:project_use_exceptions])
395
-
396
- return {:collection_release_artifact_extra_link_objects => objects}
397
- end
398
-
399
-
400
- def collect_test_fixture_extra_link_objects(in_hash)
401
- # Note: Symbols passed to compiler at command line can change Unity and CException behavior / configuration;
402
- # we also handle those dependencies elsewhere in compilation dependencies
403
-
404
- objects = [UNITY_C_FILE]
405
-
406
- # we don't include paths here because use of plugins or mixing different compilers may require different build paths
407
- objects << CEXCEPTION_C_FILE if (in_hash[:project_use_exceptions])
408
- objects << CMOCK_C_FILE if (in_hash[:project_use_mocks])
409
-
410
- # if we're using mocks & a unity helper is defined & that unity helper includes a source file component (not only a header of macros),
411
- # then link in the unity_helper object file too
412
- if ( in_hash[:project_use_mocks] and
413
- in_hash[:cmock_unity_helper] and
414
- @file_wrapper.exist?(in_hash[:cmock_unity_helper].ext(in_hash[:extension_source])) )
415
- objects << File.basename(in_hash[:cmock_unity_helper])
416
- end
417
-
418
- # no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
419
- objects.map! { |object| object.ext(in_hash[:extension_object]) }
420
-
421
- return { :collection_test_fixture_extra_link_objects => objects }
422
- end
423
-
424
-
425
- private
426
-
427
- def get_vendor_paths(in_hash)
428
- vendor_paths = []
429
- vendor_paths << FilePathUtils::form_ceedling_vendor_path(UNITY_LIB_PATH)
430
- vendor_paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
431
- vendor_paths << FilePathUtils::form_ceedling_vendor_path(CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
432
- vendor_paths << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
433
-
434
- return vendor_paths
435
- end
436
-
437
- end
1
+ require 'rubygems'
2
+ require 'rake' # for ext() method
3
+ require 'ceedling/file_path_utils' # for class methods
4
+ require 'ceedling/defaults'
5
+ require 'ceedling/constants' # for Verbosity constants class & base file paths
6
+
7
+
8
+
9
+ class ConfiguratorBuilder
10
+
11
+ constructor :file_system_utils, :file_wrapper, :system_wrapper
12
+
13
+
14
+ def build_global_constants(config)
15
+ config.each_pair do |key, value|
16
+ formatted_key = key.to_s.upcase
17
+ # undefine global constant if it already exists
18
+ Object.send(:remove_const, formatted_key.to_sym) if @system_wrapper.constants_include?(formatted_key)
19
+ # create global constant
20
+ Object.module_eval("#{formatted_key} = value")
21
+ end
22
+ end
23
+
24
+
25
+ def build_accessor_methods(config, context)
26
+ config.each_pair do |key, value|
27
+ # fill configurator object with accessor methods
28
+ eval("def #{key.to_s.downcase}() return @project_config_hash[:#{key.to_s}] end", context)
29
+ end
30
+ end
31
+
32
+
33
+ # create a flattened hash from the original configuration structure
34
+ def flattenify(config)
35
+ new_hash = {}
36
+
37
+ config.each_key do | parent |
38
+
39
+ # gracefully handle empty top-level entries
40
+ next if (config[parent].nil?)
41
+
42
+ case config[parent]
43
+ when Array
44
+ config[parent].each do |hash|
45
+ key = "#{parent.to_s.downcase}_#{hash.keys[0].to_s.downcase}".to_sym
46
+ new_hash[key] = hash[hash.keys[0]]
47
+ end
48
+ when Hash
49
+ config[parent].each_pair do | child, value |
50
+ key = "#{parent.to_s.downcase}_#{child.to_s.downcase}".to_sym
51
+ new_hash[key] = value
52
+ end
53
+ # handle entries with no children, only values
54
+ else
55
+ new_hash["#{parent.to_s.downcase}".to_sym] = config[parent]
56
+ end
57
+
58
+ end
59
+
60
+ return new_hash
61
+ end
62
+
63
+
64
+ def populate_defaults(config, defaults)
65
+ defaults.keys.sort.each do |section|
66
+ defaults[section].keys.sort.each do |entry|
67
+ config[section][entry] = defaults[section][entry].deep_clone if (config[section].nil? or config[section][entry].nil?)
68
+ end
69
+ end
70
+ end
71
+
72
+
73
+ def clean(in_hash)
74
+ # ensure that include files inserted into test runners have file extensions & proper ones at that
75
+ in_hash[:test_runner_includes].map!{|include| include.ext(in_hash[:extension_header])}
76
+ end
77
+
78
+
79
+ def set_build_paths(in_hash)
80
+ out_hash = {}
81
+
82
+ project_build_artifacts_root = File.join(in_hash[:project_build_root], 'artifacts')
83
+ project_build_tests_root = File.join(in_hash[:project_build_root], TESTS_BASE_PATH)
84
+ project_build_release_root = File.join(in_hash[:project_build_root], RELEASE_BASE_PATH)
85
+
86
+ paths = [
87
+ [:project_build_artifacts_root, project_build_artifacts_root, true ],
88
+ [:project_build_tests_root, project_build_tests_root, true ],
89
+ [:project_build_release_root, project_build_release_root, in_hash[:project_release_build] ],
90
+
91
+ [:project_test_artifacts_path, File.join(project_build_artifacts_root, TESTS_BASE_PATH), true ],
92
+ [:project_test_runners_path, File.join(project_build_tests_root, 'runners'), true ],
93
+ [:project_test_results_path, File.join(project_build_tests_root, 'results'), true ],
94
+ [:project_test_build_output_path, File.join(project_build_tests_root, 'out'), true ],
95
+ [:project_test_build_cache_path, File.join(project_build_tests_root, 'cache'), true ],
96
+ [:project_test_dependencies_path, File.join(project_build_tests_root, 'dependencies'), true ],
97
+
98
+ [:project_release_artifacts_path, File.join(project_build_artifacts_root, RELEASE_BASE_PATH), in_hash[:project_release_build] ],
99
+ [:project_release_build_cache_path, File.join(project_build_release_root, 'cache'), in_hash[:project_release_build] ],
100
+ [:project_release_build_output_path, File.join(project_build_release_root, 'out'), in_hash[:project_release_build] ],
101
+ [:project_release_build_output_asm_path, File.join(project_build_release_root, 'out', 'asm'), in_hash[:project_release_build] ],
102
+ [:project_release_build_output_c_path, File.join(project_build_release_root, 'out', 'c'), in_hash[:project_release_build] ],
103
+ [:project_release_dependencies_path, File.join(project_build_release_root, 'dependencies'), in_hash[:project_release_build] ],
104
+
105
+ [:project_log_path, File.join(in_hash[:project_build_root], 'logs'), true ],
106
+ [:project_temp_path, File.join(in_hash[:project_build_root], 'temp'), true ],
107
+
108
+ [:project_test_preprocess_includes_path, File.join(project_build_tests_root, 'preprocess/includes'), in_hash[:project_use_test_preprocessor] ],
109
+ [:project_test_preprocess_files_path, File.join(project_build_tests_root, 'preprocess/files'), in_hash[:project_use_test_preprocessor] ],
110
+ ]
111
+
112
+ out_hash[:project_build_paths] = []
113
+
114
+ # fetch already set mock path
115
+ out_hash[:project_build_paths] << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
116
+
117
+ paths.each do |path|
118
+ build_path_name = path[0]
119
+ build_path = path[1]
120
+ build_path_add_condition = path[2]
121
+
122
+ # insert path into build paths if associated with true condition
123
+ out_hash[:project_build_paths] << build_path if build_path_add_condition
124
+ # set path symbol name and path for each entry in paths array
125
+ out_hash[build_path_name] = build_path
126
+ end
127
+
128
+ return out_hash
129
+ end
130
+
131
+
132
+ def set_force_build_filepaths(in_hash)
133
+ out_hash = {}
134
+
135
+ out_hash[:project_test_force_rebuild_filepath] = File.join( in_hash[:project_test_dependencies_path], 'force_build' )
136
+ out_hash[:project_release_force_rebuild_filepath] = File.join( in_hash[:project_release_dependencies_path], 'force_build' ) if (in_hash[:project_release_build])
137
+
138
+ return out_hash
139
+ end
140
+
141
+
142
+ def set_rakefile_components(in_hash)
143
+ out_hash = {
144
+ :project_rakefile_component_files =>
145
+ [File.join(CEEDLING_LIB, 'ceedling', 'tasks_base.rake'),
146
+ File.join(CEEDLING_LIB, 'ceedling', 'tasks_filesystem.rake'),
147
+ File.join(CEEDLING_LIB, 'ceedling', 'tasks_tests.rake'),
148
+ File.join(CEEDLING_LIB, 'ceedling', 'tasks_vendor.rake'),
149
+ File.join(CEEDLING_LIB, 'ceedling', 'rules_tests.rake')]}
150
+
151
+ out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_cmock.rake') if (in_hash[:project_use_mocks])
152
+ out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_preprocess.rake') if (in_hash[:project_use_test_preprocessor])
153
+ out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
154
+ out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
155
+
156
+ out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
157
+ out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_release.rake') if (in_hash[:project_release_build])
158
+ out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
159
+ out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_release.rake') if (in_hash[:project_release_build])
160
+
161
+ return out_hash
162
+ end
163
+
164
+
165
+ def set_library_build_info_filepaths(hash)
166
+
167
+ # Notes:
168
+ # - Dependency on a change to our input configuration hash is handled elsewhere as it is
169
+ # dynamically formed during ceedling's execution
170
+ # - Compiled vendor dependencies like cmock.o, unity.o, cexception.o are handled below;
171
+ # here we're interested only in ceedling-based code generation dependencies
172
+
173
+ ceedling_build_info_filepath = File.join(CEEDLING_RELEASE, 'build.info')
174
+ cmock_build_info_filepath = FilePathUtils::form_ceedling_vendor_path('cmock/release', 'build.info')
175
+
176
+ out_hash = {
177
+ :ceedling_build_info_filepath => ceedling_build_info_filepath,
178
+ :cmock_build_info_filepath => cmock_build_info_filepath
179
+ }
180
+
181
+ return out_hash
182
+ end
183
+
184
+
185
+ def set_release_target(in_hash)
186
+ return {} if (not in_hash[:project_release_build])
187
+
188
+ release_target_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_executable])) : in_hash[:release_build_output])
189
+ release_map_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_map])) : in_hash[:release_build_output].ext(in_hash[:extension_map]))
190
+
191
+ return {
192
+ # tempted to make a helper method in file_path_utils? stop right there, pal. you'll introduce a cyclical dependency
193
+ :project_release_build_target => File.join(in_hash[:project_build_release_root], release_target_file),
194
+ :project_release_build_map => File.join(in_hash[:project_build_release_root], release_map_file)
195
+ }
196
+ end
197
+
198
+
199
+ def collect_project_options(in_hash)
200
+ options = []
201
+
202
+ in_hash[:project_options_paths].each do |path|
203
+ options << @file_wrapper.directory_listing( File.join(path, '*.yml') )
204
+ end
205
+
206
+ return {
207
+ :collection_project_options => options.flatten
208
+ }
209
+ end
210
+
211
+
212
+ def expand_all_path_globs(in_hash)
213
+ out_hash = {}
214
+ path_keys = []
215
+
216
+ in_hash.each_key do |key|
217
+ next if (not key.to_s[0..4] == 'paths')
218
+ path_keys << key
219
+ end
220
+
221
+ # sorted to provide assured order of traversal in test calls on mocks
222
+ path_keys.sort.each do |key|
223
+ out_hash["collection_#{key.to_s}".to_sym] = @file_system_utils.collect_paths( in_hash[key] )
224
+ end
225
+
226
+ return out_hash
227
+ end
228
+
229
+
230
+ def collect_source_and_include_paths(in_hash)
231
+ return {
232
+ :collection_paths_source_and_include =>
233
+ ( in_hash[:collection_paths_source] +
234
+ in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
235
+ }
236
+ end
237
+
238
+
239
+ def collect_source_include_vendor_paths(in_hash)
240
+ extra_paths = []
241
+ extra_paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
242
+
243
+ return {
244
+ :collection_paths_source_include_vendor =>
245
+ in_hash[:collection_paths_source_and_include] +
246
+ extra_paths
247
+ }
248
+ end
249
+
250
+
251
+ def collect_test_support_source_include_paths(in_hash)
252
+ return {
253
+ :collection_paths_test_support_source_include =>
254
+ (in_hash[:collection_paths_test] +
255
+ in_hash[:collection_paths_support] +
256
+ in_hash[:collection_paths_source] +
257
+ in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
258
+ }
259
+ end
260
+
261
+
262
+ def collect_vendor_paths(in_hash)
263
+ return {:collection_paths_vendor => get_vendor_paths(in_hash)}
264
+ end
265
+
266
+
267
+ def collect_test_support_source_include_vendor_paths(in_hash)
268
+ return {
269
+ :collection_paths_test_support_source_include_vendor =>
270
+ in_hash[:collection_paths_test_support_source_include] +
271
+ get_vendor_paths(in_hash)
272
+ }
273
+ end
274
+
275
+
276
+ def collect_tests(in_hash)
277
+ all_tests = @file_wrapper.instantiate_file_list
278
+
279
+ in_hash[:collection_paths_test].each do |path|
280
+ all_tests.include( File.join(path, "#{in_hash[:project_test_file_prefix]}*#{in_hash[:extension_source]}") )
281
+ end
282
+
283
+ @file_system_utils.revise_file_list( all_tests, in_hash[:files_test] )
284
+
285
+ return {:collection_all_tests => all_tests}
286
+ end
287
+
288
+
289
+ def collect_assembly(in_hash)
290
+ all_assembly = @file_wrapper.instantiate_file_list
291
+
292
+ return {:collection_all_assembly => all_assembly} if (not in_hash[:release_build_use_assembly])
293
+
294
+ in_hash[:collection_paths_source].each do |path|
295
+ all_assembly.include( File.join(path, "*#{in_hash[:extension_assembly]}") )
296
+ end
297
+
298
+ @file_system_utils.revise_file_list( all_assembly, in_hash[:files_assembly] )
299
+
300
+ return {:collection_all_assembly => all_assembly}
301
+ end
302
+
303
+
304
+ def collect_source(in_hash)
305
+ all_source = @file_wrapper.instantiate_file_list
306
+ in_hash[:collection_paths_source].each do |path|
307
+ if File.exists?(path) and not File.directory?(path)
308
+ all_source.include( path )
309
+ else
310
+ all_source.include( File.join(path, "*#{in_hash[:extension_source]}") )
311
+ end
312
+ end
313
+ @file_system_utils.revise_file_list( all_source, in_hash[:files_source] )
314
+
315
+ return {:collection_all_source => all_source}
316
+ end
317
+
318
+
319
+ def collect_headers(in_hash)
320
+ all_headers = @file_wrapper.instantiate_file_list
321
+
322
+ paths =
323
+ in_hash[:collection_paths_test] +
324
+ in_hash[:collection_paths_support] +
325
+ in_hash[:collection_paths_source] +
326
+ in_hash[:collection_paths_include]
327
+
328
+ paths.each do |path|
329
+ all_headers.include( File.join(path, "*#{in_hash[:extension_header]}") )
330
+ end
331
+
332
+ @file_system_utils.revise_file_list( all_headers, in_hash[:files_include] )
333
+
334
+ return {:collection_all_headers => all_headers}
335
+ end
336
+
337
+
338
+ def collect_all_existing_compilation_input(in_hash)
339
+ all_input = @file_wrapper.instantiate_file_list
340
+
341
+ paths =
342
+ in_hash[:collection_paths_test] +
343
+ in_hash[:collection_paths_support] +
344
+ in_hash[:collection_paths_source] +
345
+ in_hash[:collection_paths_include] +
346
+ [FilePathUtils::form_ceedling_vendor_path(UNITY_LIB_PATH)]
347
+
348
+ paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
349
+ paths << FilePathUtils::form_ceedling_vendor_path(CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
350
+
351
+ paths.each do |path|
352
+ all_input.include( File.join(path, "*#{in_hash[:extension_header]}") )
353
+ if File.exists?(path) and not File.directory?(path)
354
+ all_input.include( path )
355
+ else
356
+ all_input.include( File.join(path, "*#{in_hash[:extension_source]}") )
357
+ end
358
+ end
359
+
360
+ @file_system_utils.revise_file_list( all_input, in_hash[:files_test] )
361
+ @file_system_utils.revise_file_list( all_input, in_hash[:files_support] )
362
+ @file_system_utils.revise_file_list( all_input, in_hash[:files_source] )
363
+ @file_system_utils.revise_file_list( all_input, in_hash[:files_include] )
364
+ # finding assembly files handled explicitly through other means
365
+
366
+ return {:collection_all_existing_compilation_input => all_input}
367
+ end
368
+
369
+
370
+ def collect_test_and_vendor_defines(in_hash)
371
+ test_defines = in_hash[:defines_test].clone
372
+
373
+ test_defines.concat(in_hash[:unity_defines])
374
+ test_defines.concat(in_hash[:cmock_defines]) if (in_hash[:project_use_mocks])
375
+ test_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
376
+
377
+ return {:collection_defines_test_and_vendor => test_defines}
378
+ end
379
+
380
+
381
+ def collect_release_and_vendor_defines(in_hash)
382
+ release_defines = in_hash[:defines_release].clone
383
+
384
+ release_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
385
+
386
+ return {:collection_defines_release_and_vendor => release_defines}
387
+ end
388
+
389
+
390
+ def collect_release_artifact_extra_link_objects(in_hash)
391
+ objects = []
392
+
393
+ # no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
394
+ objects << CEXCEPTION_C_FILE.ext( in_hash[:extension_object] ) if (in_hash[:project_use_exceptions])
395
+
396
+ return {:collection_release_artifact_extra_link_objects => objects}
397
+ end
398
+
399
+
400
+ def collect_test_fixture_extra_link_objects(in_hash)
401
+ # Note: Symbols passed to compiler at command line can change Unity and CException behavior / configuration;
402
+ # we also handle those dependencies elsewhere in compilation dependencies
403
+
404
+ objects = [UNITY_C_FILE]
405
+
406
+ # we don't include paths here because use of plugins or mixing different compilers may require different build paths
407
+ objects << CEXCEPTION_C_FILE if (in_hash[:project_use_exceptions])
408
+ objects << CMOCK_C_FILE if (in_hash[:project_use_mocks])
409
+
410
+ # if we're using mocks & a unity helper is defined & that unity helper includes a source file component (not only a header of macros),
411
+ # then link in the unity_helper object file too
412
+ if ( in_hash[:project_use_mocks] and
413
+ in_hash[:cmock_unity_helper] and
414
+ @file_wrapper.exist?(in_hash[:cmock_unity_helper].ext(in_hash[:extension_source])) )
415
+ objects << File.basename(in_hash[:cmock_unity_helper])
416
+ end
417
+
418
+ # no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
419
+ objects.map! { |object| object.ext(in_hash[:extension_object]) }
420
+
421
+ return { :collection_test_fixture_extra_link_objects => objects }
422
+ end
423
+
424
+
425
+ private
426
+
427
+ def get_vendor_paths(in_hash)
428
+ vendor_paths = []
429
+ vendor_paths << FilePathUtils::form_ceedling_vendor_path(UNITY_LIB_PATH)
430
+ vendor_paths << FilePathUtils::form_ceedling_vendor_path(CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
431
+ vendor_paths << FilePathUtils::form_ceedling_vendor_path(CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
432
+ vendor_paths << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
433
+
434
+ return vendor_paths
435
+ end
436
+
437
+ end