ceedling 0.28.2 → 0.28.3

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 (253) hide show
  1. checksums.yaml +4 -4
  2. data/assets/ceedling +3 -0
  3. data/assets/ceedling.cmd +1 -0
  4. data/assets/default_gitignore +5 -0
  5. data/assets/project_with_guts.yml +1 -0
  6. data/assets/project_with_guts_gcov.yml +3 -0
  7. data/assets/test_example_file_verbose.c +12 -0
  8. data/bin/ceedling +30 -6
  9. data/docs/CeedlingPacket.md +135 -23
  10. data/docs/CeedlingPacket.odt +0 -0
  11. data/examples/blinky/rakefile.rb +2 -1
  12. data/lib/ceedling/configurator.rb +7 -5
  13. data/lib/ceedling/configurator_builder.rb +10 -7
  14. data/lib/ceedling/configurator_plugins.rb +29 -24
  15. data/lib/ceedling/configurator_setup.rb +0 -1
  16. data/lib/ceedling/defaults.rb +7 -2
  17. data/lib/ceedling/dependinator.rb +10 -2
  18. data/lib/ceedling/file_finder.rb +57 -49
  19. data/lib/ceedling/file_path_utils.rb +12 -4
  20. data/lib/ceedling/file_wrapper.rb +4 -0
  21. data/lib/ceedling/generator.rb +4 -3
  22. data/lib/ceedling/generator_test_results.rb +15 -13
  23. data/lib/ceedling/plugin_manager.rb +18 -18
  24. data/lib/ceedling/plugin_reportinator.rb +3 -2
  25. data/lib/ceedling/plugin_reportinator_helper.rb +2 -3
  26. data/lib/ceedling/preprocessinator_extractor.rb +2 -2
  27. data/lib/ceedling/preprocessinator_includes_handler.rb +5 -0
  28. data/lib/ceedling/rakefile.rb +1 -0
  29. data/lib/ceedling/release_invoker_helper.rb +5 -2
  30. data/lib/ceedling/rules_release.rake +2 -1
  31. data/lib/ceedling/rules_tests.rake +18 -9
  32. data/lib/ceedling/rules_tests_deep_dependencies.rake +2 -2
  33. data/lib/ceedling/task_invoker.rb +15 -3
  34. data/lib/ceedling/tasks_vendor.rake +3 -3
  35. data/lib/ceedling/test_invoker.rb +39 -12
  36. data/lib/ceedling/test_invoker_helper.rb +5 -1
  37. data/lib/ceedling/tool_executor.rb +8 -4
  38. data/lib/ceedling/version.rb +1 -1
  39. data/out.fail +21 -0
  40. data/plugins/beep/README.md +22 -0
  41. data/plugins/beep/lib/beep.rb +40 -0
  42. data/plugins/bullseye/bullseye.rake +43 -36
  43. data/plugins/bullseye/config/defaults.yml +4 -0
  44. data/plugins/bullseye/lib/bullseye.rb +27 -5
  45. data/plugins/command_hooks/lib/command_hooks.rb +3 -0
  46. data/plugins/gcov/README.md +34 -1
  47. data/plugins/gcov/config/defaults.yml +3 -3
  48. data/plugins/gcov/gcov.rake +7 -5
  49. data/plugins/gcov/lib/gcov.rb +3 -1
  50. data/plugins/gcov/lib/gcov_constants.rb +2 -0
  51. data/plugins/junit_tests_report/lib/junit_tests_report.rb +12 -9
  52. data/plugins/module_generator/lib/module_generator.rb +14 -1
  53. data/plugins/module_generator/module_generator.rake +21 -4
  54. data/plugins/raw_output_report/lib/raw_output_report.rb +41 -0
  55. data/spec/gcov/gcov_deployment_spec.rb +1 -1
  56. data/spec/gcov/gcov_test_cases_spec.rb +2 -2
  57. data/spec/generator_test_results_spec.rb +5 -0
  58. data/spec/preprocessinator_includes_handler_spec.rb +1 -0
  59. data/spec/spec_system_helper.rb +178 -4
  60. data/spec/support/test_example.fail +1 -0
  61. data/spec/support/test_example.pass +1 -0
  62. data/spec/support/test_example_empty.pass +1 -0
  63. data/spec/support/test_example_ignore.pass +1 -0
  64. data/spec/support/test_example_mangled.pass +1 -0
  65. data/spec/support/test_example_with_time.pass +22 -0
  66. data/spec/system/deployment_spec.rb +33 -0
  67. data/vendor/cmock/README.md +4 -3
  68. data/vendor/cmock/docs/CMock_Summary.md +1 -1
  69. data/vendor/cmock/lib/cmock_config.rb +4 -0
  70. data/vendor/cmock/lib/cmock_generator.rb +5 -2
  71. data/vendor/cmock/lib/cmock_generator_plugin_array.rb +4 -4
  72. data/vendor/cmock/lib/cmock_generator_plugin_callback.rb +9 -11
  73. data/vendor/cmock/lib/cmock_generator_plugin_cexception.rb +0 -1
  74. data/vendor/cmock/lib/cmock_generator_plugin_ignore.rb +2 -3
  75. data/vendor/cmock/lib/cmock_generator_plugin_ignore_arg.rb +2 -4
  76. data/vendor/cmock/lib/cmock_generator_plugin_return_thru_ptr.rb +0 -2
  77. data/vendor/cmock/lib/cmock_generator_utils.rb +16 -3
  78. data/vendor/cmock/lib/cmock_header_parser.rb +59 -34
  79. data/vendor/cmock/release/build.info +1 -1
  80. data/vendor/cmock/release/version.info +1 -1
  81. data/vendor/cmock/scripts/create_makefile.rb +17 -2
  82. data/vendor/cmock/src/cmock.c +13 -7
  83. data/vendor/cmock/test/test_helper.rb +11 -10
  84. data/vendor/cmock/test/unit/cmock_config_test.rb +4 -2
  85. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +10 -4
  86. data/vendor/cmock/test/unit/cmock_generator_plugin_array_test.rb +20 -12
  87. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_a_test.rb +2 -2
  88. data/vendor/cmock/test/unit/cmock_generator_plugin_expect_b_test.rb +2 -2
  89. data/vendor/cmock/test/unit/cmock_generator_plugin_ignore_arg_test.rb +3 -3
  90. data/vendor/cmock/test/unit/cmock_generator_plugin_return_thru_ptr_test.rb +8 -6
  91. data/vendor/cmock/test/unit/cmock_generator_utils_test.rb +27 -10
  92. data/vendor/cmock/test/unit/cmock_header_parser_test.rb +108 -20
  93. data/vendor/cmock/vendor/c_exception/Gemfile +4 -0
  94. data/vendor/cmock/vendor/c_exception/Gemfile.lock +12 -0
  95. data/vendor/cmock/vendor/c_exception/LICENSE.txt +30 -0
  96. data/vendor/cmock/vendor/c_exception/README.md +162 -0
  97. data/vendor/cmock/vendor/c_exception/Rakefile +42 -0
  98. data/vendor/cmock/vendor/c_exception/docs/CException.md +292 -0
  99. data/vendor/cmock/vendor/c_exception/docs/ThrowTheSwitchCodingStandard.md +207 -0
  100. data/vendor/cmock/vendor/c_exception/lib/CException.c +46 -0
  101. data/vendor/cmock/vendor/c_exception/lib/CException.h +110 -0
  102. data/vendor/cmock/vendor/c_exception/makefile +24 -0
  103. data/vendor/cmock/vendor/c_exception/release/build.info +2 -0
  104. data/vendor/cmock/vendor/c_exception/release/version.info +2 -0
  105. data/vendor/cmock/vendor/c_exception/test/CExceptionConfig.h +46 -0
  106. data/vendor/cmock/vendor/c_exception/test/TestException.c +391 -0
  107. data/vendor/cmock/vendor/c_exception/test/TestException_Runner.c +67 -0
  108. data/vendor/cmock/vendor/unity/README.md +231 -0
  109. data/vendor/cmock/vendor/unity/auto/colour_prompt.rb +118 -0
  110. data/vendor/cmock/vendor/unity/auto/colour_reporter.rb +39 -0
  111. data/vendor/cmock/vendor/unity/auto/generate_config.yml +36 -0
  112. data/vendor/cmock/vendor/unity/auto/generate_module.rb +308 -0
  113. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +457 -0
  114. data/vendor/cmock/vendor/unity/auto/parse_output.rb +323 -0
  115. data/vendor/cmock/vendor/unity/auto/stylize_as_junit.rb +252 -0
  116. data/vendor/cmock/vendor/unity/auto/test_file_filter.rb +25 -0
  117. data/vendor/cmock/vendor/unity/auto/type_sanitizer.rb +6 -0
  118. data/vendor/cmock/vendor/unity/auto/unity_test_summary.py +139 -0
  119. data/vendor/cmock/vendor/unity/auto/unity_test_summary.rb +136 -0
  120. data/vendor/cmock/vendor/unity/auto/unity_to_junit.py +146 -0
  121. data/vendor/cmock/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +206 -0
  122. data/vendor/cmock/vendor/unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  123. data/vendor/cmock/vendor/unity/docs/UnityAssertionsReference.md +779 -0
  124. data/vendor/cmock/vendor/unity/docs/UnityConfigurationGuide.md +433 -0
  125. data/vendor/cmock/vendor/unity/docs/UnityGettingStartedGuide.md +192 -0
  126. data/vendor/cmock/vendor/unity/docs/UnityHelperScriptsGuide.md +260 -0
  127. data/vendor/cmock/vendor/unity/docs/license.txt +21 -0
  128. data/vendor/cmock/vendor/unity/examples/example_1/makefile +71 -0
  129. data/vendor/cmock/vendor/unity/examples/example_1/readme.txt +5 -0
  130. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.c +24 -0
  131. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode.h +3 -0
  132. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.c +11 -0
  133. data/vendor/cmock/vendor/unity/examples/example_1/src/ProductionCode2.h +2 -0
  134. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode.c +62 -0
  135. data/vendor/cmock/vendor/unity/examples/example_1/test/TestProductionCode2.c +31 -0
  136. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  137. data/vendor/cmock/vendor/unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  138. data/vendor/cmock/vendor/unity/examples/example_2/makefile +70 -0
  139. data/vendor/cmock/vendor/unity/examples/example_2/readme.txt +5 -0
  140. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.c +24 -0
  141. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode.h +3 -0
  142. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.c +11 -0
  143. data/vendor/cmock/vendor/unity/examples/example_2/src/ProductionCode2.h +2 -0
  144. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode.c +64 -0
  145. data/vendor/cmock/vendor/unity/examples/example_2/test/TestProductionCode2.c +33 -0
  146. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  147. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  148. data/vendor/cmock/vendor/unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  149. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.c +10 -0
  150. data/vendor/cmock/vendor/unity/examples/example_3/helper/UnityHelper.h +12 -0
  151. data/vendor/cmock/vendor/unity/examples/example_3/rakefile.rb +43 -0
  152. data/vendor/cmock/vendor/unity/examples/example_3/rakefile_helper.rb +249 -0
  153. data/vendor/cmock/vendor/unity/examples/example_3/readme.txt +13 -0
  154. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.c +24 -0
  155. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode.h +3 -0
  156. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.c +11 -0
  157. data/vendor/cmock/vendor/unity/examples/example_3/src/ProductionCode2.h +2 -0
  158. data/vendor/cmock/vendor/unity/examples/example_3/target_gcc_32.yml +46 -0
  159. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode.c +62 -0
  160. data/vendor/cmock/vendor/unity/examples/example_3/test/TestProductionCode2.c +31 -0
  161. data/vendor/cmock/vendor/unity/examples/unity_config.h +247 -0
  162. data/vendor/cmock/vendor/unity/extras/eclipse/error_parsers.txt +26 -0
  163. data/vendor/cmock/vendor/unity/extras/fixture/rakefile.rb +48 -0
  164. data/vendor/cmock/vendor/unity/extras/fixture/rakefile_helper.rb +178 -0
  165. data/vendor/cmock/vendor/unity/extras/fixture/readme.txt +9 -0
  166. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +436 -0
  167. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +83 -0
  168. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +51 -0
  169. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +47 -0
  170. data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +75 -0
  171. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +22 -0
  172. data/vendor/cmock/vendor/unity/extras/fixture/test/template_fixture_tests.c +39 -0
  173. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +543 -0
  174. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +57 -0
  175. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +57 -0
  176. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +17 -0
  177. data/vendor/cmock/vendor/unity/release/build.info +2 -0
  178. data/vendor/cmock/vendor/unity/release/version.info +2 -0
  179. data/vendor/cmock/vendor/unity/src/unity.c +1572 -0
  180. data/vendor/cmock/vendor/unity/src/unity.h +503 -0
  181. data/vendor/cmock/vendor/unity/src/unity_internals.h +924 -0
  182. data/vendor/cmock/vendor/unity/test/Makefile +68 -0
  183. data/vendor/cmock/vendor/unity/test/expectdata/testsample_cmd.c +61 -0
  184. data/vendor/cmock/vendor/unity/test/expectdata/testsample_def.c +57 -0
  185. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.c +55 -0
  186. data/vendor/cmock/vendor/unity/test/expectdata/testsample_head1.h +15 -0
  187. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_cmd.c +80 -0
  188. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_def.c +76 -0
  189. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.c +75 -0
  190. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_head1.h +13 -0
  191. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new1.c +89 -0
  192. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_new2.c +89 -0
  193. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_param.c +77 -0
  194. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run1.c +89 -0
  195. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_run2.c +89 -0
  196. data/vendor/cmock/vendor/unity/test/expectdata/testsample_mock_yaml.c +90 -0
  197. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new1.c +67 -0
  198. data/vendor/cmock/vendor/unity/test/expectdata/testsample_new2.c +70 -0
  199. data/vendor/cmock/vendor/unity/test/expectdata/testsample_param.c +58 -0
  200. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run1.c +67 -0
  201. data/vendor/cmock/vendor/unity/test/expectdata/testsample_run2.c +70 -0
  202. data/vendor/cmock/vendor/unity/test/expectdata/testsample_yaml.c +71 -0
  203. data/vendor/cmock/vendor/unity/test/rakefile +125 -0
  204. data/vendor/cmock/vendor/unity/test/rakefile_helper.rb +260 -0
  205. data/vendor/cmock/vendor/unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  206. data/vendor/cmock/vendor/unity/test/targets/clang_file.yml +78 -0
  207. data/vendor/cmock/vendor/unity/test/targets/clang_strict.yml +78 -0
  208. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +49 -0
  209. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +50 -0
  210. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_limits.yml +47 -0
  211. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_stdint.yml +59 -0
  212. data/vendor/cmock/vendor/unity/test/targets/gcc_manual_math.yml +47 -0
  213. data/vendor/cmock/vendor/unity/test/targets/hitech_picc18.yml +101 -0
  214. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v4.yml +90 -0
  215. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5.yml +80 -0
  216. data/vendor/cmock/vendor/unity/test/targets/iar_arm_v5_3.yml +80 -0
  217. data/vendor/cmock/vendor/unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +94 -0
  218. data/vendor/cmock/vendor/unity/test/targets/iar_cortexm3_v5.yml +84 -0
  219. data/vendor/cmock/vendor/unity/test/targets/iar_msp430.yml +95 -0
  220. data/vendor/cmock/vendor/unity/test/targets/iar_sh2a_v6.yml +86 -0
  221. data/vendor/cmock/vendor/unity/test/testdata/CException.h +11 -0
  222. data/vendor/cmock/vendor/unity/test/testdata/Defs.h +8 -0
  223. data/vendor/cmock/vendor/unity/test/testdata/cmock.h +14 -0
  224. data/vendor/cmock/vendor/unity/test/testdata/mockMock.h +13 -0
  225. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGenerator.c +186 -0
  226. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +70 -0
  227. data/vendor/cmock/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +195 -0
  228. data/vendor/cmock/vendor/unity/test/tests/test_generate_test_runner.rb +1252 -0
  229. data/vendor/cmock/vendor/unity/test/tests/testparameterized.c +113 -0
  230. data/vendor/cmock/vendor/unity/test/tests/testunity.c +5371 -0
  231. data/vendor/unity/auto/generate_test_runner.rb +30 -10
  232. data/vendor/unity/auto/parse_output.rb +212 -109
  233. data/vendor/unity/docs/ThrowTheSwitchCodingStandard.md +9 -10
  234. data/vendor/unity/docs/UnityAssertionsReference.md +11 -2
  235. data/vendor/unity/docs/UnityConfigurationGuide.md +90 -55
  236. data/vendor/unity/docs/UnityGettingStartedGuide.md +6 -5
  237. data/vendor/unity/docs/UnityHelperScriptsGuide.md +23 -5
  238. data/vendor/unity/examples/unity_config.h +8 -0
  239. data/vendor/unity/extras/fixture/src/unity_fixture.c +4 -0
  240. data/vendor/unity/extras/fixture/src/unity_fixture.h +1 -1
  241. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +2 -2
  242. data/vendor/unity/release/build.info +1 -1
  243. data/vendor/unity/release/version.info +1 -1
  244. data/vendor/unity/src/unity.c +64 -57
  245. data/vendor/unity/src/unity.h +111 -7
  246. data/vendor/unity/src/unity_internals.h +173 -73
  247. data/vendor/unity/test/Makefile +5 -1
  248. data/vendor/unity/test/testdata/testRunnerGenerator.c +4 -1
  249. data/vendor/unity/test/testdata/testRunnerGeneratorSmall.c +4 -1
  250. data/vendor/unity/test/testdata/testRunnerGeneratorWithMocks.c +4 -1
  251. data/vendor/unity/test/tests/testparameterized.c +5 -2
  252. data/vendor/unity/test/tests/testunity.c +34 -0
  253. metadata +150 -2
@@ -0,0 +1,31 @@
1
+
2
+ #include "ProductionCode2.h"
3
+ #include "unity.h"
4
+
5
+ /* These should be ignored because they are commented out in various ways:
6
+ #include "whatever.h"
7
+ #include "somethingelse.h"
8
+ */
9
+
10
+ void setUp(void)
11
+ {
12
+ }
13
+
14
+ void tearDown(void)
15
+ {
16
+ }
17
+
18
+ void test_IgnoredTest(void)
19
+ {
20
+ TEST_IGNORE_MESSAGE("This Test Was Ignored On Purpose");
21
+ }
22
+
23
+ void test_AnotherIgnoredTest(void)
24
+ {
25
+ TEST_IGNORE_MESSAGE("These Can Be Useful For Leaving Yourself Notes On What You Need To Do Yet");
26
+ }
27
+
28
+ void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void)
29
+ {
30
+ TEST_IGNORE(); /* Like This */
31
+ }
@@ -0,0 +1,53 @@
1
+ /* AUTOGENERATED FILE. DO NOT EDIT. */
2
+
3
+ /*=======Test Runner Used To Run Each Test Below=====*/
4
+ #define RUN_TEST(TestFunc, TestLineNum) \
5
+ { \
6
+ Unity.CurrentTestName = #TestFunc; \
7
+ Unity.CurrentTestLineNumber = TestLineNum; \
8
+ Unity.NumberOfTests++; \
9
+ if (TEST_PROTECT()) \
10
+ { \
11
+ setUp(); \
12
+ TestFunc(); \
13
+ } \
14
+ if (TEST_PROTECT()) \
15
+ { \
16
+ tearDown(); \
17
+ } \
18
+ UnityConcludeTest(); \
19
+ }
20
+
21
+ /*=======Automagically Detected Files To Include=====*/
22
+ #include "unity.h"
23
+ #include <setjmp.h>
24
+ #include <stdio.h>
25
+ #include "ProductionCode2.h"
26
+
27
+ /*=======External Functions This Runner Calls=====*/
28
+ extern void setUp(void);
29
+ extern void tearDown(void);
30
+ extern void test_IgnoredTest(void);
31
+ extern void test_AnotherIgnoredTest(void);
32
+ extern void test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented(void);
33
+
34
+
35
+ /*=======Test Reset Option=====*/
36
+ void resetTest(void);
37
+ void resetTest(void)
38
+ {
39
+ tearDown();
40
+ setUp();
41
+ }
42
+
43
+
44
+ /*=======MAIN=====*/
45
+ int main(void)
46
+ {
47
+ UnityBegin("test/TestProductionCode2.c");
48
+ RUN_TEST(test_IgnoredTest, 18);
49
+ RUN_TEST(test_AnotherIgnoredTest, 23);
50
+ RUN_TEST(test_ThisFunctionHasNotBeenTested_NeedsToBeImplemented, 28);
51
+
52
+ return (UnityEnd());
53
+ }
@@ -0,0 +1,57 @@
1
+ /* AUTOGENERATED FILE. DO NOT EDIT. */
2
+
3
+ /*=======Test Runner Used To Run Each Test Below=====*/
4
+ #define RUN_TEST(TestFunc, TestLineNum) \
5
+ { \
6
+ Unity.CurrentTestName = #TestFunc; \
7
+ Unity.CurrentTestLineNumber = TestLineNum; \
8
+ Unity.NumberOfTests++; \
9
+ if (TEST_PROTECT()) \
10
+ { \
11
+ setUp(); \
12
+ TestFunc(); \
13
+ } \
14
+ if (TEST_PROTECT()) \
15
+ { \
16
+ tearDown(); \
17
+ } \
18
+ UnityConcludeTest(); \
19
+ }
20
+
21
+ /*=======Automagically Detected Files To Include=====*/
22
+ #include "unity.h"
23
+ #include <setjmp.h>
24
+ #include <stdio.h>
25
+ #include "ProductionCode.h"
26
+
27
+ /*=======External Functions This Runner Calls=====*/
28
+ extern void setUp(void);
29
+ extern void tearDown(void);
30
+ extern void test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode(void);
31
+ extern void test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken(void);
32
+ extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue(void);
33
+ extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void);
34
+ extern void test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void);
35
+
36
+
37
+ /*=======Test Reset Option=====*/
38
+ void resetTest(void);
39
+ void resetTest(void)
40
+ {
41
+ tearDown();
42
+ setUp();
43
+ }
44
+
45
+
46
+ /*=======MAIN=====*/
47
+ int main(void)
48
+ {
49
+ UnityBegin("test/TestProductionCode.c");
50
+ RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode, 20);
51
+ RUN_TEST(test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken, 30);
52
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue, 41);
53
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain, 51);
54
+ RUN_TEST(test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed, 57);
55
+
56
+ return (UnityEnd());
57
+ }
@@ -0,0 +1,70 @@
1
+ # ==========================================
2
+ # Unity Project - A Test Framework for C
3
+ # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4
+ # [Released under MIT License. Please refer to license.txt for details]
5
+ # ==========================================
6
+
7
+ #We try to detect the OS we are running on, and adjust commands as needed
8
+ ifeq ($(OS),Windows_NT)
9
+ ifeq ($(shell uname -s),) # not in a bash-like shell
10
+ CLEANUP = del /F /Q
11
+ MKDIR = mkdir
12
+ else # in a bash-like shell, like msys
13
+ CLEANUP = rm -f
14
+ MKDIR = mkdir -p
15
+ endif
16
+ TARGET_EXTENSION=.exe
17
+ else
18
+ CLEANUP = rm -f
19
+ MKDIR = mkdir -p
20
+ TARGET_EXTENSION=.out
21
+ endif
22
+
23
+ C_COMPILER=gcc
24
+ ifeq ($(shell uname -s), Darwin)
25
+ C_COMPILER=clang
26
+ endif
27
+
28
+ UNITY_ROOT=../..
29
+
30
+ CFLAGS=-std=c99
31
+ CFLAGS += -Wall
32
+ CFLAGS += -Wextra
33
+ CFLAGS += -Wpointer-arith
34
+ CFLAGS += -Wcast-align
35
+ CFLAGS += -Wwrite-strings
36
+ CFLAGS += -Wswitch-default
37
+ CFLAGS += -Wunreachable-code
38
+ CFLAGS += -Winit-self
39
+ CFLAGS += -Wmissing-field-initializers
40
+ CFLAGS += -Wno-unknown-pragmas
41
+ CFLAGS += -Wstrict-prototypes
42
+ CFLAGS += -Wundef
43
+ CFLAGS += -Wold-style-definition
44
+
45
+ TARGET_BASE1=all_tests
46
+ TARGET1 = $(TARGET_BASE1)$(TARGET_EXTENSION)
47
+ SRC_FILES1=\
48
+ $(UNITY_ROOT)/src/unity.c \
49
+ $(UNITY_ROOT)/extras/fixture/src/unity_fixture.c \
50
+ src/ProductionCode.c \
51
+ src/ProductionCode2.c \
52
+ test/TestProductionCode.c \
53
+ test/TestProductionCode2.c \
54
+ test/test_runners/TestProductionCode_Runner.c \
55
+ test/test_runners/TestProductionCode2_Runner.c \
56
+ test/test_runners/all_tests.c
57
+ INC_DIRS=-Isrc -I$(UNITY_ROOT)/src -I$(UNITY_ROOT)/extras/fixture/src
58
+ SYMBOLS=
59
+
60
+ all: clean default
61
+
62
+ default:
63
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $(SRC_FILES1) -o $(TARGET1)
64
+ - ./$(TARGET1) -v
65
+
66
+ clean:
67
+ $(CLEANUP) $(TARGET1)
68
+
69
+ ci: CFLAGS += -Werror
70
+ ci: default
@@ -0,0 +1,5 @@
1
+ Example 2
2
+ =========
3
+
4
+ Same as the first example, but now using Unity's test fixture to group tests
5
+ together. Using the test fixture also makes writing test runners much easier.
@@ -0,0 +1,24 @@
1
+
2
+ #include "ProductionCode.h"
3
+
4
+ int Counter = 0;
5
+ int NumbersToFind[9] = { 0, 34, 55, 66, 32, 11, 1, 77, 888 }; //some obnoxious array to search that is 1-based indexing instead of 0.
6
+
7
+ // This function is supposed to search through NumbersToFind and find a particular number.
8
+ // If it finds it, the index is returned. Otherwise 0 is returned which sorta makes sense since
9
+ // NumbersToFind is indexed from 1. Unfortunately it's broken
10
+ // (and should therefore be caught by our tests)
11
+ int FindFunction_WhichIsBroken(int NumberToFind)
12
+ {
13
+ int i = 0;
14
+ while (i <= 8) //Notice I should have been in braces
15
+ i++;
16
+ if (NumbersToFind[i] == NumberToFind) //Yikes! I'm getting run after the loop finishes instead of during it!
17
+ return i;
18
+ return 0;
19
+ }
20
+
21
+ int FunctionWhichReturnsLocalVariable(void)
22
+ {
23
+ return Counter;
24
+ }
@@ -0,0 +1,3 @@
1
+
2
+ int FindFunction_WhichIsBroken(int NumberToFind);
3
+ int FunctionWhichReturnsLocalVariable(void);
@@ -0,0 +1,11 @@
1
+
2
+ #include "ProductionCode2.h"
3
+
4
+ char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction)
5
+ {
6
+ (void)Poor;
7
+ (void)LittleFunction;
8
+ //Since There Are No Tests Yet, This Function Could Be Empty For All We Know.
9
+ // Which isn't terribly useful... but at least we put in a TEST_IGNORE so we won't forget
10
+ return (char*)0;
11
+ }
@@ -0,0 +1,2 @@
1
+
2
+ char* ThisFunctionHasNotBeenTested(int Poor, char* LittleFunction);
@@ -0,0 +1,64 @@
1
+ #include "ProductionCode.h"
2
+ #include "unity.h"
3
+ #include "unity_fixture.h"
4
+
5
+ TEST_GROUP(ProductionCode);
6
+
7
+ //sometimes you may want to get at local data in a module.
8
+ //for example: If you plan to pass by reference, this could be useful
9
+ //however, it should often be avoided
10
+ extern int Counter;
11
+
12
+ TEST_SETUP(ProductionCode)
13
+ {
14
+ //This is run before EACH TEST
15
+ Counter = 0x5a5a;
16
+ }
17
+
18
+ TEST_TEAR_DOWN(ProductionCode)
19
+ {
20
+ }
21
+
22
+ TEST(ProductionCode, FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode)
23
+ {
24
+ //All of these should pass
25
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(78));
26
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(1));
27
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(33));
28
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(999));
29
+ TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(-1));
30
+ }
31
+
32
+ TEST(ProductionCode, FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken)
33
+ {
34
+ // You should see this line fail in your test summary
35
+ TEST_ASSERT_EQUAL(1, FindFunction_WhichIsBroken(34));
36
+
37
+ // Notice the rest of these didn't get a chance to run because the line above failed.
38
+ // Unit tests abort each test function on the first sign of trouble.
39
+ // Then NEXT test function runs as normal.
40
+ TEST_ASSERT_EQUAL(8, FindFunction_WhichIsBroken(8888));
41
+ }
42
+
43
+ TEST(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue)
44
+ {
45
+ //This should be true because setUp set this up for us before this test
46
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
47
+
48
+ //This should be true because we can still change our answer
49
+ Counter = 0x1234;
50
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
51
+ }
52
+
53
+ TEST(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain)
54
+ {
55
+ //This should be true again because setup was rerun before this test (and after we changed it to 0x1234)
56
+ TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable());
57
+ }
58
+
59
+ TEST(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed)
60
+ {
61
+ //Sometimes you get the test wrong. When that happens, you get a failure too... and a quick look should tell
62
+ // you what actually happened...which in this case was a failure to setup the initial condition.
63
+ TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable());
64
+ }
@@ -0,0 +1,33 @@
1
+ #include "ProductionCode2.h"
2
+ #include "unity.h"
3
+ #include "unity_fixture.h"
4
+
5
+ TEST_GROUP(ProductionCode2);
6
+
7
+ /* These should be ignored because they are commented out in various ways:
8
+ #include "whatever.h"
9
+ */
10
+ //#include "somethingelse.h"
11
+
12
+ TEST_SETUP(ProductionCode2)
13
+ {
14
+ }
15
+
16
+ TEST_TEAR_DOWN(ProductionCode2)
17
+ {
18
+ }
19
+
20
+ TEST(ProductionCode2, IgnoredTest)
21
+ {
22
+ TEST_IGNORE_MESSAGE("This Test Was Ignored On Purpose");
23
+ }
24
+
25
+ TEST(ProductionCode2, AnotherIgnoredTest)
26
+ {
27
+ TEST_IGNORE_MESSAGE("These Can Be Useful For Leaving Yourself Notes On What You Need To Do Yet");
28
+ }
29
+
30
+ TEST(ProductionCode2, ThisFunctionHasNotBeenTested_NeedsToBeImplemented)
31
+ {
32
+ TEST_IGNORE(); //Like This
33
+ }
@@ -0,0 +1,9 @@
1
+ #include "unity.h"
2
+ #include "unity_fixture.h"
3
+
4
+ TEST_GROUP_RUNNER(ProductionCode2)
5
+ {
6
+ RUN_TEST_CASE(ProductionCode2, IgnoredTest);
7
+ RUN_TEST_CASE(ProductionCode2, AnotherIgnoredTest);
8
+ RUN_TEST_CASE(ProductionCode2, ThisFunctionHasNotBeenTested_NeedsToBeImplemented);
9
+ }
@@ -0,0 +1,11 @@
1
+ #include "unity.h"
2
+ #include "unity_fixture.h"
3
+
4
+ TEST_GROUP_RUNNER(ProductionCode)
5
+ {
6
+ RUN_TEST_CASE(ProductionCode, FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode);
7
+ RUN_TEST_CASE(ProductionCode, FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken);
8
+ RUN_TEST_CASE(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue);
9
+ RUN_TEST_CASE(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain);
10
+ RUN_TEST_CASE(ProductionCode, FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed);
11
+ }
@@ -0,0 +1,12 @@
1
+ #include "unity_fixture.h"
2
+
3
+ static void RunAllTests(void)
4
+ {
5
+ RUN_TEST_GROUP(ProductionCode);
6
+ RUN_TEST_GROUP(ProductionCode2);
7
+ }
8
+
9
+ int main(int argc, const char * argv[])
10
+ {
11
+ return UnityMain(argc, argv, RunAllTests);
12
+ }
@@ -0,0 +1,10 @@
1
+ #include "unity.h"
2
+ #include "UnityHelper.h"
3
+ #include <stdio.h>
4
+ #include <string.h>
5
+
6
+ void AssertEqualExampleStruct(const EXAMPLE_STRUCT_T expected, const EXAMPLE_STRUCT_T actual, const unsigned short line)
7
+ {
8
+ UNITY_TEST_ASSERT_EQUAL_INT(expected.x, actual.x, line, "Example Struct Failed For Field x");
9
+ UNITY_TEST_ASSERT_EQUAL_INT(expected.y, actual.y, line, "Example Struct Failed For Field y");
10
+ }
@@ -0,0 +1,12 @@
1
+ #ifndef _TESTHELPER_H
2
+ #define _TESTHELPER_H
3
+
4
+ #include "Types.h"
5
+
6
+ void AssertEqualExampleStruct(const EXAMPLE_STRUCT_T expected, const EXAMPLE_STRUCT_T actual, const unsigned short line);
7
+
8
+ #define UNITY_TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual, line, message) AssertEqualExampleStruct(expected, actual, line);
9
+
10
+ #define TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual) UNITY_TEST_ASSERT_EQUAL_EXAMPLE_STRUCT_T(expected, actual, __LINE__, NULL);
11
+
12
+ #endif // _TESTHELPER_H
@@ -0,0 +1,43 @@
1
+ HERE = File.expand_path(File.dirname(__FILE__)) + '/'
2
+ UNITY_ROOT = File.expand_path(File.dirname(__FILE__)) + '/../..'
3
+
4
+ require 'rake'
5
+ require 'rake/clean'
6
+ require HERE + 'rakefile_helper'
7
+
8
+ TEMP_DIRS = [
9
+ File.join(HERE, 'build')
10
+ ].freeze
11
+
12
+ TEMP_DIRS.each do |dir|
13
+ directory(dir)
14
+ CLOBBER.include(dir)
15
+ end
16
+
17
+ task prepare_for_tests: TEMP_DIRS
18
+
19
+ include RakefileHelpers
20
+
21
+ # Load default configuration, for now
22
+ DEFAULT_CONFIG_FILE = 'target_gcc_32.yml'.freeze
23
+ configure_toolchain(DEFAULT_CONFIG_FILE)
24
+
25
+ task unit: [:prepare_for_tests] do
26
+ run_tests unit_test_files
27
+ end
28
+
29
+ desc 'Generate test summary'
30
+ task :summary do
31
+ report_summary
32
+ end
33
+
34
+ desc 'Build and test Unity'
35
+ task all: %i(clean unit summary)
36
+ task default: %i(clobber all)
37
+ task ci: [:default]
38
+ task cruise: [:default]
39
+
40
+ desc 'Load configuration'
41
+ task :config, :config_file do |_t, args|
42
+ configure_toolchain(args[:config_file])
43
+ end