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
@@ -2,7 +2,7 @@
2
2
  module Ceedling
3
3
  module Version
4
4
  # @private
5
- GEM = "0.28.2"
5
+ GEM = "0.28.3"
6
6
  # @private
7
7
  CEEDLING = GEM
8
8
  # @private
@@ -0,0 +1,21 @@
1
+ ---
2
+ :source:
3
+ :path: some/place
4
+ :file: test_example.c
5
+ :successes: []
6
+ :failures:
7
+ - :test: test_one
8
+ :line: 257
9
+ :message: ''
10
+ - :test: test_two
11
+ :line: 269
12
+ :message: ''
13
+ :ignores: []
14
+ :counts:
15
+ :total: 2
16
+ :passed: 0
17
+ :failed: 2
18
+ :ignored: 0
19
+ :stdout:
20
+ - Verbose output one
21
+ - Verbous output two
@@ -0,0 +1,22 @@
1
+ ceedling-beep
2
+ =============
3
+
4
+ This is a simple plugin that just beeps at the end of a build and/or test sequence. Are you getting too distracted surfing
5
+ the internet, chatting with coworkers, or swordfighting while it's building or testing? The friendly beep will let you know
6
+ it's time to pay attention again.
7
+
8
+ This plugin has very few configuration options. At this time it can beep on completion of a task and/or on an error condition.
9
+ For each of these, you can configure the method that it should beep.
10
+
11
+ ```
12
+ :tools:
13
+ :beep_on_done: :bell
14
+ :beep_on_error: :bell
15
+ ```
16
+
17
+ Each of these have the following options:
18
+
19
+ - :bell - this option uses the ASCII bell character out stdout
20
+ - :speaker_test - this uses the linux speaker-test command if installed
21
+
22
+ Very likely, we'll be adding to this list if people find this to be useful.
@@ -0,0 +1,40 @@
1
+ require 'ceedling/plugin'
2
+ require 'ceedling/constants'
3
+
4
+ class Beep < Plugin
5
+
6
+ attr_reader :config
7
+
8
+ def setup
9
+ @config = {
10
+ :on_done => ((defined? TOOLS_BEEP_ON_DONE) ? TOOLS_BEEP_ON_DONE : :bell ),
11
+ :on_error => ((defined? TOOLS_BEEP_ON_ERROR) ? TOOLS_BEEP_ON_ERROR : :bell ),
12
+ }
13
+ end
14
+
15
+ def post_build
16
+ beep @config[:on_done]
17
+ end
18
+
19
+ def post_error
20
+ beep @config[:on_error]
21
+ end
22
+
23
+ private
24
+
25
+ def beep(method = :none)
26
+ case method
27
+ when :bell
28
+ if (SystemWrapper.windows?)
29
+ puts "echo '\007'"
30
+ else
31
+ puts "echo -ne '\007'"
32
+ end
33
+ when :speaker_test
34
+ `speaker-test -t sine -f 1000 -l 1`
35
+ else
36
+ #do nothing with illegal or :none
37
+ end
38
+ end
39
+ end
40
+
@@ -1,4 +1,3 @@
1
-
2
1
  directory(BULLSEYE_BUILD_OUTPUT_PATH)
3
2
  directory(BULLSEYE_RESULTS_PATH)
4
3
  directory(BULLSEYE_ARTIFACTS_PATH)
@@ -9,21 +8,23 @@ CLEAN.include(File.join(BULLSEYE_RESULTS_PATH, '*'))
9
8
  CLEAN.include(File.join(BULLSEYE_DEPENDENCIES_PATH, '*'))
10
9
 
11
10
  CLOBBER.include(File.join(BULLSEYE_BUILD_PATH, '**/*'))
12
-
11
+ PLUGINS_BULLSEYE_LIB_PATH = 'C:\\tools\\BullseyeCoverage\\lib' if not defined?(PLUGINS_BULLSEYE_LIB_PATH)
13
12
 
14
13
  rule(/#{BULLSEYE_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
15
- proc do |task_name|
16
- @ceedling[:file_finder].find_compilation_input_file(task_name)
17
- end
18
- ]) do |object|
14
+ proc do |task_name|
15
+ @ceedling[:file_finder].find_compilation_input_file(task_name)
16
+ end
17
+ ]) do |object|
19
18
 
20
- if (File.basename(object.source) =~ /^(#{PROJECT_TEST_FILE_PREFIX}|#{CMOCK_MOCK_PREFIX}|#{BULLSEYE_IGNORE_SOURCES.join('|')})/i)
19
+ if File.basename(object.source) =~ /^(#{PROJECT_TEST_FILE_PREFIX}|#{CMOCK_MOCK_PREFIX}|#{BULLSEYE_IGNORE_SOURCES.join('|')})/i
21
20
  @ceedling[:generator].generate_object_file(
22
21
  TOOLS_BULLSEYE_COMPILER,
22
+ OPERATION_COMPILE_SYM,
23
23
  BULLSEYE_SYM,
24
24
  object.source,
25
25
  object.name,
26
- @ceedling[:file_path_utils].form_test_build_list_filepath( object.name ) )
26
+ @ceedling[:file_path_utils].form_test_build_list_filepath(object.name)
27
+ )
27
28
  else
28
29
  @ceedling[BULLSEYE_SYM].generate_coverage_object_file(object.source, object.name)
29
30
  end
@@ -36,39 +37,41 @@ rule(/#{BULLSEYE_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_EXECUTABLE}$/) do |bin_f
36
37
  BULLSEYE_SYM,
37
38
  bin_file.prerequisites,
38
39
  bin_file.name,
39
- @ceedling[:file_path_utils].form_test_build_map_filepath(bin_file.name))
40
+ @ceedling[:file_path_utils].form_test_build_map_filepath(bin_file.name)
41
+ )
40
42
  end
41
43
 
42
44
  rule(/#{BULLSEYE_RESULTS_PATH}\/#{'.+\\'+EXTENSION_TESTPASS}$/ => [
43
- proc do |task_name|
44
- @ceedling[:file_path_utils].form_test_executable_filepath(task_name)
45
- end
46
- ]) do |test_result|
45
+ proc do |task_name|
46
+ @ceedling[:file_path_utils].form_test_executable_filepath(task_name)
47
+ end
48
+ ]) do |test_result|
47
49
  @ceedling[:generator].generate_test_results(TOOLS_BULLSEYE_FIXTURE, BULLSEYE_SYM, test_result.source, test_result.name)
48
50
  end
49
51
 
50
52
  rule(/#{BULLSEYE_DEPENDENCIES_PATH}\/#{'.+\\'+EXTENSION_DEPENDENCIES}$/ => [
51
- proc do |task_name|
52
- @ceedling[:file_finder].find_compilation_input_file(task_name)
53
- end
54
- ]) do |dep|
53
+ proc do |task_name|
54
+ @ceedling[:file_finder].find_compilation_input_file(task_name)
55
+ end
56
+ ]) do |dep|
55
57
  @ceedling[:generator].generate_dependencies_file(
56
58
  TOOLS_TEST_DEPENDENCIES_GENERATOR,
57
59
  BULLSEYE_SYM,
58
60
  dep.source,
59
61
  File.join(BULLSEYE_BUILD_OUTPUT_PATH, File.basename(dep.source).ext(EXTENSION_OBJECT) ),
60
- dep.name)
62
+ dep.name
63
+ )
61
64
  end
62
65
 
63
66
  task :directories => [BULLSEYE_BUILD_OUTPUT_PATH, BULLSEYE_RESULTS_PATH, BULLSEYE_DEPENDENCIES_PATH, BULLSEYE_ARTIFACTS_PATH]
64
67
 
65
68
  namespace BULLSEYE_SYM do
69
+ task source_coverage: COLLECTION_ALL_SOURCE.pathmap("#{BULLSEYE_BUILD_OUTPUT_PATH}/%n#{@ceedling[:configurator].extension_object}")
66
70
 
67
- task :source_coverage => COLLECTION_ALL_SOURCE.pathmap("#{BULLSEYE_BUILD_OUTPUT_PATH}/%n#{@ceedling[:configurator].extension_object}")
68
-
69
- desc "Run code coverage for all tests"
70
- task :all => [:directories] do
71
+ desc 'Run code coverage for all tests'
72
+ task all: [:directories] do
71
73
  @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
74
+ @ceedling[BULLSEYE_SYM].enableBullseye(true)
72
75
  @ceedling[:test_invoker].setup_and_invoke(COLLECTION_ALL_TESTS, BULLSEYE_SYM)
73
76
  @ceedling[:configurator].restore_config
74
77
  end
@@ -82,43 +85,46 @@ namespace BULLSEYE_SYM do
82
85
  @ceedling[:streaminator].stdout_puts( message )
83
86
  end
84
87
 
85
- desc "Run tests by matching regular expression pattern."
86
- task :pattern, [:regex] => [:directories] do |t, args|
88
+ desc 'Run tests by matching regular expression pattern.'
89
+ task :pattern, [:regex] => [:directories] do |_t, args|
87
90
  matches = []
88
91
 
89
92
  COLLECTION_ALL_TESTS.each do |test|
90
93
  matches << test if test =~ /#{args.regex}/
91
94
  end
92
95
 
93
- if (matches.size > 0)
96
+ if !matches.empty?
94
97
  @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
95
- @ceedling[:test_invoker].setup_and_invoke(matches, BULLSEYE_SYM, {:force_run => false})
98
+ @ceedling[BULLSEYE_SYM].enableBullseye(true)
99
+ @ceedling[:test_invoker].setup_and_invoke(matches, BULLSEYE_SYM, force_run: false)
96
100
  @ceedling[:configurator].restore_config
97
101
  else
98
102
  @ceedling[:streaminator].stdout_puts("\nFound no tests matching pattern /#{args.regex}/.")
99
103
  end
100
104
  end
101
105
 
102
- desc "Run tests whose test path contains [dir] or [dir] substring."
103
- task :path, [:dir] => [:directories] do |t, args|
106
+ desc 'Run tests whose test path contains [dir] or [dir] substring.'
107
+ task :path, [:dir] => [:directories] do |_t, args|
104
108
  matches = []
105
109
 
106
110
  COLLECTION_ALL_TESTS.each do |test|
107
- matches << test if File.dirname(test).include?(args.dir.gsub(/\\/, '/'))
111
+ matches << test if File.dirname(test).include?(args.dir.tr('\\', '/'))
108
112
  end
109
113
 
110
- if (matches.size > 0)
114
+ if !matches.empty?
111
115
  @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
112
- @ceedling[:test_invoker].setup_and_invoke(matches, BULLSEYE_SYM, {:force_run => false})
116
+ @ceedling[BULLSEYE_SYM].enableBullseye(true)
117
+ @ceedling[:test_invoker].setup_and_invoke(matches, BULLSEYE_SYM, force_run: false)
113
118
  @ceedling[:configurator].restore_config
114
119
  else
115
120
  @ceedling[:streaminator].stdout_puts("\nFound no tests including the given path or path component.")
116
121
  end
117
122
  end
118
123
 
119
- desc "Run code coverage for changed files"
120
- task :delta => [:directories] do
124
+ desc 'Run code coverage for changed files'
125
+ task delta: [:directories] do
121
126
  @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
127
+ @ceedling[BULLSEYE_SYM].enableBullseye(true)
122
128
  @ceedling[:test_invoker].setup_and_invoke(COLLECTION_ALL_TESTS, BULLSEYE_SYM, {:force_run => false})
123
129
  @ceedling[:configurator].restore_config
124
130
  end
@@ -128,12 +134,13 @@ namespace BULLSEYE_SYM do
128
134
  rule(/^#{BULLSEYE_TASK_ROOT}\S+$/ => [
129
135
  proc do |task_name|
130
136
  test = task_name.sub(/#{BULLSEYE_TASK_ROOT}/, '')
131
- test = "#{PROJECT_TEST_FILE_PREFIX}#{test}" if not (test.start_with?(PROJECT_TEST_FILE_PREFIX))
137
+ test = "#{PROJECT_TEST_FILE_PREFIX}#{test}" unless test.start_with?(PROJECT_TEST_FILE_PREFIX)
132
138
  @ceedling[:file_finder].find_test_from_file_path(test)
133
139
  end
134
140
  ]) do |test|
135
141
  @ceedling[:rake_wrapper][:directories].invoke
136
142
  @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
143
+ @ceedling[BULLSEYE_SYM].enableBullseye(true)
137
144
  @ceedling[:test_invoker].setup_and_invoke([test.source], BULLSEYE_SYM)
138
145
  @ceedling[:configurator].restore_config
139
146
  end
@@ -144,6 +151,7 @@ if PROJECT_USE_DEEP_DEPENDENCIES
144
151
  namespace REFRESH_SYM do
145
152
  task BULLSEYE_SYM do
146
153
  @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
154
+ @ceedling[BULLSEYE_SYM].enableBullseye(true)
147
155
  @ceedling[:test_invoker].refresh_deep_dependencies
148
156
  @ceedling[:configurator].restore_config
149
157
  end
@@ -154,9 +162,8 @@ namespace UTILS_SYM do
154
162
 
155
163
  desc "Open Bullseye code coverage browser"
156
164
  task BULLSEYE_SYM do
157
- command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_BROWSER)
165
+ command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_BROWSER, [])
158
166
  @ceedling[:tool_executor].exec(command[:line], command[:options])
159
167
  end
160
168
 
161
169
  end
162
-
@@ -1,5 +1,9 @@
1
1
  ---
2
2
 
3
+ :bullseye:
4
+ :auto_license: TRUE
5
+ :plugins:
6
+ :bullseye_lib_path: []
3
7
  :paths:
4
8
  :bullseye_toolchain_include: []
5
9
 
@@ -41,10 +41,11 @@ class Bullseye < Plugin
41
41
  compile_command =
42
42
  @ceedling[:tool_executor].build_command_line(
43
43
  TOOLS_BULLSEYE_COMPILER,
44
+ @ceedling[:flaginator].flag_down( OPERATION_COMPILE_SYM, BULLSEYE_SYM, source ),
44
45
  source,
45
46
  object,
46
47
  @ceedling[:file_path_utils].form_test_build_list_filepath( object ) )
47
- coverage_command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_INSTRUMENTATION, compile_command[:line] )
48
+ coverage_command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_INSTRUMENTATION, [], compile_command[:line] )
48
49
 
49
50
  shell_result = @ceedling[:tool_executor].exec( coverage_command[:line], coverage_command[:options] )
50
51
 
@@ -59,7 +60,7 @@ class Bullseye < Plugin
59
60
  @result_list << arg_hash[:result_file]
60
61
  end
61
62
  end
62
-
63
+
63
64
  def post_build
64
65
  return if (not @ceedling[:task_invoker].invoked?(/^#{BULLSEYE_TASK_ROOT}/))
65
66
 
@@ -79,7 +80,7 @@ class Bullseye < Plugin
79
80
  # coverage results
80
81
  return if (verify_coverage_file() == false)
81
82
  if (@ceedling[:task_invoker].invoked?(/^#{BULLSEYE_TASK_ROOT}(all|delta)/))
82
- command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_REPORT_COVSRC)
83
+ command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_REPORT_COVSRC, [])
83
84
  shell_result = @ceedling[:tool_executor].exec(command[:line], command[:options])
84
85
  report_coverage_results_all(shell_result[:output])
85
86
  else
@@ -105,7 +106,25 @@ class Bullseye < Plugin
105
106
  shell_result = @ceedling[:tool_executor].exec(command[:line], command[:options])
106
107
  report_coverage_results_all(shell_result[:output])
107
108
  end
109
+
110
+ def enableBullseye(enable)
111
+ if BULLSEYE_AUTO_LICENSE
112
+ if (enable)
113
+ args = ['push', 'on']
114
+ @ceedling[:streaminator].stdout_puts("Enabling Bullseye")
115
+ else
116
+ args = ['pop']
117
+ @ceedling[:streaminator].stdout_puts("Reverting Bullseye to previous state")
118
+ end
108
119
 
120
+ args.each do |arg|
121
+ command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_BUILD_ENABLE_DISABLE, [], arg)
122
+ shell_result = @ceedling[:tool_executor].exec(command[:line], command[:options])
123
+ end
124
+
125
+ end
126
+ end
127
+
109
128
  private ###################################
110
129
 
111
130
  def report_coverage_results_all(coverage)
@@ -137,7 +156,7 @@ class Bullseye < Plugin
137
156
  coverage_sources.delete_if {|item| item =~ /#{BULLSEYE_IGNORE_SOURCES.join('|')}#{EXTENSION_SOURCE}$/}
138
157
 
139
158
  coverage_sources.each do |source|
140
- command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_REPORT_COVFN, source)
159
+ command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_REPORT_COVFN, [], source)
141
160
  shell_results = @ceedling[:tool_executor].exec(command[:line], command[:options])
142
161
  coverage_results = shell_results[:output].deep_clone
143
162
  coverage_results.sub!(/.*\n.*\n/,'') # Remove the Bullseye tool banner
@@ -168,5 +187,8 @@ end
168
187
  # end blocks always executed following rake run
169
188
  END {
170
189
  # cache our input configurations to use in comparison upon next execution
171
- @ceedling[:cacheinator].cache_test_config( @ceedling[:setupinator].config_hash ) if (@ceedling[:task_invoker].invoked?(/^#{BULLSEYE_TASK_ROOT}/))
190
+ if (@ceedling[:task_invoker].invoked?(/^#{BULLSEYE_TASK_ROOT}/))
191
+ @ceedling[:cacheinator].cache_test_config( @ceedling[:setupinator].config_hash )
192
+ @ceedling[BULLSEYE_SYM].enableBullseye(false)
193
+ end
172
194
  }
@@ -23,6 +23,8 @@ class CommandHooks < Plugin
23
23
  :post_release => ((defined? TOOLS_POST_RELEASE) ? TOOLS_POST_RELEASE : nil ),
24
24
  :pre_build => ((defined? TOOLS_PRE_BUILD) ? TOOLS_PRE_BUILD : nil ),
25
25
  :post_build => ((defined? TOOLS_POST_BUILD) ? TOOLS_POST_BUILD : nil ),
26
+ :post_build => ((defined? TOOLS_POST_BUILD) ? TOOLS_POST_BUILD : nil ),
27
+ :post_error => ((defined? TOOLS_POST_ERROR) ? TOOLS_POST_ERROR : nil ),
26
28
  }
27
29
  @plugin_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
28
30
  end
@@ -43,6 +45,7 @@ class CommandHooks < Plugin
43
45
  def post_release; run_hook(:post_release ); end
44
46
  def pre_build; run_hook(:pre_build ); end
45
47
  def post_build; run_hook(:post_build ); end
48
+ def post_error; run_hook(:post_error ); end
46
49
 
47
50
  private
48
51
 
@@ -1,9 +1,42 @@
1
1
  ceedling-gcov
2
2
  =============
3
3
 
4
- Plugin for integrating GNU GCov code coverage tool into Ceedling projects
4
+ Plugin for integrating GNU GCov code coverage tool into Ceedling projects.
5
+ Currently only designed for the gcov command (like LCOV for example). In the
6
+ future we could configure this to work with other code coverage tools.
7
+
8
+
9
+ This plugin currently uses `gcovr` to generate HTML reports as a utility. The
10
+ normal gcov plugin _must_ be run first for this report to generate.
11
+
12
+ Gcovr can be installed via pip like so:
13
+
14
+ ```
15
+ pip install gcovr
16
+ ```
17
+
18
+ There are two types of gcovr HTML reports that can be configured in your
19
+ `project.yml`. To create a basic HTML report with only the overall file
20
+ information use the following config.
21
+
22
+ ```
23
+ :gcov:
24
+ :html_report_type: basic
25
+ ```
26
+ To create a detailed HTML report with line by line breakdown of the coverage use
27
+ the following config.
28
+
29
+ ```
30
+ :gcov:
31
+ :html_report_type: detailed
32
+ ```
33
+
34
+ These reports will be found in `build/artifacts/gcov`.
35
+
36
+
5
37
 
6
38
  # To-Do list
7
39
 
8
40
  - Generate overall report (combined statistics from all files with coverage)
9
41
  - Generate coverage output files
42
+ - Easier option override for better customisation
@@ -36,7 +36,7 @@
36
36
  :arguments:
37
37
  - -p
38
38
  - -b
39
- - -e "'^vendor.*|^build.*|^test.*|^lib.*'"
39
+ - -e "${1}"
40
40
  - --html
41
41
  - -r .
42
42
  - -o GcovCoverageResults.html
@@ -46,7 +46,7 @@
46
46
  :arguments:
47
47
  - -p
48
48
  - -b
49
- - -e "'^vendor.*|^build.*|^test.*|^lib.*'"
49
+ - -e "${1}"
50
50
  - --html
51
51
  - -r .
52
52
  - -o "$": GCOV_ARTIFACTS_FILE
@@ -56,7 +56,7 @@
56
56
  :arguments:
57
57
  - -p
58
58
  - -b
59
- - -e "'^vendor.*|^build.*|^test.*|^lib.*'"
59
+ - -e "${1}"
60
60
  - --html
61
61
  - --html-details
62
62
  - -r .