ceedling 0.25.0 → 0.27.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 (434) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/project_as_gem.yml +13 -0
  4. data/assets/project_with_guts.yml +13 -0
  5. data/bin/ceedling +91 -67
  6. data/docs/CeedlingPacket.md +61 -23
  7. data/docs/CeedlingPacket.odt +0 -0
  8. data/docs/CeedlingPacket.pdf +0 -0
  9. data/docs/ThrowTheSwitchCodingStandard.md +207 -0
  10. data/examples/temp_sensor/test/TestTemperatureCalculator.c +4 -1
  11. data/lib/ceedling/configurator.rb +14 -1
  12. data/lib/ceedling/configurator_builder.rb +2 -1
  13. data/lib/ceedling/configurator_validator.rb +12 -3
  14. data/lib/ceedling/constants.rb +3 -1
  15. data/lib/ceedling/defaults.rb +12 -1
  16. data/lib/ceedling/file_finder.rb +3 -0
  17. data/lib/ceedling/file_path_utils.rb +1 -1
  18. data/lib/ceedling/file_wrapper.rb +4 -4
  19. data/lib/ceedling/generator.rb +12 -3
  20. data/lib/ceedling/preprocessinator_helper.rb +5 -5
  21. data/lib/ceedling/preprocessinator_includes_handler.rb +10 -1
  22. data/lib/ceedling/project_config_manager.rb +1 -2
  23. data/lib/ceedling/project_file_loader.rb +27 -9
  24. data/lib/ceedling/rakefile.rb +6 -6
  25. data/lib/ceedling/release_invoker.rb +21 -6
  26. data/lib/ceedling/rules_release.rake +9 -5
  27. data/lib/ceedling/rules_tests.rake +6 -1
  28. data/lib/ceedling/setupinator.rb +1 -0
  29. data/lib/ceedling/tasks_base.rake +3 -0
  30. data/lib/ceedling/tasks_filesystem.rake +10 -7
  31. data/lib/ceedling/tasks_release.rake +3 -1
  32. data/lib/ceedling/test_includes_extractor.rb +16 -12
  33. data/lib/ceedling/test_invoker.rb +40 -0
  34. data/lib/ceedling/version.rb +3 -3
  35. data/lib/ceedling/version.rb.erb +1 -1
  36. data/plugins/command_hooks/lib/command_hooks.rb +1 -1
  37. data/plugins/fake_function_framework/examples/fff_example/src/bar.h +1 -0
  38. data/plugins/fake_function_framework/examples/fff_example/src/event_processor.c +1 -0
  39. data/plugins/fake_function_framework/lib/fff_mock_generator.rb +4 -0
  40. data/plugins/fake_function_framework/spec/{fff_mock_generator_spec.rb → fff_mock_header_generator_spec.rb} +34 -194
  41. data/plugins/fake_function_framework/spec/fff_mock_source_generator_spec.rb +149 -0
  42. data/plugins/fake_function_framework/spec/header_generator.rb +51 -0
  43. data/plugins/junit_tests_report/lib/junit_tests_report.rb +115 -0
  44. data/plugins/subprojects/README.md +63 -0
  45. data/plugins/subprojects/config/defaults.yml +33 -0
  46. data/plugins/subprojects/lib/subprojects.rb +92 -0
  47. data/plugins/subprojects/subprojects.rake +78 -0
  48. data/spec/preprocessinator_includes_handler_spec.rb +15 -5
  49. data/spec/spec_helper.rb +2 -2
  50. data/spec/spec_system_helper.rb +49 -1
  51. data/spec/system/deployment_spec.rb +29 -0
  52. data/vendor/c_exception/README.md +8 -2
  53. data/vendor/c_exception/docs/{readme.txt → CException.md} +133 -102
  54. data/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -0
  55. data/vendor/c_exception/vendor/unity/README.md +19 -10
  56. data/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +67 -64
  57. data/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +20 -20
  58. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +149 -142
  59. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +234 -232
  60. data/vendor/c_exception/vendor/unity/auto/parse_output.rb +220 -0
  61. data/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +108 -120
  62. data/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +11 -9
  63. data/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +1 -3
  64. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +6 -2
  65. data/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +45 -57
  66. data/vendor/c_exception/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  67. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  68. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  69. data/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  70. data/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  71. data/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  72. data/vendor/c_exception/vendor/unity/examples/example_1/makefile +22 -17
  73. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +1 -1
  74. data/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +1 -1
  75. data/vendor/c_exception/vendor/unity/examples/example_2/makefile +16 -17
  76. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +15 -15
  77. data/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +93 -100
  78. data/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +4 -10
  79. data/vendor/c_exception/vendor/unity/examples/unity_config.h +14 -26
  80. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +12 -12
  81. data/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +87 -88
  82. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +15 -8
  83. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +6 -1
  84. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +3 -0
  85. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +1 -0
  86. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +1 -1
  87. data/vendor/c_exception/vendor/unity/src/unity.c +396 -330
  88. data/vendor/c_exception/vendor/unity/src/unity.h +50 -4
  89. data/vendor/c_exception/vendor/unity/src/unity_internals.h +119 -84
  90. data/vendor/c_exception/vendor/unity/test/Makefile +17 -17
  91. data/vendor/c_exception/vendor/unity/test/rakefile +63 -3
  92. data/vendor/c_exception/vendor/unity/test/rakefile_helper.rb +108 -105
  93. data/vendor/c_exception/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  94. data/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +0 -6
  95. data/vendor/c_exception/vendor/unity/test/targets/clang_strict.yml +1 -9
  96. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +2 -0
  97. data/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +2 -2
  98. data/vendor/c_exception/vendor/unity/test/tests/test_generate_test_runner.rb +5 -5
  99. data/vendor/c_exception/vendor/unity/test/tests/testunity.c +1338 -151
  100. data/vendor/cmock/README.md +10 -1
  101. data/vendor/cmock/config/test_environment.rb +7 -7
  102. data/vendor/cmock/docs/CMock_Summary.md +325 -128
  103. data/vendor/cmock/docs/ThrowTheSwitchCodingStandard.md +207 -0
  104. data/vendor/cmock/examples/make_example/Makefile +2 -2
  105. data/vendor/cmock/examples/temp_sensor/gcc.yml +5 -4
  106. data/vendor/cmock/examples/temp_sensor/iar_v4.yml +5 -4
  107. data/vendor/cmock/examples/temp_sensor/iar_v5.yml +5 -4
  108. data/vendor/cmock/examples/temp_sensor/rakefile.rb +11 -1
  109. data/vendor/cmock/examples/temp_sensor/rakefile_helper.rb +12 -10
  110. data/vendor/cmock/lib/cmock.rb +0 -3
  111. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +6 -2
  112. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +2 -1
  113. data/vendor/cmock/lib/cmock_header_parser.rb +5 -6
  114. data/vendor/cmock/release/version.info +1 -1
  115. data/vendor/cmock/scripts/create_makefile.rb +4 -2
  116. data/vendor/cmock/scripts/test_summary.rb +17 -9
  117. data/vendor/cmock/src/cmock.c +1 -0
  118. data/vendor/cmock/src/cmock.h +1 -1
  119. data/vendor/cmock/src/cmock_internals.h +14 -1
  120. data/vendor/cmock/test/c/TestCMockC.yml +4 -4
  121. data/vendor/cmock/test/c/TestCMockCDynamic.yml +4 -4
  122. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/SAM7_FLASH.mac +0 -0
  123. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/SAM7_RAM.mac +0 -0
  124. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/SAM7_SIM.mac +0 -0
  125. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/at91SAM7X256_FLASH.xcl +0 -0
  126. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/at91SAM7X256_RAM.xcl +0 -0
  127. data/vendor/cmock/{iar → test/iar}/iar_v4/Resource/ioat91sam7x256.ddf +0 -0
  128. data/vendor/cmock/{iar → test/iar}/iar_v4/cmock_demo.dep +0 -0
  129. data/vendor/cmock/{iar → test/iar}/iar_v4/cmock_demo.ewd +0 -0
  130. data/vendor/cmock/{iar → test/iar}/iar_v4/cmock_demo.ewp +0 -0
  131. data/vendor/cmock/{iar → test/iar}/iar_v4/cmock_demo.eww +0 -0
  132. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X-EK.h +0 -0
  133. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X256.inc +0 -0
  134. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X256.rdf +0 -0
  135. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X256.tcl +0 -0
  136. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/AT91SAM7X256_inc.h +0 -0
  137. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/ioat91sam7x256.h +0 -0
  138. data/vendor/cmock/{iar → test/iar}/iar_v4/incIAR/lib_AT91SAM7X256.h +0 -0
  139. data/vendor/cmock/{iar → test/iar}/iar_v4/settings/cmock_demo.cspy.bat +0 -0
  140. data/vendor/cmock/{iar → test/iar}/iar_v4/settings/cmock_demo.dbgdt +0 -0
  141. data/vendor/cmock/{iar → test/iar}/iar_v4/settings/cmock_demo.dni +0 -0
  142. data/vendor/cmock/{iar → test/iar}/iar_v4/settings/cmock_demo.wsdt +0 -0
  143. data/vendor/cmock/{iar → test/iar}/iar_v4/srcIAR/Cstartup.s79 +0 -0
  144. data/vendor/cmock/{iar → test/iar}/iar_v4/srcIAR/Cstartup_SAM7.c +0 -0
  145. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/SAM7_FLASH.mac +0 -0
  146. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/SAM7_RAM.mac +0 -0
  147. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/SAM7_SIM.mac +0 -0
  148. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/at91SAM7X256_FLASH.icf +0 -0
  149. data/vendor/cmock/{iar → test/iar}/iar_v5/Resource/at91SAM7X256_RAM.icf +0 -0
  150. data/vendor/cmock/{iar → test/iar}/iar_v5/cmock_demo.dep +0 -0
  151. data/vendor/cmock/{iar → test/iar}/iar_v5/cmock_demo.ewd +0 -0
  152. data/vendor/cmock/{iar → test/iar}/iar_v5/cmock_demo.ewp +0 -0
  153. data/vendor/cmock/{iar → test/iar}/iar_v5/cmock_demo.eww +0 -0
  154. data/vendor/cmock/{iar → test/iar}/iar_v5/incIAR/AT91SAM7X-EK.h +0 -0
  155. data/vendor/cmock/{iar → test/iar}/iar_v5/incIAR/AT91SAM7X256_inc.h +0 -0
  156. data/vendor/cmock/{iar → test/iar}/iar_v5/incIAR/lib_AT91SAM7X256.h +0 -0
  157. data/vendor/cmock/{iar → test/iar}/iar_v5/incIAR/project.h +0 -0
  158. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X.cspy.bat +0 -0
  159. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X.dbgdt +0 -0
  160. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X.dni +0 -0
  161. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X.wsdt +0 -0
  162. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/BasicInterrupt_SAM7X_FLASH_Debug.jlink +0 -0
  163. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo.cspy.bat +0 -0
  164. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo.dbgdt +0 -0
  165. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo.dni +0 -0
  166. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo.wsdt +0 -0
  167. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo_Binary.jlink +0 -0
  168. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo_FLASH_Debug.jlink +0 -0
  169. data/vendor/cmock/{iar → test/iar}/iar_v5/settings/cmock_demo_RAM_Debug.jlink +0 -0
  170. data/vendor/cmock/{iar → test/iar}/iar_v5/srcIAR/Cstartup.s +0 -0
  171. data/vendor/cmock/{iar → test/iar}/iar_v5/srcIAR/Cstartup_SAM7.c +0 -0
  172. data/vendor/cmock/{Rakefile → test/rakefile} +9 -9
  173. data/vendor/cmock/{rakefile_helper.rb → test/rakefile_helper.rb} +13 -13
  174. data/vendor/cmock/test/system/test_compilation/config.yml +4 -4
  175. data/vendor/cmock/test/system/test_interactions/parsing_challenges.yml +2 -0
  176. data/vendor/cmock/{targets → test/targets}/clang_strict.yml +11 -11
  177. data/vendor/cmock/{targets → test/targets}/gcc.yml +9 -9
  178. data/vendor/cmock/{targets → test/targets}/gcc_64.yml +9 -9
  179. data/vendor/cmock/{targets → test/targets}/gcc_tiny.yml +9 -9
  180. data/vendor/cmock/{targets → test/targets}/iar_arm_v4.yml +9 -9
  181. data/vendor/cmock/{targets → test/targets}/iar_arm_v5.yml +10 -10
  182. data/vendor/cmock/test/test_helper.rb +4 -8
  183. data/vendor/cmock/test/unit/cmock_config_test.rb +1 -1
  184. data/vendor/cmock/test/unit/cmock_file_writer_test.rb +1 -1
  185. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +1 -1
  186. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +1 -1
  187. data/vendor/cmock/test/unit/cmock_generator_plugin_callback_test.rb +3 -1
  188. data/vendor/cmock/test/unit/cmock_generator_plugin_cexception_test.rb +1 -1
  189. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +1 -1
  190. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_any_args_test.rb +1 -1
  191. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_b_test.rb +1 -1
  192. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +1 -1
  193. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_test.rb +1 -1
  194. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +1 -1
  195. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +1 -1
  196. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +15 -2
  197. data/vendor/cmock/test/unit/cmock_plugin_manager_test.rb +6 -10
  198. data/vendor/cmock/test/unit/cmock_unityhelper_parser_test.rb +1 -1
  199. data/vendor/cmock/vendor/c_exception/README.md +8 -2
  200. data/vendor/cmock/vendor/c_exception/docs/{readme.txt → CException.md} +133 -102
  201. data/vendor/cmock/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -0
  202. data/vendor/cmock/vendor/c_exception/vendor/unity/README.md +19 -10
  203. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_prompt.rb +67 -64
  204. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/colour_reporter.rb +20 -20
  205. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_module.rb +149 -142
  206. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +234 -232
  207. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parse_output.rb +220 -0
  208. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/stylize_as_junit.rb +108 -120
  209. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/test_file_filter.rb +11 -9
  210. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/type_sanitizer.rb +1 -3
  211. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.py +6 -2
  212. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/unity_test_summary.rb +45 -57
  213. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  214. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  215. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  216. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  217. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  218. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  219. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/makefile +22 -17
  220. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +1 -1
  221. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +1 -1
  222. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/makefile +16 -17
  223. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile.rb +15 -15
  224. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/rakefile_helper.rb +93 -100
  225. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_3/readme.txt +4 -10
  226. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/unity_config.h +14 -26
  227. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile.rb +12 -12
  228. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/rakefile_helper.rb +87 -88
  229. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +15 -8
  230. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +6 -1
  231. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +3 -0
  232. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +1 -0
  233. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +1 -1
  234. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +396 -330
  235. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.h +50 -4
  236. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity_internals.h +119 -84
  237. data/vendor/cmock/vendor/c_exception/vendor/unity/test/Makefile +17 -17
  238. data/vendor/cmock/vendor/c_exception/vendor/unity/test/rakefile +63 -3
  239. data/vendor/cmock/vendor/c_exception/vendor/unity/test/rakefile_helper.rb +108 -105
  240. data/vendor/cmock/vendor/c_exception/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  241. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/clang_file.yml +0 -6
  242. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/clang_strict.yml +1 -9
  243. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +2 -0
  244. data/vendor/cmock/vendor/c_exception/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +2 -2
  245. data/vendor/cmock/vendor/c_exception/vendor/unity/test/tests/test_generate_test_runner.rb +5 -5
  246. data/vendor/cmock/vendor/c_exception/vendor/unity/test/tests/testunity.c +1338 -151
  247. data/vendor/cmock/vendor/unity/README.md +19 -10
  248. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +67 -64
  249. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +20 -20
  250. data/vendor/cmock/vendor/unity/auto/generate_module.rb +149 -142
  251. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +234 -232
  252. data/vendor/cmock/vendor/unity/auto/parse_output.rb +220 -0
  253. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +108 -120
  254. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +11 -9
  255. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +1 -3
  256. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +6 -2
  257. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +45 -57
  258. data/vendor/cmock/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  259. data/vendor/cmock/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  260. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  261. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  262. data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  263. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  264. data/vendor/cmock/vendor/unity/examples/example_1/makefile +22 -17
  265. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +1 -1
  266. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +1 -1
  267. data/vendor/cmock/vendor/unity/examples/example_2/makefile +16 -17
  268. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +15 -15
  269. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +93 -100
  270. data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +4 -10
  271. data/vendor/cmock/vendor/unity/examples/unity_config.h +14 -26
  272. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +12 -12
  273. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +87 -88
  274. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +15 -8
  275. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +6 -1
  276. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +3 -0
  277. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +1 -0
  278. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +1 -1
  279. data/vendor/cmock/vendor/unity/release/version.info +1 -1
  280. data/vendor/cmock/vendor/unity/src/unity.c +396 -330
  281. data/vendor/cmock/vendor/unity/src/unity.h +50 -4
  282. data/vendor/cmock/vendor/unity/src/unity_internals.h +119 -84
  283. data/vendor/cmock/vendor/unity/test/Makefile +17 -17
  284. data/vendor/cmock/vendor/unity/test/rakefile +63 -3
  285. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +108 -105
  286. data/vendor/cmock/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  287. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +0 -6
  288. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +1 -9
  289. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +2 -0
  290. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +2 -2
  291. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +5 -5
  292. data/vendor/cmock/vendor/unity/test/tests/testunity.c +1338 -151
  293. data/vendor/deep_merge/Rakefile +1 -1
  294. data/vendor/unity/README.md +19 -10
  295. data/vendor/unity/auto/colour_prompt.rb +67 -64
  296. data/vendor/unity/auto/colour_reporter.rb +20 -20
  297. data/vendor/unity/auto/generate_module.rb +149 -142
  298. data/vendor/unity/auto/generate_test_runner.rb +234 -232
  299. data/vendor/unity/auto/parse_output.rb +220 -0
  300. data/vendor/unity/auto/stylize_as_junit.rb +108 -120
  301. data/vendor/unity/auto/test_file_filter.rb +11 -9
  302. data/vendor/unity/auto/type_sanitizer.rb +1 -3
  303. data/vendor/unity/auto/unity_test_summary.py +6 -2
  304. data/vendor/unity/auto/unity_test_summary.rb +45 -57
  305. data/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +207 -0
  306. data/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  307. data/vendor/unity/docs/UnityAssertionsReference.md +716 -0
  308. data/vendor/unity/docs/UnityConfigurationGuide.md +398 -0
  309. data/vendor/unity/docs/UnityGettingStartedGuide.md +191 -0
  310. data/vendor/unity/docs/UnityHelperScriptsGuide.md +242 -0
  311. data/vendor/unity/examples/example_1/makefile +22 -17
  312. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +1 -1
  313. data/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +1 -1
  314. data/vendor/unity/examples/example_2/makefile +16 -17
  315. data/vendor/unity/examples/example_3/rakefile.rb +15 -15
  316. data/vendor/unity/examples/example_3/rakefile_helper.rb +93 -100
  317. data/vendor/unity/examples/example_3/readme.txt +4 -10
  318. data/vendor/unity/examples/unity_config.h +14 -26
  319. data/vendor/unity/extras/fixture/rakefile.rb +12 -12
  320. data/vendor/unity/extras/fixture/rakefile_helper.rb +87 -88
  321. data/vendor/unity/extras/fixture/src/unity_fixture.c +15 -8
  322. data/vendor/unity/extras/fixture/src/unity_fixture.h +6 -1
  323. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +3 -0
  324. data/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +1 -0
  325. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +1 -1
  326. data/vendor/unity/release/version.info +1 -1
  327. data/vendor/unity/src/unity.c +396 -330
  328. data/vendor/unity/src/unity.h +50 -4
  329. data/vendor/unity/src/unity_internals.h +119 -84
  330. data/vendor/unity/test/Makefile +17 -17
  331. data/vendor/unity/test/rakefile +63 -3
  332. data/vendor/unity/test/rakefile_helper.rb +108 -105
  333. data/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  334. data/vendor/unity/test/targets/clang_file.yml +0 -6
  335. data/vendor/unity/test/targets/clang_strict.yml +1 -9
  336. data/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +2 -0
  337. data/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +2 -2
  338. data/vendor/unity/test/tests/test_generate_test_runner.rb +5 -5
  339. data/vendor/unity/test/tests/testunity.c +1338 -151
  340. metadata +102 -157
  341. data/test_graveyard/integration/paths.yml +0 -17
  342. data/test_graveyard/integration/paths_test.rb +0 -80
  343. data/test_graveyard/integration/rake_rules_aux_dependencies_test.rb +0 -75
  344. data/test_graveyard/integration/rake_rules_cmock_test.rb +0 -74
  345. data/test_graveyard/integration/rake_rules_preprocess_test.rb +0 -178
  346. data/test_graveyard/integration/rake_rules_test.rb +0 -268
  347. data/test_graveyard/integration/rake_tasks_test.rb +0 -103
  348. data/test_graveyard/integration_test_helper.rb +0 -34
  349. data/test_graveyard/rakefile_rules.rb +0 -10
  350. data/test_graveyard/rakefile_rules_aux_dependencies.rb +0 -10
  351. data/test_graveyard/rakefile_rules_cmock.rb +0 -10
  352. data/test_graveyard/rakefile_rules_preprocess.rb +0 -10
  353. data/test_graveyard/rakefile_tasks.rb +0 -10
  354. data/test_graveyard/system/file_system_dependencies.yml +0 -20
  355. data/test_graveyard/system/file_system_kitchen_sink.yml +0 -20
  356. data/test_graveyard/system/file_system_mocks.yml +0 -20
  357. data/test_graveyard/system/file_system_preprocess.yml +0 -20
  358. data/test_graveyard/system/file_system_simple.yml +0 -20
  359. data/test_graveyard/system/file_system_test.rb +0 -78
  360. data/test_graveyard/system/mocks/include/a_file.h +0 -2
  361. data/test_graveyard/system/mocks/include/other_stuff.h +0 -2
  362. data/test_graveyard/system/mocks/include/stuff.h +0 -3
  363. data/test_graveyard/system/mocks/source/a_file.c +0 -9
  364. data/test_graveyard/system/mocks/test/test_a_file.c +0 -41
  365. data/test_graveyard/system/mocks/test/test_no_file.c +0 -14
  366. data/test_graveyard/system/project_mocks.yml +0 -43
  367. data/test_graveyard/system/project_mocks_test.rb +0 -38
  368. data/test_graveyard/system/project_simple.yml +0 -36
  369. data/test_graveyard/system/project_simple_test.rb +0 -39
  370. data/test_graveyard/system/rule_mocks_test.rb +0 -44
  371. data/test_graveyard/system/rule_runners_test.rb +0 -44
  372. data/test_graveyard/system/simple/include/other_stuff.h +0 -2
  373. data/test_graveyard/system/simple/include/stuff.h +0 -3
  374. data/test_graveyard/system/simple/source/other_stuff.c +0 -6
  375. data/test_graveyard/system/simple/source/stuff.c +0 -7
  376. data/test_graveyard/system/simple/test/test_other_stuff.c +0 -30
  377. data/test_graveyard/system/simple/test/test_stuff.c +0 -51
  378. data/test_graveyard/system_test_helper.rb +0 -73
  379. data/test_graveyard/test_helper.rb +0 -93
  380. data/test_graveyard/unit/busted/configurator_builder_test.rb +0 -569
  381. data/test_graveyard/unit/busted/configurator_helper_test.rb +0 -234
  382. data/test_graveyard/unit/busted/configurator_test.rb +0 -232
  383. data/test_graveyard/unit/busted/configurator_validator_test.rb +0 -169
  384. data/test_graveyard/unit/busted/deep_merge_fix_test.rb +0 -55
  385. data/test_graveyard/unit/busted/dependinator_test.rb +0 -129
  386. data/test_graveyard/unit/busted/file_finder_helper_test.rb +0 -45
  387. data/test_graveyard/unit/busted/file_finder_test.rb +0 -114
  388. data/test_graveyard/unit/busted/file_path_utils_test.rb +0 -97
  389. data/test_graveyard/unit/busted/file_system_utils_test.rb +0 -21
  390. data/test_graveyard/unit/busted/generator_test.rb +0 -187
  391. data/test_graveyard/unit/busted/generator_test_results_test.rb +0 -129
  392. data/test_graveyard/unit/busted/generator_test_runner_test.rb +0 -475
  393. data/test_graveyard/unit/busted/preprocessinator_file_handler_test.rb +0 -39
  394. data/test_graveyard/unit/busted/preprocessinator_helper_test.rb +0 -156
  395. data/test_graveyard/unit/busted/preprocessinator_includes_handler_test.rb +0 -93
  396. data/test_graveyard/unit/busted/preprocessinator_test.rb +0 -57
  397. data/test_graveyard/unit/busted/project_file_loader_test.rb +0 -142
  398. data/test_graveyard/unit/busted/setupinator_test.rb +0 -45
  399. data/test_graveyard/unit/busted/streaminator_test.rb +0 -49
  400. data/test_graveyard/unit/busted/task_invoker_test.rb +0 -69
  401. data/test_graveyard/unit/busted/test_includes_extractor_test.rb +0 -111
  402. data/test_graveyard/unit/busted/test_invoker_helper_test.rb +0 -62
  403. data/test_graveyard/unit/busted/test_invoker_test.rb +0 -47
  404. data/test_graveyard/unit/busted/tool_executor_helper_test.rb +0 -100
  405. data/test_graveyard/unit/busted/tool_executor_test.rb +0 -351
  406. data/test_graveyard/unit/busted/verbosinator_test.rb +0 -65
  407. data/test_graveyard/unit/preprocessinator_extractor_test.rb +0 -731
  408. data/test_graveyard/unit_test_helper.rb +0 -16
  409. data/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  410. data/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  411. data/vendor/c_exception/vendor/unity/auto/parseOutput.rb +0 -191
  412. data/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.pdf +0 -0
  413. data/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.pdf +0 -0
  414. data/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.pdf +0 -0
  415. data/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.pdf +0 -0
  416. data/vendor/cmock/docs/CMock Summary.odt +0 -0
  417. data/vendor/cmock/docs/CMock Summary.pdf +0 -0
  418. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
  419. data/vendor/cmock/vendor/c_exception/docs/CExceptionSummary.pdf +0 -0
  420. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/parseOutput.rb +0 -191
  421. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityAssertionsReference.pdf +0 -0
  422. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityConfigurationGuide.pdf +0 -0
  423. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityGettingStartedGuide.pdf +0 -0
  424. data/vendor/cmock/vendor/c_exception/vendor/unity/docs/UnityHelperScriptsGuide.pdf +0 -0
  425. data/vendor/cmock/vendor/unity/auto/parseOutput.rb +0 -191
  426. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.pdf +0 -0
  427. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.pdf +0 -0
  428. data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.pdf +0 -0
  429. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.pdf +0 -0
  430. data/vendor/unity/auto/parseOutput.rb +0 -191
  431. data/vendor/unity/docs/UnityAssertionsReference.pdf +0 -0
  432. data/vendor/unity/docs/UnityConfigurationGuide.pdf +0 -0
  433. data/vendor/unity/docs/UnityGettingStartedGuide.pdf +0 -0
  434. data/vendor/unity/docs/UnityHelperScriptsGuide.pdf +0 -0
@@ -4,75 +4,70 @@
4
4
  # [Released under MIT License. Please refer to license.txt for details]
5
5
  # ==========================================
6
6
 
7
- $QUICK_RUBY_VERSION = RUBY_VERSION.split('.').inject(0){|vv,v| vv * 100 + v.to_i }
8
- File.expand_path(File.join(File.dirname(__FILE__),'colour_prompt'))
7
+ File.expand_path(File.join(File.dirname(__FILE__), 'colour_prompt'))
9
8
 
10
9
  class UnityTestRunnerGenerator
11
-
12
10
  def initialize(options = nil)
13
11
  @options = UnityTestRunnerGenerator.default_options
14
- case(options)
15
- when NilClass then @options
16
- when String then @options.merge!(UnityTestRunnerGenerator.grab_config(options))
17
- when Hash then @options.merge!(options)
18
- else raise "If you specify arguments, it should be a filename or a hash of options"
12
+ case options
13
+ when NilClass then @options
14
+ when String then @options.merge!(UnityTestRunnerGenerator.grab_config(options))
15
+ when Hash then @options.merge!(options)
16
+ else raise 'If you specify arguments, it should be a filename or a hash of options'
19
17
  end
20
18
  require "#{File.expand_path(File.dirname(__FILE__))}/type_sanitizer"
21
19
  end
22
20
 
23
21
  def self.default_options
24
22
  {
25
- :includes => [],
26
- :defines => [],
27
- :plugins => [],
28
- :framework => :unity,
29
- :test_prefix => "test|spec|should",
30
- :setup_name => "setUp",
31
- :teardown_name => "tearDown",
32
- :main_name => "main", #set to :auto to automatically generate each time
33
- :main_export_decl => "",
34
- :cmdline_args => false,
35
- :use_param_tests => false,
23
+ includes: [],
24
+ defines: [],
25
+ plugins: [],
26
+ framework: :unity,
27
+ test_prefix: 'test|spec|should',
28
+ mock_prefix: 'Mock',
29
+ setup_name: 'setUp',
30
+ teardown_name: 'tearDown',
31
+ main_name: 'main', # set to :auto to automatically generate each time
32
+ main_export_decl: '',
33
+ cmdline_args: false,
34
+ use_param_tests: false
36
35
  }
37
36
  end
38
37
 
39
38
  def self.grab_config(config_file)
40
- options = self.default_options
41
- unless (config_file.nil? or config_file.empty?)
39
+ options = default_options
40
+ unless config_file.nil? || config_file.empty?
42
41
  require 'yaml'
43
42
  yaml_guts = YAML.load_file(config_file)
44
43
  options.merge!(yaml_guts[:unity] || yaml_guts[:cmock])
45
44
  raise "No :unity or :cmock section found in #{config_file}" unless options
46
45
  end
47
- return(options)
46
+ options
48
47
  end
49
48
 
50
- def run(input_file, output_file, options=nil)
51
- tests = []
52
- testfile_includes = []
53
- used_mocks = []
54
-
49
+ def run(input_file, output_file, options = nil)
55
50
  @options.merge!(options) unless options.nil?
56
- module_name = File.basename(input_file)
57
51
 
58
- #pull required data from source file
52
+ # pull required data from source file
59
53
  source = File.read(input_file)
60
- source = source.force_encoding("ISO-8859-1").encode("utf-8", :replace => nil) if ($QUICK_RUBY_VERSION > 10900)
54
+ source = source.force_encoding('ISO-8859-1').encode('utf-8', replace: nil)
61
55
  tests = find_tests(source)
62
56
  headers = find_includes(source)
63
57
  testfile_includes = (headers[:local] + headers[:system])
64
58
  used_mocks = find_mocks(testfile_includes)
65
59
  testfile_includes = (testfile_includes - used_mocks)
66
- testfile_includes.delete_if{|inc| inc =~ /(unity|cmock)/}
60
+ testfile_includes.delete_if { |inc| inc =~ /(unity|cmock)/ }
67
61
 
68
- #build runner file
62
+ # build runner file
69
63
  generate(input_file, output_file, tests, used_mocks, testfile_includes)
70
64
 
71
- #determine which files were used to return them
65
+ # determine which files were used to return them
72
66
  all_files_used = [input_file, output_file]
73
- all_files_used += testfile_includes.map {|filename| filename + '.c'} unless testfile_includes.empty?
67
+ all_files_used += testfile_includes.map { |filename| filename + '.c' } unless testfile_includes.empty?
74
68
  all_files_used += @options[:includes] unless @options[:includes].empty?
75
- return all_files_used.uniq
69
+ all_files_used += headers[:linkonly] unless headers[:linkonly].empty?
70
+ all_files_used.uniq
76
71
  end
77
72
 
78
73
  def generate(input_file, output_file, tests, used_mocks, testfile_includes)
@@ -80,15 +75,16 @@ class UnityTestRunnerGenerator
80
75
  create_header(output, used_mocks, testfile_includes)
81
76
  create_externs(output, tests, used_mocks)
82
77
  create_mock_management(output, used_mocks)
83
- create_suite_setup_and_teardown(output)
78
+ create_suite_setup(output)
79
+ create_suite_teardown(output)
84
80
  create_reset(output, used_mocks)
85
81
  create_main(output, input_file, tests, used_mocks)
86
82
  end
87
83
 
88
- if (@options[:header_file] && !@options[:header_file].empty?)
89
- File.open(@options[:header_file], 'w') do |output|
90
- create_h_file(output, @options[:header_file], tests, testfile_includes, used_mocks)
91
- end
84
+ return unless @options[:header_file] && !@options[:header_file].empty?
85
+
86
+ File.open(@options[:header_file], 'w') do |output|
87
+ create_h_file(output, @options[:header_file], tests, testfile_includes, used_mocks)
92
88
  end
93
89
  end
94
90
 
@@ -96,103 +92,102 @@ class UnityTestRunnerGenerator
96
92
  tests_and_line_numbers = []
97
93
 
98
94
  source_scrubbed = source.clone
99
- source_scrubbed = source_scrubbed.gsub(/"[^"\n]*"/, '') # remove things in strings
95
+ source_scrubbed = source_scrubbed.gsub(/"[^"\n]*"/, '') # remove things in strings
100
96
  source_scrubbed = source_scrubbed.gsub(/\/\/.*$/, '') # remove line comments
101
97
  source_scrubbed = source_scrubbed.gsub(/\/\*.*?\*\//m, '') # remove block comments
102
98
  lines = source_scrubbed.split(/(^\s*\#.*$) # Treat preprocessor directives as a logical line
103
99
  | (;|\{|\}) /x) # Match ;, {, and } as end of lines
104
100
 
105
- lines.each_with_index do |line, index|
106
- #find tests
107
- if line =~ /^((?:\s*TEST_CASE\s*\(.*?\)\s*)*)\s*void\s+((?:#{@options[:test_prefix]}).*)\s*\(\s*(.*)\s*\)/
108
- arguments = $1
109
- name = $2
110
- call = $3
111
- params = $4
112
- args = nil
113
- if (@options[:use_param_tests] and !arguments.empty?)
114
- args = []
115
- arguments.scan(/\s*TEST_CASE\s*\((.*)\)\s*$/) {|a| args << a[0]}
116
- end
117
- tests_and_line_numbers << { :test => name, :args => args, :call => call, :params => params, :line_number => 0 }
101
+ lines.each_with_index do |line, _index|
102
+ # find tests
103
+ next unless line =~ /^((?:\s*TEST_CASE\s*\(.*?\)\s*)*)\s*void\s+((?:#{@options[:test_prefix]}).*)\s*\(\s*(.*)\s*\)/
104
+ arguments = Regexp.last_match(1)
105
+ name = Regexp.last_match(2)
106
+ call = Regexp.last_match(3)
107
+ params = Regexp.last_match(4)
108
+ args = nil
109
+ if @options[:use_param_tests] && !arguments.empty?
110
+ args = []
111
+ arguments.scan(/\s*TEST_CASE\s*\((.*)\)\s*$/) { |a| args << a[0] }
118
112
  end
113
+ tests_and_line_numbers << { test: name, args: args, call: call, params: params, line_number: 0 }
119
114
  end
120
- tests_and_line_numbers.uniq! {|v| v[:test] }
115
+ tests_and_line_numbers.uniq! { |v| v[:test] }
121
116
 
122
- #determine line numbers and create tests to run
117
+ # determine line numbers and create tests to run
123
118
  source_lines = source.split("\n")
124
- source_index = 0;
119
+ source_index = 0
125
120
  tests_and_line_numbers.size.times do |i|
126
121
  source_lines[source_index..-1].each_with_index do |line, index|
127
- if (line =~ /#{tests_and_line_numbers[i][:test]}/)
128
- source_index += index
129
- tests_and_line_numbers[i][:line_number] = source_index + 1
130
- break
131
- end
122
+ next unless line =~ /#{tests_and_line_numbers[i][:test]}/
123
+ source_index += index
124
+ tests_and_line_numbers[i][:line_number] = source_index + 1
125
+ break
132
126
  end
133
127
  end
134
128
 
135
- return tests_and_line_numbers
129
+ tests_and_line_numbers
136
130
  end
137
131
 
138
132
  def find_includes(source)
139
-
140
- #remove comments (block and line, in three steps to ensure correct precedence)
133
+ # remove comments (block and line, in three steps to ensure correct precedence)
141
134
  source.gsub!(/\/\/(?:.+\/\*|\*(?:$|[^\/])).*$/, '') # remove line comments that comment out the start of blocks
142
135
  source.gsub!(/\/\*.*?\*\//m, '') # remove block comments
143
136
  source.gsub!(/\/\/.*$/, '') # remove line comments (all that remain)
144
137
 
145
- #parse out includes
138
+ # parse out includes
146
139
  includes = {
147
- :local => source.scan(/^\s*#include\s+\"\s*(.+)\.[hH]\s*\"/).flatten,
148
- :system => source.scan(/^\s*#include\s+<\s*(.+)\s*>/).flatten.map { |inc| "<#{inc}>" }
140
+ local: source.scan(/^\s*#include\s+\"\s*(.+)\.[hH]\s*\"/).flatten,
141
+ system: source.scan(/^\s*#include\s+<\s*(.+)\s*>/).flatten.map { |inc| "<#{inc}>" },
142
+ linkonly: source.scan(/^TEST_FILE\(\s*\"\s*(.+)\.[cC]\w*\s*\"/).flatten
149
143
  }
150
- return includes
144
+ includes
151
145
  end
152
146
 
153
147
  def find_mocks(includes)
154
148
  mock_headers = []
155
149
  includes.each do |include_path|
156
150
  include_file = File.basename(include_path)
157
- mock_headers << include_path if (include_file =~ /^mock/i)
151
+ mock_headers << include_path if include_file =~ /^#{@options[:mock_prefix]}/i
158
152
  end
159
- return mock_headers
153
+ mock_headers
160
154
  end
161
155
 
162
- def create_header(output, mocks, testfile_includes=[])
156
+ def create_header(output, mocks, testfile_includes = [])
163
157
  output.puts('/* AUTOGENERATED FILE. DO NOT EDIT. */')
164
158
  create_runtest(output, mocks)
165
159
  output.puts("\n/*=======Automagically Detected Files To Include=====*/")
166
- output.puts("#include \"#{@options[:framework].to_s}.h\"")
167
- output.puts('#include "cmock.h"') unless (mocks.empty?)
160
+ output.puts("#include \"#{@options[:framework]}.h\"")
161
+ output.puts('#include "cmock.h"') unless mocks.empty?
168
162
  output.puts('#include <setjmp.h>')
169
163
  output.puts('#include <stdio.h>')
170
- output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
171
- if (@options[:defines] && !@options[:defines].empty?)
172
- @options[:defines].each {|d| output.puts("#define #{d}")}
164
+ if @options[:defines] && !@options[:defines].empty?
165
+ @options[:defines].each { |d| output.puts("#define #{d}") }
173
166
  end
174
- if (@options[:header_file] && !@options[:header_file].empty?)
167
+ if @options[:header_file] && !@options[:header_file].empty?
175
168
  output.puts("#include \"#{File.basename(@options[:header_file])}\"")
176
169
  else
177
170
  @options[:includes].flatten.uniq.compact.each do |inc|
178
- output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}")
171
+ output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
179
172
  end
180
173
  testfile_includes.each do |inc|
181
- output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}")
174
+ output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
182
175
  end
183
176
  end
184
177
  mocks.each do |mock|
185
- output.puts("#include \"#{mock.gsub('.h','')}.h\"")
186
- end
187
- if @options[:enforce_strict_ordering]
188
- output.puts('')
189
- output.puts('int GlobalExpectCount;')
190
- output.puts('int GlobalVerifyOrder;')
191
- output.puts('char* GlobalOrderError;')
178
+ output.puts("#include \"#{mock.gsub('.h', '')}.h\"")
192
179
  end
180
+ output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
181
+
182
+ return unless @options[:enforce_strict_ordering]
183
+
184
+ output.puts('')
185
+ output.puts('int GlobalExpectCount;')
186
+ output.puts('int GlobalVerifyOrder;')
187
+ output.puts('char* GlobalOrderError;')
193
188
  end
194
189
 
195
- def create_externs(output, tests, mocks)
190
+ def create_externs(output, tests, _mocks)
196
191
  output.puts("\n/*=======External Functions This Runner Calls=====*/")
197
192
  output.puts("extern void #{@options[:setup_name]}(void);")
198
193
  output.puts("extern void #{@options[:teardown_name]}(void);")
@@ -203,55 +198,60 @@ class UnityTestRunnerGenerator
203
198
  end
204
199
 
205
200
  def create_mock_management(output, mock_headers)
206
- unless (mock_headers.empty?)
207
- output.puts("\n/*=======Mock Management=====*/")
208
- output.puts("static void CMock_Init(void)")
209
- output.puts("{")
210
- if @options[:enforce_strict_ordering]
211
- output.puts(" GlobalExpectCount = 0;")
212
- output.puts(" GlobalVerifyOrder = 0;")
213
- output.puts(" GlobalOrderError = NULL;")
214
- end
215
- mocks = mock_headers.map {|mock| File.basename(mock)}
216
- mocks.each do |mock|
217
- mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
218
- output.puts(" #{mock_clean}_Init();")
219
- end
220
- output.puts("}\n")
201
+ return if mock_headers.empty?
221
202
 
222
- output.puts("static void CMock_Verify(void)")
223
- output.puts("{")
224
- mocks.each do |mock|
225
- mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
226
- output.puts(" #{mock_clean}_Verify();")
227
- end
228
- output.puts("}\n")
203
+ output.puts("\n/*=======Mock Management=====*/")
204
+ output.puts('static void CMock_Init(void)')
205
+ output.puts('{')
229
206
 
230
- output.puts("static void CMock_Destroy(void)")
231
- output.puts("{")
232
- mocks.each do |mock|
233
- mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
234
- output.puts(" #{mock_clean}_Destroy();")
235
- end
236
- output.puts("}\n")
207
+ if @options[:enforce_strict_ordering]
208
+ output.puts(' GlobalExpectCount = 0;')
209
+ output.puts(' GlobalVerifyOrder = 0;')
210
+ output.puts(' GlobalOrderError = NULL;')
237
211
  end
238
- end
239
212
 
240
- def create_suite_setup_and_teardown(output)
241
- unless (@options[:suite_setup].nil?)
242
- output.puts("\n/*=======Suite Setup=====*/")
243
- output.puts("static void suite_setup(void)")
244
- output.puts("{")
245
- output.puts(@options[:suite_setup])
246
- output.puts("}")
213
+ mocks = mock_headers.map { |mock| File.basename(mock) }
214
+ mocks.each do |mock|
215
+ mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
216
+ output.puts(" #{mock_clean}_Init();")
247
217
  end
248
- unless (@options[:suite_teardown].nil?)
249
- output.puts("\n/*=======Suite Teardown=====*/")
250
- output.puts("static int suite_teardown(int num_failures)")
251
- output.puts("{")
252
- output.puts(@options[:suite_teardown])
253
- output.puts("}")
218
+ output.puts("}\n")
219
+
220
+ output.puts('static void CMock_Verify(void)')
221
+ output.puts('{')
222
+ mocks.each do |mock|
223
+ mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
224
+ output.puts(" #{mock_clean}_Verify();")
225
+ end
226
+ output.puts("}\n")
227
+
228
+ output.puts('static void CMock_Destroy(void)')
229
+ output.puts('{')
230
+ mocks.each do |mock|
231
+ mock_clean = TypeSanitizer.sanitize_c_identifier(mock)
232
+ output.puts(" #{mock_clean}_Destroy();")
254
233
  end
234
+ output.puts("}\n")
235
+ end
236
+
237
+ def create_suite_setup(output)
238
+ return if @options[:suite_setup].nil?
239
+
240
+ output.puts("\n/*=======Suite Setup=====*/")
241
+ output.puts('static void suite_setup(void)')
242
+ output.puts('{')
243
+ output.puts(@options[:suite_setup])
244
+ output.puts('}')
245
+ end
246
+
247
+ def create_suite_teardown(output)
248
+ return if @options[:suite_teardown].nil?
249
+
250
+ output.puts("\n/*=======Suite Teardown=====*/")
251
+ output.puts('static int suite_teardown(int num_failures)')
252
+ output.puts('{')
253
+ output.puts(@options[:suite_teardown])
254
+ output.puts('}')
255
255
  end
256
256
 
257
257
  def create_runtest(output, used_mocks)
@@ -259,124 +259,124 @@ class UnityTestRunnerGenerator
259
259
  va_args1 = @options[:use_param_tests] ? ', ...' : ''
260
260
  va_args2 = @options[:use_param_tests] ? '__VA_ARGS__' : ''
261
261
  output.puts("\n/*=======Test Runner Used To Run Each Test Below=====*/")
262
- output.puts("#define RUN_TEST_NO_ARGS") if @options[:use_param_tests]
262
+ output.puts('#define RUN_TEST_NO_ARGS') if @options[:use_param_tests]
263
263
  output.puts("#define RUN_TEST(TestFunc, TestLineNum#{va_args1}) \\")
264
- output.puts("{ \\")
264
+ output.puts('{ \\')
265
265
  output.puts(" Unity.CurrentTestName = #TestFunc#{va_args2.empty? ? '' : " \"(\" ##{va_args2} \")\""}; \\")
266
- output.puts(" Unity.CurrentTestLineNumber = TestLineNum; \\")
267
- output.puts(" if (UnityTestMatches()) { \\") if (@options[:cmdline_args])
268
- output.puts(" Unity.NumberOfTests++; \\")
269
- output.puts(" CMock_Init(); \\") unless (used_mocks.empty?)
270
- output.puts(" UNITY_CLR_DETAILS(); \\") unless (used_mocks.empty?)
271
- output.puts(" if (TEST_PROTECT()) \\")
272
- output.puts(" { \\")
273
- output.puts(" CEXCEPTION_T e; \\") if cexception
274
- output.puts(" Try { \\") if cexception
266
+ output.puts(' Unity.CurrentTestLineNumber = TestLineNum; \\')
267
+ output.puts(' if (UnityTestMatches()) { \\') if @options[:cmdline_args]
268
+ output.puts(' Unity.NumberOfTests++; \\')
269
+ output.puts(' CMock_Init(); \\') unless used_mocks.empty?
270
+ output.puts(' UNITY_CLR_DETAILS(); \\') unless used_mocks.empty?
271
+ output.puts(' if (TEST_PROTECT()) \\')
272
+ output.puts(' { \\')
273
+ output.puts(' CEXCEPTION_T e; \\') if cexception
274
+ output.puts(' Try { \\') if cexception
275
275
  output.puts(" #{@options[:setup_name]}(); \\")
276
276
  output.puts(" TestFunc(#{va_args2}); \\")
277
- output.puts(" } Catch(e) { TEST_ASSERT_EQUAL_HEX32_MESSAGE(CEXCEPTION_NONE, e, \"Unhandled Exception!\"); } \\") if cexception
278
- output.puts(" } \\")
279
- output.puts(" if (TEST_PROTECT() && !TEST_IS_IGNORED) \\")
280
- output.puts(" { \\")
277
+ output.puts(' } Catch(e) { TEST_ASSERT_EQUAL_HEX32_MESSAGE(CEXCEPTION_NONE, e, "Unhandled Exception!"); } \\') if cexception
278
+ output.puts(' } \\')
279
+ output.puts(' if (TEST_PROTECT()) \\')
280
+ output.puts(' { \\')
281
281
  output.puts(" #{@options[:teardown_name]}(); \\")
282
- output.puts(" CMock_Verify(); \\") unless (used_mocks.empty?)
283
- output.puts(" } \\")
284
- output.puts(" CMock_Destroy(); \\") unless (used_mocks.empty?)
285
- output.puts(" UnityConcludeTest(); \\")
286
- output.puts(" } \\") if (@options[:cmdline_args])
282
+ output.puts(' CMock_Verify(); \\') unless used_mocks.empty?
283
+ output.puts(' } \\')
284
+ output.puts(' CMock_Destroy(); \\') unless used_mocks.empty?
285
+ output.puts(' UnityConcludeTest(); \\')
286
+ output.puts(' } \\') if @options[:cmdline_args]
287
287
  output.puts("}\n")
288
288
  end
289
289
 
290
290
  def create_reset(output, used_mocks)
291
291
  output.puts("\n/*=======Test Reset Option=====*/")
292
- output.puts("void resetTest(void);")
293
- output.puts("void resetTest(void)")
294
- output.puts("{")
295
- output.puts(" CMock_Verify();") unless (used_mocks.empty?)
296
- output.puts(" CMock_Destroy();") unless (used_mocks.empty?)
292
+ output.puts('void resetTest(void);')
293
+ output.puts('void resetTest(void)')
294
+ output.puts('{')
295
+ output.puts(' CMock_Verify();') unless used_mocks.empty?
296
+ output.puts(' CMock_Destroy();') unless used_mocks.empty?
297
297
  output.puts(" #{@options[:teardown_name]}();")
298
- output.puts(" CMock_Init();") unless (used_mocks.empty?)
298
+ output.puts(' CMock_Init();') unless used_mocks.empty?
299
299
  output.puts(" #{@options[:setup_name]}();")
300
- output.puts("}")
300
+ output.puts('}')
301
301
  end
302
302
 
303
303
  def create_main(output, filename, tests, used_mocks)
304
304
  output.puts("\n\n/*=======MAIN=====*/")
305
- main_name = (@options[:main_name].to_sym == :auto) ? "main_#{filename.gsub('.c','')}" : "#{@options[:main_name]}"
306
- if (@options[:cmdline_args])
307
- if (main_name != "main")
305
+ main_name = @options[:main_name].to_sym == :auto ? "main_#{filename.gsub('.c', '')}" : (@options[:main_name]).to_s
306
+ if @options[:cmdline_args]
307
+ if main_name != 'main'
308
308
  output.puts("#{@options[:main_export_decl]} int #{main_name}(int argc, char** argv);")
309
309
  end
310
310
  output.puts("#{@options[:main_export_decl]} int #{main_name}(int argc, char** argv)")
311
- output.puts("{")
312
- output.puts(" int parse_status = UnityParseOptions(argc, argv);")
313
- output.puts(" if (parse_status != 0)")
314
- output.puts(" {")
315
- output.puts(" if (parse_status < 0)")
316
- output.puts(" {")
317
- output.puts(" UnityPrint(\"#{filename.gsub('.c','')}.\");")
318
- output.puts(" UNITY_PRINT_EOL();")
319
- if (@options[:use_param_tests])
311
+ output.puts('{')
312
+ output.puts(' int parse_status = UnityParseOptions(argc, argv);')
313
+ output.puts(' if (parse_status != 0)')
314
+ output.puts(' {')
315
+ output.puts(' if (parse_status < 0)')
316
+ output.puts(' {')
317
+ output.puts(" UnityPrint(\"#{filename.gsub('.c', '')}.\");")
318
+ output.puts(' UNITY_PRINT_EOL();')
319
+ if @options[:use_param_tests]
320
320
  tests.each do |test|
321
- if ((test[:args].nil?) or (test[:args].empty?))
321
+ if test[:args].nil? || test[:args].empty?
322
322
  output.puts(" UnityPrint(\" #{test[:test]}(RUN_TEST_NO_ARGS)\");")
323
- output.puts(" UNITY_PRINT_EOL();")
323
+ output.puts(' UNITY_PRINT_EOL();')
324
324
  else
325
325
  test[:args].each do |args|
326
326
  output.puts(" UnityPrint(\" #{test[:test]}(#{args})\");")
327
- output.puts(" UNITY_PRINT_EOL();")
327
+ output.puts(' UNITY_PRINT_EOL();')
328
328
  end
329
329
  end
330
330
  end
331
331
  else
332
- tests.each { |test| output.puts(" UnityPrint(\" #{test[:test]}\");\n UNITY_PRINT_EOL();")}
332
+ tests.each { |test| output.puts(" UnityPrint(\" #{test[:test]}\");\n UNITY_PRINT_EOL();") }
333
333
  end
334
- output.puts(" return 0;")
335
- output.puts(" }")
336
- output.puts(" return parse_status;")
337
- output.puts(" }")
334
+ output.puts(' return 0;')
335
+ output.puts(' }')
336
+ output.puts(' return parse_status;')
337
+ output.puts(' }')
338
338
  else
339
- if (main_name != "main")
339
+ if main_name != 'main'
340
340
  output.puts("#{@options[:main_export_decl]} int #{main_name}(void);")
341
341
  end
342
342
  output.puts("int #{main_name}(void)")
343
- output.puts("{")
343
+ output.puts('{')
344
344
  end
345
- output.puts(" suite_setup();") unless @options[:suite_setup].nil?
346
- output.puts(" UnityBegin(\"#{filename.gsub(/\\/,'\\\\\\')}\");")
347
- if (@options[:use_param_tests])
345
+ output.puts(' suite_setup();') unless @options[:suite_setup].nil?
346
+ output.puts(" UnityBegin(\"#{filename.gsub(/\\/, '\\\\\\')}\");")
347
+ if @options[:use_param_tests]
348
348
  tests.each do |test|
349
- if ((test[:args].nil?) or (test[:args].empty?))
349
+ if test[:args].nil? || test[:args].empty?
350
350
  output.puts(" RUN_TEST(#{test[:test]}, #{test[:line_number]}, RUN_TEST_NO_ARGS);")
351
351
  else
352
- test[:args].each {|args| output.puts(" RUN_TEST(#{test[:test]}, #{test[:line_number]}, #{args});")}
352
+ test[:args].each { |args| output.puts(" RUN_TEST(#{test[:test]}, #{test[:line_number]}, #{args});") }
353
353
  end
354
354
  end
355
355
  else
356
- tests.each { |test| output.puts(" RUN_TEST(#{test[:test]}, #{test[:line_number]});") }
356
+ tests.each { |test| output.puts(" RUN_TEST(#{test[:test]}, #{test[:line_number]});") }
357
357
  end
358
- output.puts()
359
- output.puts(" CMock_Guts_MemFreeFinal();") unless used_mocks.empty?
360
- output.puts(" return #{@options[:suite_teardown].nil? ? "" : "suite_teardown"}(UnityEnd());")
361
- output.puts("}")
358
+ output.puts
359
+ output.puts(' CMock_Guts_MemFreeFinal();') unless used_mocks.empty?
360
+ output.puts(" return #{@options[:suite_teardown].nil? ? '' : 'suite_teardown'}(UnityEnd());")
361
+ output.puts('}')
362
362
  end
363
363
 
364
364
  def create_h_file(output, filename, tests, testfile_includes, used_mocks)
365
- filename = File.basename(filename).gsub(/[-\/\\\.\,\s]/, "_").upcase
366
- output.puts("/* AUTOGENERATED FILE. DO NOT EDIT. */")
365
+ filename = File.basename(filename).gsub(/[-\/\\\.\,\s]/, '_').upcase
366
+ output.puts('/* AUTOGENERATED FILE. DO NOT EDIT. */')
367
367
  output.puts("#ifndef _#{filename}")
368
368
  output.puts("#define _#{filename}\n\n")
369
- output.puts("#include \"#{@options[:framework].to_s}.h\"")
370
- output.puts('#include "cmock.h"') unless (used_mocks.empty?)
369
+ output.puts("#include \"#{@options[:framework]}.h\"")
370
+ output.puts('#include "cmock.h"') unless used_mocks.empty?
371
371
  @options[:includes].flatten.uniq.compact.each do |inc|
372
- output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}")
372
+ output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
373
373
  end
374
374
  testfile_includes.each do |inc|
375
- output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}")
375
+ output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h', '')}.h\""}")
376
376
  end
377
377
  output.puts "\n"
378
378
  tests.each do |test|
379
- if ((test[:params].nil?) or (test[:params].empty?))
379
+ if test[:params].nil? || test[:params].empty?
380
380
  output.puts("void #{test[:test]}(void);")
381
381
  else
382
382
  output.puts("void #{test[:test]}(#{test[:params]});")
@@ -386,50 +386,52 @@ class UnityTestRunnerGenerator
386
386
  end
387
387
  end
388
388
 
389
- if ($0 == __FILE__)
390
- options = { :includes => [] }
391
- yaml_file = nil
389
+ if $0 == __FILE__
390
+ options = { includes: [] }
392
391
 
393
- #parse out all the options first (these will all be removed as we go)
392
+ # parse out all the options first (these will all be removed as we go)
394
393
  ARGV.reject! do |arg|
395
- case(arg)
396
- when '-cexception'
397
- options[:plugins] = [:cexception]; true
398
- when /\.*\.ya?ml/
399
- options = UnityTestRunnerGenerator.grab_config(arg); true
400
- when /--(\w+)=\"?(.*)\"?/
401
- options[$1.to_sym] = $2; true
402
- when /\.*\.h/
403
- options[:includes] << arg; true
404
- else false
394
+ case arg
395
+ when '-cexception'
396
+ options[:plugins] = [:cexception]
397
+ true
398
+ when /\.*\.ya?ml/
399
+ options = UnityTestRunnerGenerator.grab_config(arg)
400
+ true
401
+ when /--(\w+)=\"?(.*)\"?/
402
+ options[Regexp.last_match(1).to_sym] = Regexp.last_match(2)
403
+ true
404
+ when /\.*\.h/
405
+ options[:includes] << arg
406
+ true
407
+ else false
405
408
  end
406
409
  end
407
410
 
408
- #make sure there is at least one parameter left (the input file)
409
- if !ARGV[0]
411
+ # make sure there is at least one parameter left (the input file)
412
+ unless ARGV[0]
410
413
  puts ["\nusage: ruby #{__FILE__} (files) (options) input_test_file (output)",
411
- "\n input_test_file - this is the C file you want to create a runner for",
412
- " output - this is the name of the runner file to generate",
413
- " defaults to (input_test_file)_Runner",
414
- " files:",
415
- " *.yml / *.yaml - loads configuration from here in :unity or :cmock",
416
- " *.h - header files are added as #includes in runner",
417
- " options:",
418
- " -cexception - include cexception support",
419
- " --setup_name=\"\" - redefine setUp func name to something else",
420
- " --teardown_name=\"\" - redefine tearDown func name to something else",
421
- " --main_name=\"\" - redefine main func name to something else",
422
- " --test_prefix=\"\" - redefine test prefix from default test|spec|should",
423
- " --suite_setup=\"\" - code to execute for setup of entire suite",
424
- " --suite_teardown=\"\" - code to execute for teardown of entire suite",
425
- " --use_param_tests=1 - enable parameterized tests (disabled by default)",
426
- " --header_file=\"\" - path/name of test header file to generate too"
427
- ].join("\n")
414
+ "\n input_test_file - this is the C file you want to create a runner for",
415
+ ' output - this is the name of the runner file to generate',
416
+ ' defaults to (input_test_file)_Runner',
417
+ ' files:',
418
+ ' *.yml / *.yaml - loads configuration from here in :unity or :cmock',
419
+ ' *.h - header files are added as #includes in runner',
420
+ ' options:',
421
+ ' -cexception - include cexception support',
422
+ ' --setup_name="" - redefine setUp func name to something else',
423
+ ' --teardown_name="" - redefine tearDown func name to something else',
424
+ ' --main_name="" - redefine main func name to something else',
425
+ ' --test_prefix="" - redefine test prefix from default test|spec|should',
426
+ ' --suite_setup="" - code to execute for setup of entire suite',
427
+ ' --suite_teardown="" - code to execute for teardown of entire suite',
428
+ ' --use_param_tests=1 - enable parameterized tests (disabled by default)',
429
+ ' --header_file="" - path/name of test header file to generate too'].join("\n")
428
430
  exit 1
429
431
  end
430
432
 
431
- #create the default test runner name if not specified
432
- ARGV[1] = ARGV[0].gsub(".c","_Runner.c") if (!ARGV[1])
433
+ # create the default test runner name if not specified
434
+ ARGV[1] = ARGV[0].gsub('.c', '_Runner.c') unless ARGV[1]
433
435
 
434
436
  UnityTestRunnerGenerator.new(options).run(ARGV[0], ARGV[1])
435
437
  end