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
@@ -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 .