ceedling 0.28.2 → 0.28.3

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ab20a20fd53b1935cb3c11cffa2f890c18f4f10
4
- data.tar.gz: 8d728ca829262063f0422614c248d0eb77ca77a7
3
+ metadata.gz: a42e9eac6e308f7c966953c1c2d3dc9f1ccfc9bb
4
+ data.tar.gz: bc07f7ab10c38c3f3ddc106e87610d2cb504f263
5
5
  SHA512:
6
- metadata.gz: 6aac3b5f1c9bf0179912b4bb8f1ea0889765643d9414afad5706bc45b20110045766b5ea8035809406df5247f8b6ec32ae7ebcc299ad1e2dce37365a50b3525c
7
- data.tar.gz: e40627df9e67de61b8f7e0e6e5360bcc4d69f727c1cff93a13fdbaea06f1333184b1fbf56664eeefab381926f68ae66e142f1194660442a619e12a699bf577f0
6
+ metadata.gz: 1af9dc3072c77add2e69897021dfadb222b7568315c23777233afd1b27cf4fe0dc1bd1b865762676244a79ce785774468d7bf7a18c70e60b47c5d685db9bc2c8
7
+ data.tar.gz: 10c3c3203587c59f3c93fad88b53f3608c0a52f41d81753c2982167b8c4804524a5f6ac773db311bb3d0eb6c34431b3732fa4551d16eec608ef561343815134e
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ ruby vendor/ceedling/bin/ceedling $*
@@ -0,0 +1 @@
1
+ ruby vendor\ceedling\bin\ceedling %*
@@ -0,0 +1,5 @@
1
+ build/artifacts
2
+ build/gcov
3
+ builld/logs
4
+ build/temp
5
+ build/test
@@ -87,4 +87,5 @@
87
87
  :enabled:
88
88
  - stdout_pretty_tests_report
89
89
  - module_generator
90
+ - raw_output_report
90
91
  ...
@@ -12,6 +12,9 @@
12
12
  :build_root: build
13
13
  # :release_build: TRUE
14
14
  :test_file_prefix: test_
15
+ :which_ceedling: vendor/ceedling
16
+ :default_tasks:
17
+ - test:all
15
18
 
16
19
  #:release_build:
17
20
  # :output: MyApp.out
@@ -0,0 +1,12 @@
1
+ #include "unity.h"
2
+ #include "example_file.h"
3
+ #include <stdio.h>
4
+
5
+ void setUp(void) {}
6
+ void tearDown(void) {}
7
+
8
+ void test_add_numbers_adds_numbers(void) {
9
+ printf("1 + 1 = 2\n");
10
+ TEST_ASSERT_EQUAL(2, add_numbers(1,1));
11
+ }
12
+
@@ -12,6 +12,11 @@ if (!project_found)
12
12
  project_found = File.exists?(main_filepath)
13
13
  end
14
14
 
15
+ def is_windows?
16
+ return ((RbConfig::CONFIG['host_os'] =~ /mswin|mingw/) ? true : false) if defined?(RbConfig)
17
+ return ((Config::CONFIG['host_os'] =~ /mswin|mingw/) ? true : false)
18
+ end
19
+
15
20
  unless (project_found)
16
21
  #===================================== We Do Not Have A Project ================================================
17
22
 
@@ -29,6 +34,9 @@ unless (project_found)
29
34
  method_option :no_docs, :type => :boolean, :default => false, :desc => "No docs in vendor directory"
30
35
  method_option :nodocs, :type => :boolean, :default => false
31
36
  method_option :as_gem, :type => :boolean, :default => false, :desc => "Create the scaffold using Ceedling as a gem instead of filling in the vendor directory. Implies --no-docs."
37
+ method_option :asgem, :type => :boolean, :default => false
38
+ method_option :with_ignore, :type => :boolean, :default => false, :desc => "Create a gitignore file for ignoring ceedling generated files."
39
+ method_option :withignore, :type => :boolean, :default => false
32
40
  method_option :no_configs, :type => :boolean, :default => false, :desc => "Don't install starter configuration files."
33
41
  method_option :noconfigs, :type => :boolean, :default => false
34
42
  def new(name, silent = false)
@@ -47,17 +55,17 @@ unless (project_found)
47
55
  no_commands do
48
56
  def copy_assets_and_create_structure(name, silent=false, force=false, options = {})
49
57
 
50
- no_docs = options[:no_docs] || options[:nodocs] || false
51
- no_configs = options[:no_configs] || options[:noconfigs] || false
52
- as_gem = options[:as_gem] || options[:asgem] || false
58
+ no_docs = options[:no_docs] || options[:nodocs] || false
59
+ no_configs = options[:no_configs] || options[:noconfigs] || false
60
+ as_gem = options[:as_gem] || options[:asgem] || false
61
+ with_ignore = options[:with_ignore] || options[:withignore] || false
53
62
 
54
63
  ceedling_path = File.join(name, 'vendor', 'ceedling')
55
64
  source_path = File.join(name, 'src')
56
65
  test_path = File.join(name, 'test')
57
66
  test_support_path = File.join(name, 'test/support')
58
- build_path = File.join(name, 'build')
59
67
 
60
- [source_path, test_path, test_support_path, build_path].each do |d|
68
+ [source_path, test_path, test_support_path].each do |d|
61
69
  FileUtils.mkdir_p d
62
70
  end
63
71
 
@@ -87,13 +95,20 @@ unless (project_found)
87
95
  end
88
96
  end
89
97
 
90
- folders = %w{plugins lib}
98
+ folders = if as_gem
99
+ %w{plugins lib}
100
+ else
101
+ %w{plugins lib bin}
102
+ end
103
+
104
+ #copy full folders from ceedling gem into project
91
105
  folders.map do |f|
92
106
  {:src => f, :dst => File.join(ceedling_path, f)}
93
107
  end.each do |f|
94
108
  directory(f[:src], f[:dst], :force => force)
95
109
  end
96
110
 
111
+ #copy necessary subcomponents from ceedling gem into project
97
112
  sub_components = [
98
113
  {:src => 'vendor/c_exception/lib/', :dst => 'vendor/c_exception/lib'},
99
114
  {:src => 'vendor/c_exception/release/', :dst => 'vendor/c_exception/release'},
@@ -118,9 +133,18 @@ unless (project_found)
118
133
  copy_file(File.join('assets', 'project_as_gem.yml'), File.join(name, 'project.yml'), :force => force)
119
134
  else
120
135
  copy_file(File.join('assets', 'project_with_guts.yml'), File.join(name, 'project.yml'), :force => force)
136
+ if is_windows?
137
+ copy_file(File.join('assets', 'ceedling.cmd'), File.join(name, 'ceedling.cmd'), :force => force)
138
+ else
139
+ copy_file(File.join('assets', 'ceedling'), File.join(name, 'ceedling'), :force => force)
140
+ end
121
141
  end
122
142
  end
123
143
 
144
+ if (with_ignore)
145
+ copy_file(File.join('assets', 'default_gitignore'), File.join(name, '.gitignore'), :force => force)
146
+ end
147
+
124
148
  unless silent
125
149
  puts "\n"
126
150
  puts "Project '#{name}' #{force ? "upgraded" : "created"}!"
@@ -202,6 +202,11 @@ General notes:
202
202
  and Rakefiles, consult the [Rake tutorial, examples, and
203
203
  user guide](http://rubyrake.org/).
204
204
 
205
+ 4. When using Ceedling in Windows environments, a test file name may
206
+ not include the sequences “patch” or “setup”. The Windows Installer
207
+ Detection Technology (part of UAC), requires administrator
208
+ privileges to execute file names with these strings.
209
+
205
210
 
206
211
 
207
212
  Now What? How Do I Make It GO?
@@ -323,6 +328,7 @@ Ceedling (more on this later).
323
328
  ceedling release:assemble:foo.s
324
329
 
325
330
  * `ceedling module:create[Filename]`:
331
+ * `ceedling module:create[<Path:>Filename]`:
326
332
 
327
333
  It's often helpful to create a file automatically. What's better than
328
334
  that? Creating a source file, a header file, and a corresponding test
@@ -331,6 +337,10 @@ Ceedling (more on this later).
331
337
  There are also patterns which can be specified to automatically generate
332
338
  a bunch of files. Try `ceedling module:create[Poodles,mch]` for example!
333
339
 
340
+ The module generator has several options you can configure.
341
+ F.e. Generating the source/header/test file in a subdirectory (by adding <Path> when calling module:create).
342
+ For more info, refer to the [Module Generator](https://github.com/ThrowTheSwitch/Ceedling/blob/master/docs/CeedlingPacket.md#module-generator) section.
343
+
334
344
  * `ceedling logging <tasks...>`:
335
345
 
336
346
  Enable logging to <build path>/logs. Must come before test and release
@@ -797,6 +807,17 @@ project: global project settings
797
807
 
798
808
  **Default**: FALSE
799
809
 
810
+ * `generate_deep_dependencies`:
811
+
812
+ When `use_deep_dependencies` is set to TRUE, Ceedling will run a separate
813
+ build step to generate the deep dependencies. If you are using gcc as your
814
+ primary compiler, or another compiler that can generate makefile rules as
815
+ a side effect of compilation, then you can set this to FALSE to avoid the
816
+ extra build step but still use the deep dependencies data when deciding
817
+ which source files to rebuild.
818
+
819
+ **Default**: TRUE
820
+
800
821
  * `test_file_prefix`:
801
822
 
802
823
  Ceedling collects test files by convention from within the test file
@@ -1453,10 +1474,26 @@ by overriding the value in the Ceedling YAML configuration file.
1453
1474
  List of conditional compilation symbols used to configure Unity's
1454
1475
  features in its source and header files. See Unity documentation to
1455
1476
  understand available options. No symbols must be set unless the
1456
- defaults are inappropriate for your specific environment.
1477
+ defaults are inappropriate for your specific environment. Most Unity
1478
+ defines can be easily configured through the YAML file.
1457
1479
 
1458
1480
  **Default**: [] (empty)
1459
1481
 
1482
+ Example [:unity] YAML blurbs
1483
+ ```yaml
1484
+ :unity: #itty bitty processor & toolchain with limited test execution options
1485
+ :defines:
1486
+ - UNITY_INT_WIDTH=16 #16 bit processor without support for 32 bit instructions
1487
+ - UNITY_EXCLUDE_FLOAT #no floating point unit
1488
+
1489
+ :unity: #great big gorilla processor that grunts and scratches
1490
+ :defines:
1491
+ - UNITY_SUPPORT_64 #big memory, big counters, big registers
1492
+ - UNITY_LINE_TYPE=\"unsigned int\" #apparently we're using really long test files,
1493
+ - UNITY_COUNTER_TYPE=\"unsigned int\" #and we've got a ton of test cases in those test files
1494
+ - UNITY_FLOAT_TYPE=\"double\" #you betcha
1495
+ ```
1496
+
1460
1497
 
1461
1498
  Notes on Unity configuration:
1462
1499
 
@@ -1476,29 +1513,34 @@ Notes on Unity configuration:
1476
1513
  routine that transmits a character via RS232 or USB. Once you have
1477
1514
  that routine, you can replace `putchar()` calls in Unity by overriding
1478
1515
  the function-like macro `UNITY_OUTPUT_CHAR`. Consult your toolchain
1479
- and shell documentation.
1480
-
1516
+ and shell documentation. Eventhough this can also be defined in the YAML file
1517
+ most shell environments do not handle parentheses as command line arguments
1518
+ very well. To still be able to add this functionality all necessary
1519
+ options can be defined in the `unity_config.h`. Unity needs to be told to look for
1520
+ the `unity_config.h` in the YAML file, though.
1481
1521
 
1482
1522
  Example [:unity] YAML blurbs
1483
-
1484
1523
  ```yaml
1485
- :unity: #itty bitty processor & toolchain with limited test execution options
1524
+ :unity:
1486
1525
  :defines:
1487
- - UNITY_INT_WIDTH=16 #16 bit processor without support for 32 bit instructions
1488
- - UNITY_EXCLUDE_FLOAT #no floating point unit
1489
- #let's say environment & tools provide no way to run tests on desktop so we gotta go on target
1490
- #replace putchar() with write_usart() via command line specified macro (gcc style)
1491
- #note escaped quotes for our hypothetical shell that doesn't like parens in arguments
1492
- #transformed into -D"UNITY_OUTPUT_CHAR(a)=write_usart(a)" at command line by [:tools] entry
1493
- - "\"UNITY_OUTPUT_CHAR(a)=write_usart(a)\""
1526
+ - UNITY_INCLUDE_CONFIG_H
1527
+ ```
1494
1528
 
1495
- :unity: #great big gorilla processor that grunts and scratches
1496
- :defines:
1497
- - UNITY_SUPPORT_64 #big memory, big counters, big registers
1498
- - UNITY_LINE_TYPE=\"unsigned int\" #apparently we're using really long test files,
1499
- - UNITY_COUNTER_TYPE=\"unsigned int\" #and we've got a ton of test cases in those test files
1500
- - UNITY_FLOAT_TYPE=\"double\" #you betcha
1529
+ Example unity_config.h
1501
1530
  ```
1531
+ #ifndef UNITY_CONFIG_H
1532
+ #define UNITY_CONFIG_H
1533
+
1534
+ #include "uart_output.h" //Helper library for your custom environment
1535
+
1536
+ #define UNITY_INT_WIDTH 16
1537
+ #define UNITY_OUTPUT_START() uart_init(F_CPU, BAUD) //Helperfunction to init UART
1538
+ #define UNITY_OUTPUT_CHAR(a) uart_putchar(a) //Helperfunction to forward char via UART
1539
+ #define UNITY_OUTPUT_COMPLETE() uart_complete() //Helperfunction to inform that test has ended
1540
+
1541
+ #endif
1542
+ ```
1543
+
1502
1544
 
1503
1545
  **tools**: a means for representing command line tools for use under
1504
1546
  Ceedling's automation framework
@@ -1513,14 +1555,14 @@ tools.
1513
1555
  * `test_compiler`:
1514
1556
 
1515
1557
  Compiler for test & source-under-test code
1516
- ${1}: input source ${2}: output object ${3}: optional output list ${4}: optional per-file flags
1558
+ ${1}: input source ${2}: output object ${3}: optional output list ${4}: optional output dependencies file
1517
1559
 
1518
1560
  **Default**: gcc
1519
1561
 
1520
1562
  * `test_linker`:
1521
1563
 
1522
1564
  Linker to generate test fixture executables
1523
- ${1}: input objects ${2}: output binary ${3}: optional output map ${4}: optional per-binary flags
1565
+ ${1}: input objects ${2}: output binary ${3}: optional output map ${4}: optional library list
1524
1566
 
1525
1567
  **Default**: gcc
1526
1568
 
@@ -1555,7 +1597,7 @@ tools.
1555
1597
  * `release_compiler`:
1556
1598
 
1557
1599
  Compiler for release source code
1558
- ${1}: input source ${2}: output object ${3}: optional output list ${4}: optional per-file flags
1600
+ ${1}: input source ${2}: output object ${3}: optional output list ${4}: optional output dependencies file
1559
1601
 
1560
1602
  **Default**: gcc
1561
1603
 
@@ -1569,7 +1611,7 @@ tools.
1569
1611
  * `release_linker`:
1570
1612
 
1571
1613
  Linker for release source code
1572
- ${1}: input objects ${2}: output binary ${3}: optional output map ${4}: optional per-binary flags
1614
+ ${1}: input objects ${2}: output binary ${3}: optional output map ${4}: optional library list
1573
1615
 
1574
1616
  **Default**: gcc
1575
1617
 
@@ -1911,6 +1953,77 @@ Example [:plugins] YAML blurb
1911
1953
  root>/artifacts` directory (e.g. test/ for test tasks, `release/` for a
1912
1954
  release build, or even `bullseye/` for bullseye runs).
1913
1955
 
1956
+ Module Generator
1957
+ ========================
1958
+ Ceedling includes a plugin called module_generator that will create a source, header and test file for you.
1959
+ There are several possibilities to configure this plugin through your project.yml to suit your project's needs.
1960
+
1961
+ Directory Structure
1962
+ -------------------------------------------
1963
+
1964
+ The default configuration for directory/project structure is:
1965
+ ```yaml
1966
+ :module_generator:
1967
+ :project_root: ./
1968
+ :source_root: src/
1969
+ :test_root: test/
1970
+ ```
1971
+ You can change these variables in your project.yml file to comply with your project's directory structure.
1972
+
1973
+ If you call `ceedling module:create`, it will create three files:
1974
+ 1. A source file in the source_root
1975
+ 2. A header file in the source_root
1976
+ 3. A test file in the test_root
1977
+
1978
+ If you want your header file to be in another location,
1979
+ you can specify the ':inc_root:" in your project.yml file:
1980
+ ```yaml
1981
+ :module_generator:
1982
+ :inc_root: inc/
1983
+ ```
1984
+ The module_generator will then create the header file in your defined ':inc_root:'.
1985
+ By default, ':inc_root:' is not defined so the module_generator will use the source_root.
1986
+
1987
+ Sometimes, your project can't be divided into a single src, inc, and test folder. You have several directories
1988
+ with sources/..., something like this for example:
1989
+ <project_root>
1990
+ - myDriver
1991
+ - src
1992
+ - inc
1993
+ - test
1994
+ - myOtherDriver
1995
+ - src
1996
+ - inc
1997
+ - test
1998
+ - ...
1999
+
2000
+ Don't worry, you don't have to manually create the source/header/test files.
2001
+ The module_generator can accept a path to create a source_root/inc_root/test_root folder with your files:
2002
+ `ceedling module:create[<module_root_path>:<module_name>]`
2003
+
2004
+ F.e., applied to the above project structure:
2005
+ `ceedling module:create[myOtherDriver:driver]`
2006
+ This will make the module_generator run in the subdirectory 'myOtherDriver' and generate the module files
2007
+ for you in that directory. So, this command will generate the following files:
2008
+ 1. A source file 'driver.c' in <project_root>/myOtherDriver/<source_root>
2009
+ 2. A header file 'driver.h' in <project_root>/myOtherDriver/<source_root> (or <inc_root> if specified)
2010
+ 3. A test file 'test_driver.c' in <project_root>/myOtherDriver/<test_root>
2011
+
2012
+ Naming
2013
+ -------------------------------------------
2014
+ By default, the module_generator will generate your files in lowercase.
2015
+ `ceedling module:create[mydriver]` and `ceedling module:create[myDriver]`(note the uppercase) will generate the same files:
2016
+ 1. mydriver.c
2017
+ 2. mydriver.h
2018
+ 3. test_mydriver.c
2019
+
2020
+ You can configure the module_generator to use a differect naming mechanism through the project.yml:
2021
+ ```yaml
2022
+ :module_generator:
2023
+ :naming: "camel"
2024
+ ```
2025
+ There are other possibilities as well (bumpy, camel, snake, caps).
2026
+ Refer to the unity module generator for more info (the unity module generator is used under the hood by module_generator).
1914
2027
 
1915
2028
  Advanced Topics (Coming)
1916
2029
  ========================
@@ -1945,4 +2058,3 @@ Creating Custom Plugins
1945
2058
  -----------------------
1946
2059
 
1947
2060
  Oh boy. This is going to take some explaining.
1948
-
Binary file
@@ -1,5 +1,6 @@
1
1
  PROJECT_CEEDLING_ROOT = "vendor/ceedling"
2
- load "#{PROJECT_CEEDLING_ROOT}/lib/ceedling/rakefile.rb"
2
+ load "#{PROJECT_CEEDLING_ROOT}/lib/ceedling.rb"
3
+ Ceedling.load_project
3
4
 
4
5
  task :default => %w[ test:all release ]
5
6
 
@@ -173,12 +173,15 @@ class Configurator
173
173
  FilePathUtils::standardize(path)
174
174
  end
175
175
 
176
+ config[:plugins][:load_paths] << FilePathUtils::standardize(Ceedling.load_path)
177
+ config[:plugins][:load_paths].uniq!
178
+
176
179
  paths_hash = @configurator_plugins.add_load_paths(config)
177
180
 
178
- @rake_plugins = @configurator_plugins.find_rake_plugins(config)
179
- @script_plugins = @configurator_plugins.find_script_plugins(config)
180
- config_plugins = @configurator_plugins.find_config_plugins(config)
181
- plugin_defaults = @configurator_plugins.find_plugin_defaults(config)
181
+ @rake_plugins = @configurator_plugins.find_rake_plugins(config, paths_hash)
182
+ @script_plugins = @configurator_plugins.find_script_plugins(config, paths_hash)
183
+ config_plugins = @configurator_plugins.find_config_plugins(config, paths_hash)
184
+ plugin_defaults = @configurator_plugins.find_plugin_defaults(config, paths_hash)
182
185
 
183
186
  config_plugins.each do |plugin|
184
187
  config.deep_merge!( @yaml_wrapper.load(plugin) )
@@ -328,7 +331,6 @@ class Configurator
328
331
 
329
332
  def insert_rake_plugins(plugins)
330
333
  plugins.each do |plugin|
331
- # TODO needs a duplicate guard
332
334
  @project_config_hash[:project_rakefile_component_files] << plugin
333
335
  end
334
336
  end
@@ -89,12 +89,14 @@ class ConfiguratorBuilder
89
89
  [:project_build_tests_root, project_build_tests_root, true ],
90
90
  [:project_build_release_root, project_build_release_root, in_hash[:project_release_build] ],
91
91
 
92
- [:project_test_artifacts_path, File.join(project_build_artifacts_root, TESTS_BASE_PATH), true ],
93
- [:project_test_runners_path, File.join(project_build_tests_root, 'runners'), true ],
94
- [:project_test_results_path, File.join(project_build_tests_root, 'results'), true ],
95
- [:project_test_build_output_path, File.join(project_build_tests_root, 'out'), true ],
96
- [:project_test_build_cache_path, File.join(project_build_tests_root, 'cache'), true ],
97
- [:project_test_dependencies_path, File.join(project_build_tests_root, 'dependencies'), true ],
92
+ [:project_test_artifacts_path, File.join(project_build_artifacts_root, TESTS_BASE_PATH), true ],
93
+ [:project_test_runners_path, File.join(project_build_tests_root, 'runners'), true ],
94
+ [:project_test_results_path, File.join(project_build_tests_root, 'results'), true ],
95
+ [:project_test_build_output_path, File.join(project_build_tests_root, 'out'), true ],
96
+ [:project_test_build_output_asm_path, File.join(project_build_tests_root, 'out', 'asm'), true ],
97
+ [:project_test_build_output_c_path, File.join(project_build_tests_root, 'out', 'c'), true ],
98
+ [:project_test_build_cache_path, File.join(project_build_tests_root, 'cache'), true ],
99
+ [:project_test_dependencies_path, File.join(project_build_tests_root, 'dependencies'), true ],
98
100
 
99
101
  [:project_release_artifacts_path, File.join(project_build_artifacts_root, RELEASE_BASE_PATH), in_hash[:project_release_build] ],
100
102
  [:project_release_build_cache_path, File.join(project_build_release_root, 'cache'), in_hash[:project_release_build] ],
@@ -270,7 +272,7 @@ class ConfiguratorBuilder
270
272
  def collect_assembly(in_hash)
271
273
  all_assembly = @file_wrapper.instantiate_file_list
272
274
 
273
- return {:collection_all_assembly => all_assembly} if (not in_hash[:release_build_use_assembly])
275
+ return {:collection_all_assembly => all_assembly} if ((not in_hash[:release_build_use_assembly]) && (not in_hash[:test_build_use_assembly]))
274
276
 
275
277
  in_hash[:collection_paths_source].each do |path|
276
278
  all_assembly.include( File.join(path, "*#{in_hash[:extension_assembly]}") )
@@ -361,6 +363,7 @@ class ConfiguratorBuilder
361
363
  all_input.include( path )
362
364
  else
363
365
  all_input.include( File.join(path, "*#{in_hash[:extension_source]}") )
366
+ all_input.include( File.join(path, "*#{in_hash[:extension_assembly]}") ) if (defined?(TEST_BUILD_USE_ASSEMBLY) && TEST_BUILD_USE_ASSEMBLY)
364
367
  end
365
368
  end
366
369