ceedling 0.25.0 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,398 @@
1
+ # Unity Configuration Guide
2
+
3
+ ## C Standards, Compilers and Microcontrollers
4
+
5
+ The embedded software world contains its challenges. Compilers support different
6
+ revisions of the C Standard. They ignore requirements in places, sometimes to
7
+ make the language more usable in some special regard. Sometimes it's to simplify
8
+ their support. Sometimes it's due to specific quirks of the microcontroller they
9
+ are targeting. Simulators add another dimension to this menagerie.
10
+
11
+ Unity is designed to run on almost anything that is targeted by a C compiler. It
12
+ would be awesome if this could be done with zero configuration. While there are
13
+ some targets that come close to this dream, it is sadly not universal. It is
14
+ likely that you are going to need at least a couple of the configuration options
15
+ described in this document.
16
+
17
+ All of Unity's configuration options are `#defines`. Most of these are simple
18
+ definitions. A couple are macros with arguments. They live inside the
19
+ unity_internals.h header file. We don't necessarily recommend opening that file
20
+ unless you really need to. That file is proof that a cross-platform library is
21
+ challenging to build. From a more positive perspective, it is also proof that a
22
+ great deal of complexity can be centralized primarily to one place in order to
23
+ provide a more consistent and simple experience elsewhere.
24
+
25
+
26
+ ### Using These Options
27
+
28
+ It doesn't matter if you're using a target-specific compiler and a simulator or
29
+ a native compiler. In either case, you've got a couple choices for configuring
30
+ these options:
31
+
32
+ 1. Because these options are specified via C defines, you can pass most of these
33
+ options to your compiler through command line compiler flags. Even if you're
34
+ using an embedded target that forces you to use their overbearing IDE for all
35
+ configuration, there will be a place somewhere in your project to configure
36
+ defines for your compiler.
37
+ 2. You can create a custom `unity_config.h` configuration file (present in your
38
+ toolchain's search paths). In this file, you will list definitions and macros
39
+ specific to your target. All you must do is define `UNITY_INCLUDE_CONFIG_H` and
40
+ Unity will rely on `unity_config.h` for any further definitions it may need.
41
+
42
+
43
+ ## The Options
44
+
45
+ ### Integer Types
46
+
47
+ If you've been a C developer for long, you probably already know that C's
48
+ concept of an integer varies from target to target. The C Standard has rules
49
+ about the `int` matching the register size of the target microprocessor. It has
50
+ rules about the `int` and how its size relates to other integer types. An `int`
51
+ on one target might be 16 bits while on another target it might be 64. There are
52
+ more specific types in compilers compliant with C99 or later, but that's
53
+ certainly not every compiler you are likely to encounter. Therefore, Unity has a
54
+ number of features for helping to adjust itself to match your required integer
55
+ sizes. It starts off by trying to do it automatically.
56
+
57
+
58
+ ##### `UNITY_EXCLUDE_STDINT_H`
59
+
60
+ The first thing that Unity does to guess your types is check `stdint.h`.
61
+ This file includes defines like `UINT_MAX` that Unity can make use of to
62
+ learn a lot about your system. It's possible you don't want it to do this
63
+ (um. why not?) or (more likely) it's possible that your system doesn't
64
+ support `stdint.h`. If that's the case, you're going to want to define this.
65
+ That way, Unity will know to skip the inclusion of this file and you won't
66
+ be left with a compiler error.
67
+
68
+ _Example:_
69
+ #define UNITY_EXCLUDE_STDINT_H
70
+
71
+
72
+ ##### `UNITY_EXCLUDE_LIMITS_H`
73
+
74
+ The second attempt to guess your types is to check `limits.h`. Some compilers
75
+ that don't support `stdint.h` could include `limits.h` instead. If you don't
76
+ want Unity to check this file either, define this to make it skip the inclusion.
77
+
78
+ _Example:_
79
+ #define UNITY_EXCLUDE_LIMITS_H
80
+
81
+
82
+ ##### `UNITY_EXCLUDE_SIZEOF`
83
+
84
+ The third and final attempt to guess your types is to use the `sizeof()`
85
+ operator. Even if the first two options don't work, this one covers most cases.
86
+ There _is_ a rare compiler or two out there that doesn't support sizeof() in the
87
+ preprocessing stage, though. For these, you have the ability to disable this
88
+ feature as well.
89
+
90
+ _Example:_
91
+ #define UNITY_EXCLUDE_SIZEOF
92
+
93
+ If you've disabled all of the automatic options above, you're going to have to
94
+ do the configuration yourself. Don't worry. Even this isn't too bad... there are
95
+ just a handful of defines that you are going to specify if you don't like the
96
+ defaults.
97
+
98
+
99
+ ##### `UNITY_INT_WIDTH`
100
+
101
+ Define this to be the number of bits an `int` takes up on your system. The
102
+ default, if not autodetected, is 32 bits.
103
+
104
+ _Example:_
105
+ #define UNITY_INT_WIDTH 16
106
+
107
+
108
+ ##### `UNITY_LONG_WIDTH`
109
+
110
+ Define this to be the number of bits a `long` takes up on your system. The
111
+ default, if not autodetected, is 32 bits. This is used to figure out what kind
112
+ of 64-bit support your system can handle. Does it need to specify a `long` or a
113
+ `long long` to get a 64-bit value. On 16-bit systems, this option is going to be
114
+ ignored.
115
+
116
+ _Example:_
117
+ #define UNITY_LONG_WIDTH 16
118
+
119
+
120
+ ##### `UNITY_POINTER_WIDTH`
121
+
122
+ Define this to be the number of bits a pointer takes up on your system. The
123
+ default, if not autodetected, is 32-bits. If you're getting ugly compiler
124
+ warnings about casting from pointers, this is the one to look at.
125
+
126
+ _Example:_
127
+ #define UNITY_POINTER_WIDTH 64
128
+
129
+
130
+ ##### `UNITY_INCLUDE_64`
131
+
132
+ Unity will automatically include 64-bit support if it auto-detects it, or if
133
+ your `int`, `long`, or pointer widths are greater than 32-bits. Define this to
134
+ enable 64-bit support if none of the other options already did it for you. There
135
+ can be a significant size and speed impact to enabling 64-bit support on small
136
+ targets, so don't define it if you don't need it.
137
+
138
+ _Example:_
139
+ #define UNITY_INCLUDE_64
140
+
141
+
142
+ ### Floating Point Types
143
+
144
+ In the embedded world, it's not uncommon for targets to have no support for
145
+ floating point operations at all or to have support that is limited to only
146
+ single precision. We are able to guess integer sizes on the fly because integers
147
+ are always available in at least one size. Floating point, on the other hand, is
148
+ sometimes not available at all. Trying to include `float.h` on these platforms
149
+ would result in an error. This leaves manual configuration as the only option.
150
+
151
+
152
+ ##### `UNITY_INCLUDE_FLOAT`
153
+
154
+ ##### `UNITY_EXCLUDE_FLOAT`
155
+
156
+ ##### `UNITY_INCLUDE_DOUBLE`
157
+
158
+ ##### `UNITY_EXCLUDE_DOUBLE`
159
+
160
+ By default, Unity guesses that you will want single precision floating point
161
+ support, but not double precision. It's easy to change either of these using the
162
+ include and exclude options here. You may include neither, either, or both, as
163
+ suits your needs. For features that are enabled, the following floating point
164
+ options also become available.
165
+
166
+ _Example:_
167
+
168
+ //what manner of strange processor is this?
169
+ #define UNITY_EXCLUDE_FLOAT
170
+ #define UNITY_INCLUDE_DOUBLE
171
+
172
+
173
+ ##### `UNITY_FLOAT_VERBOSE`
174
+
175
+ ##### `UNITY_DOUBLE_VERBOSE`
176
+
177
+ Unity aims for as small of a footprint as possible and avoids most standard
178
+ library calls (some embedded platforms don't have a standard library!). Because
179
+ of this, its routines for printing integer values are minimalist and hand-coded.
180
+ To keep Unity universal, though, we chose to _not_ develop our own floating
181
+ point print routines. Instead, the display of floating point values during a
182
+ failure are optional. By default, Unity will not print the actual results of
183
+ floating point assertion failure. So a failed assertion will produce a message
184
+ like `"Values Not Within Delta"`. If you would like verbose failure messages for
185
+ floating point assertions, use these options to give more explicit failure
186
+ messages (e.g. `"Expected 4.56 Was 4.68"`). Note that this feature requires the
187
+ use of `sprintf` so might not be desirable in all cases.
188
+
189
+ _Example:_
190
+ #define UNITY_DOUBLE_VERBOSE
191
+
192
+
193
+ ##### `UNITY_FLOAT_TYPE`
194
+
195
+ If enabled, Unity assumes you want your `FLOAT` asserts to compare standard C
196
+ floats. If your compiler supports a specialty floating point type, you can
197
+ always override this behavior by using this definition.
198
+
199
+ _Example:_
200
+ #define UNITY_FLOAT_TYPE float16_t
201
+
202
+
203
+ ##### `UNITY_DOUBLE_TYPE`
204
+
205
+ If enabled, Unity assumes you want your `DOUBLE` asserts to compare standard C
206
+ doubles. If you would like to change this, you can specify something else by
207
+ using this option. For example, defining `UNITY_DOUBLE_TYPE` to `long double`
208
+ could enable gargantuan floating point types on your 64-bit processor instead of
209
+ the standard `double`.
210
+
211
+ _Example:_
212
+ #define UNITY_DOUBLE_TYPE long double
213
+
214
+
215
+ ##### `UNITY_FLOAT_PRECISION`
216
+
217
+ ##### `UNITY_DOUBLE_PRECISION`
218
+
219
+ If you look up `UNITY_ASSERT_EQUAL_FLOAT` and `UNITY_ASSERT_EQUAL_DOUBLE` as
220
+ documented in the big daddy Unity Assertion Guide, you will learn that they are
221
+ not really asserting that two values are equal but rather that two values are
222
+ "close enough" to equal. "Close enough" is controlled by these precision
223
+ configuration options. If you are working with 32-bit floats and/or 64-bit
224
+ doubles (the normal on most processors), you should have no need to change these
225
+ options. They are both set to give you approximately 1 significant bit in either
226
+ direction. The float precision is 0.00001 while the double is 10-12.
227
+ For further details on how this works, see the appendix of the Unity Assertion
228
+ Guide.
229
+
230
+ _Example:_
231
+ #define UNITY_FLOAT_PRECISION 0.001f
232
+
233
+
234
+ ### Toolset Customization
235
+
236
+ In addition to the options listed above, there are a number of other options
237
+ which will come in handy to customize Unity's behavior for your specific
238
+ toolchain. It is possible that you may not need to touch any of these... but
239
+ certain platforms, particularly those running in simulators, may need to jump
240
+ through extra hoops to operate properly. These macros will help in those
241
+ situations.
242
+
243
+
244
+ ##### `UNITY_OUTPUT_CHAR(a)`
245
+
246
+ ##### `UNITY_OUTPUT_FLUSH()`
247
+
248
+ ##### `UNITY_OUTPUT_START()`
249
+
250
+ ##### `UNITY_OUTPUT_COMPLETE()`
251
+
252
+ By default, Unity prints its results to `stdout` as it runs. This works
253
+ perfectly fine in most situations where you are using a native compiler for
254
+ testing. It works on some simulators as well so long as they have `stdout`
255
+ routed back to the command line. There are times, however, where the simulator
256
+ will lack support for dumping results or you will want to route results
257
+ elsewhere for other reasons. In these cases, you should define the
258
+ `UNITY_OUTPUT_CHAR` macro. This macro accepts a single character at a time (as
259
+ an `int`, since this is the parameter type of the standard C `putchar` function
260
+ most commonly used). You may replace this with whatever function call you like.
261
+
262
+ _Example:_
263
+ Say you are forced to run your test suite on an embedded processor with no
264
+ `stdout` option. You decide to route your test result output to a custom serial
265
+ `RS232_putc()` function you wrote like thus:
266
+
267
+ #define UNITY_OUTPUT_CHAR(a) RS232_putc(a)
268
+ #define UNITY_OUTPUT_START() RS232_config(115200,1,8,0)
269
+ #define UNITY_OUTPUT_FLUSH() RS232_flush()
270
+ #define UNITY_OUTPUT_COMPLETE() RS232_close()
271
+
272
+ _Note:_
273
+ `UNITY_OUTPUT_FLUSH()` can be set to the standard out flush function simply by
274
+ specifying `UNITY_USE_FLUSH_STDOUT`. No other defines are required. If you
275
+ specify a custom flush function instead with `UNITY_OUTPUT_FLUSH` directly, it
276
+ will declare an instance of your function by default. If you want to disable
277
+ this behavior, add `UNITY_OMIT_OUTPUT_FLUSH_HEADER_DECLARATION`.
278
+
279
+
280
+ ##### `UNITY_SUPPORT_WEAK`
281
+
282
+ For some targets, Unity can make the otherwise required `setUp()` and
283
+ `tearDown()` functions optional. This is a nice convenience for test writers
284
+ since `setUp` and `tearDown` don't often actually _do_ anything. If you're using
285
+ gcc or clang, this option is automatically defined for you. Other compilers can
286
+ also support this behavior, if they support a C feature called weak functions. A
287
+ weak function is a function that is compiled into your executable _unless_ a
288
+ non-weak version of the same function is defined elsewhere. If a non-weak
289
+ version is found, the weak version is ignored as if it never existed. If your
290
+ compiler supports this feature, you can let Unity know by defining
291
+ `UNITY_SUPPORT_WEAK` as the function attributes that would need to be applied to
292
+ identify a function as weak. If your compiler lacks support for weak functions,
293
+ you will always need to define `setUp` and `tearDown` functions (though they can
294
+ be and often will be just empty). The most common options for this feature are:
295
+
296
+ _Example:_
297
+ #define UNITY_SUPPORT_WEAK weak
298
+ #define UNITY_SUPPORT_WEAK __attribute__((weak))
299
+
300
+
301
+ ##### `UNITY_PTR_ATTRIBUTE`
302
+
303
+ Some compilers require a custom attribute to be assigned to pointers, like
304
+ `near` or `far`. In these cases, you can give Unity a safe default for these by
305
+ defining this option with the attribute you would like.
306
+
307
+ _Example:_
308
+ #define UNITY_PTR_ATTRIBUTE __attribute__((far))
309
+ #define UNITY_PTR_ATTRIBUTE near
310
+
311
+
312
+ ## Getting Into The Guts
313
+
314
+ There will be cases where the options above aren't quite going to get everything
315
+ perfect. They are likely sufficient for any situation where you are compiling
316
+ and executing your tests with a native toolchain (e.g. clang on Mac). These
317
+ options may even get you through the majority of cases encountered in working
318
+ with a target simulator run from your local command line. But especially if you
319
+ must run your test suite on your target hardware, your Unity configuration will
320
+ require special help. This special help will usually reside in one of two
321
+ places: the `main()` function or the `RUN_TEST` macro. Let's look at how these
322
+ work.
323
+
324
+
325
+ ##### `main()`
326
+
327
+ Each test module is compiled and run on its own, separate from the other test
328
+ files in your project. Each test file, therefore, has a `main` function. This
329
+ `main` function will need to contain whatever code is necessary to initialize
330
+ your system to a workable state. This is particularly true for situations where
331
+ you must set up a memory map or initialize a communication channel for the
332
+ output of your test results.
333
+
334
+ A simple main function looks something like this:
335
+
336
+ int main(void) {
337
+ UNITY_BEGIN();
338
+ RUN_TEST(test_TheFirst);
339
+ RUN_TEST(test_TheSecond);
340
+ RUN_TEST(test_TheThird);
341
+ return UNITY_END();
342
+ }
343
+
344
+ You can see that our main function doesn't bother taking any arguments. For our
345
+ most barebones case, we'll never have arguments because we just run all the
346
+ tests each time. Instead, we start by calling `UNITY_BEGIN`. We run each test
347
+ (in whatever order we wish). Finally, we call `UNITY_END`, returning its return
348
+ value (which is the total number of failures).
349
+
350
+ It should be easy to see that you can add code before any test cases are run or
351
+ after all the test cases have completed. This allows you to do any needed
352
+ system-wide setup or teardown that might be required for your special
353
+ circumstances.
354
+
355
+
356
+ ##### `RUN_TEST`
357
+
358
+ The `RUN_TEST` macro is called with each test case function. Its job is to
359
+ perform whatever setup and teardown is necessary for executing a single test
360
+ case function. This includes catching failures, calling the test module's
361
+ `setUp()` and `tearDown()` functions, and calling `UnityConcludeTest()`. If
362
+ using CMock or test coverage, there will be additional stubs in use here. A
363
+ simple minimalist RUN_TEST macro looks something like this:
364
+
365
+ #define RUN_TEST(testfunc) \
366
+ UNITY_NEW_TEST(#testfunc) \
367
+ if (TEST_PROTECT()) { \
368
+ setUp(); \
369
+ testfunc(); \
370
+ } \
371
+ if (TEST_PROTECT() && (!TEST_IS_IGNORED)) \
372
+ tearDown(); \
373
+ UnityConcludeTest();
374
+
375
+ So that's quite a macro, huh? It gives you a glimpse of what kind of stuff Unity
376
+ has to deal with for every single test case. For each test case, we declare that
377
+ it is a new test. Then we run `setUp` and our test function. These are run
378
+ within a `TEST_PROTECT` block, the function of which is to handle failures that
379
+ occur during the test. Then, assuming our test is still running and hasn't been
380
+ ignored, we run `tearDown`. No matter what, our last step is to conclude this
381
+ test before moving on to the next.
382
+
383
+ Let's say you need to add a call to `fsync` to force all of your output data to
384
+ flush to a file after each test. You could easily insert this after your
385
+ `UnityConcludeTest` call. Maybe you want to write an xml tag before and after
386
+ each result set. Again, you could do this by adding lines to this macro. Updates
387
+ to this macro are for the occasions when you need an action before or after
388
+ every single test case throughout your entire suite of tests.
389
+
390
+
391
+ ## Happy Porting
392
+
393
+ The defines and macros in this guide should help you port Unity to just about
394
+ any C target we can imagine. If you run into a snag or two, don't be afraid of
395
+ asking for help on the forums. We love a good challenge!
396
+
397
+
398
+ *Find The Latest of This And More at [ThrowTheSwitch.org](https://throwtheswitch.org)*
@@ -0,0 +1,191 @@
1
+ # Unity - Getting Started
2
+
3
+ ## Welcome
4
+
5
+ Congratulations. You're now the proud owner of your very own pile of bits! What
6
+ are you going to do with all these ones and zeros? This document should be able
7
+ to help you decide just that.
8
+
9
+ Unity is a unit test framework. The goal has been to keep it small and
10
+ functional. The core Unity test framework is three files: a single C file and a
11
+ couple header files. These team up to provide functions and macros to make
12
+ testing easier.
13
+
14
+ Unity was designed to be cross platform. It works hard to stick with C standards
15
+ while still providing support for the many embedded C compilers that bend the
16
+ rules. Unity has been used with many compilers, including GCC, IAR, Clang,
17
+ Green Hills, Microchip, and MS Visual Studio. It's not much work to get it to
18
+ work with a new target.
19
+
20
+
21
+ ### Overview of the Documents
22
+
23
+ #### Unity Assertions reference
24
+
25
+ This document will guide you through all the assertion options provided by
26
+ Unity. This is going to be your unit testing bread and butter. You'll spend more
27
+ time with assertions than any other part of Unity.
28
+
29
+
30
+ #### Unity Assertions Cheat Sheet
31
+
32
+ This document contains an abridged summary of the assertions described in the
33
+ previous document. It's perfect for printing and referencing while you
34
+ familiarize yourself with Unity's options.
35
+
36
+
37
+ #### Unity Configuration Guide
38
+
39
+ This document is the one to reference when you are going to use Unity with a new
40
+ target or compiler. It'll guide you through the configuration options and will
41
+ help you customize your testing experience to meet your needs.
42
+
43
+
44
+ #### Unity Helper Scripts
45
+
46
+ This document describes the helper scripts that are available for simplifying
47
+ your testing workflow. It describes the collection of optional Ruby scripts
48
+ included in the auto directory of your Unity installation. Neither Ruby nor
49
+ these scripts are necessary for using Unity. They are provided as a convenience
50
+ for those who wish to use them.
51
+
52
+
53
+ #### Unity License
54
+
55
+ What's an open source project without a license file? This brief document
56
+ describes the terms you're agreeing to when you use this software. Basically, we
57
+ want it to be useful to you in whatever context you want to use it, but please
58
+ don't blame us if you run into problems.
59
+
60
+
61
+ ### Overview of the Folders
62
+
63
+ If you have obtained Unity through Github or something similar, you might be
64
+ surprised by just how much stuff you suddenly have staring you in the face.
65
+ Don't worry, Unity itself is very small. The rest of it is just there to make
66
+ your life easier. You can ignore it or use it at your convenience. Here's an
67
+ overview of everything in the project.
68
+
69
+ - `src` - This is the code you care about! This folder contains a C file and two
70
+ header files. These three files _are_ Unity.
71
+ - `docs` - You're reading this document, so it's possible you have found your way
72
+ into this folder already. This is where all the handy documentation can be
73
+ found.
74
+ - `examples` - This contains a few examples of using Unity.
75
+ - `extras` - These are optional add ons to Unity that are not part of the core
76
+ project. If you've reached us through James Grenning's book, you're going to
77
+ want to look here.
78
+ - `test` - This is how Unity and its scripts are all tested. If you're just using
79
+ Unity, you'll likely never need to go in here. If you are the lucky team member
80
+ who gets to port Unity to a new toolchain, this is a good place to verify
81
+ everything is configured properly.
82
+ - `auto` - Here you will find helpful Ruby scripts for simplifying your test
83
+ workflow. They are purely optional and are not required to make use of Unity.
84
+
85
+
86
+ ## How to Create A Test File
87
+
88
+ Test files are C files. Most often you will create a single test file for each C
89
+ module that you want to test. The test file should include unity.h and the
90
+ header for your C module to be tested.
91
+
92
+ Next, a test file will include a `setUp()` and `tearDown()` function. The setUp
93
+ function can contain anything you would like to run before each test. The
94
+ tearDown function can contain anything you would like to run after each test.
95
+ Both functions accept no arguments and return nothing. You may leave either or
96
+ both of these blank if you have no need for them. If you're using a compiler
97
+ that is configured to make these functions optional, you may leave them off
98
+ completely. Not sure? Give it a try. If you compiler complains that it can't
99
+ find setUp or tearDown when it links, you'll know you need to at least include
100
+ an empty function for these.
101
+
102
+ The majority of the file will be a series of test functions. Test functions
103
+ follow the convention of starting with the word "test" or "spec". You don't HAVE
104
+ to name them this way, but it makes it clear what functions are tests for other
105
+ developers. Test functions take no arguments and return nothing. All test
106
+ accounting is handled internally in Unity.
107
+
108
+ Finally, at the bottom of your test file, you will write a `main()` function.
109
+ This function will call `UNITY_BEGIN()`, then `RUN_TEST` for each test, and
110
+ finally `UNITY_END()`.This is what will actually trigger each of those test
111
+ functions to run, so it is important that each function gets its own `RUN_TEST`
112
+ call.
113
+
114
+ Remembering to add each test to the main function can get to be tedious. If you
115
+ enjoy using helper scripts in your build process, you might consider making use
116
+ of our handy generate_test_runner.rb script. This will create the main function
117
+ and all the calls for you, assuming that you have followed the suggested naming
118
+ conventions. In this case, there is no need for you to include the main function
119
+ in your test file at all.
120
+
121
+ When you're done, your test file will look something like this:
122
+
123
+ ```C
124
+ #include "unity.h"
125
+ #include "file_to_test.h"
126
+
127
+ void setUp(void) {
128
+ // set stuff up here
129
+ }
130
+
131
+ void tearDown(void) {
132
+ // clean stuff up here
133
+ }
134
+
135
+ void test_function_should_doBlahAndBlah(void) {
136
+ //test stuff
137
+ }
138
+
139
+ void test_function_should_doAlsoDoBlah(void) {
140
+ //more test stuff
141
+ }
142
+
143
+ int main(void) {
144
+ UNITY_BEGIN();
145
+ RUN_TEST(test_function_should_doBlahAndBlah);
146
+ RUN_TEST(test_function_should_doAlsoDoBlah);
147
+ return UNITY_END();
148
+ }
149
+ ```
150
+
151
+ It's possible that you will require more customization than this, eventually.
152
+ For that sort of thing, you're going to want to look at the configuration guide.
153
+ This should be enough to get you going, though.
154
+
155
+
156
+ ## How to Build and Run A Test File
157
+
158
+ This is the single biggest challenge to picking up a new unit testing framework,
159
+ at least in a language like C or C++. These languages are REALLY good at getting
160
+ you "close to the metal" (why is the phrase metal? Wouldn't it be more accurate
161
+ to say "close to the silicon"?). While this feature is usually a good thing, it
162
+ can make testing more challenging.
163
+
164
+ You have two really good options for toolchains. Depending on where you're
165
+ coming from, it might surprise you that neither of these options is running the
166
+ unit tests on your hardware.
167
+ There are many reasons for this, but here's a short version:
168
+ - On hardware, you have too many constraints (processing power, memory, etc),
169
+ - On hardware, you don't have complete control over all registers,
170
+ - On hardware, unit testing is more challenging,
171
+ - Unit testing isn't System testing. Keep them separate.
172
+
173
+ Instead of running your tests on your actual hardware, most developers choose to
174
+ develop them as native applications (using gcc or MSVC for example) or as
175
+ applications running on a simulator. Either is a good option. Native apps have
176
+ the advantages of being faster and easier to set up. Simulator apps have the
177
+ advantage of working with the same compiler as your target application. The
178
+ options for configuring these are discussed in the configuration guide.
179
+
180
+ To get either to work, you might need to make a few changes to the file
181
+ containing your register set (discussed later).
182
+
183
+ In either case, a test is built by linking unity, the test file, and the C
184
+ file(s) being tested. These files create an executable which can be run as the
185
+ test set for that module. Then, this process is repeated for the next test file.
186
+ This flexibility of separating tests into individual executables allows us to
187
+ much more thoroughly unit test our system and it keeps all the test code out of
188
+ our final release!
189
+
190
+
191
+ *Find The Latest of This And More at [ThrowTheSwitch.org](https://throwtheswitch.org)*