ceedling 1.1.0 → 1.1.1

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 (148) hide show
  1. checksums.yaml +4 -4
  2. data/GIT_COMMIT_SHA +1 -1
  3. data/README.md +7 -4
  4. data/docs/Changelog.md +66 -38
  5. data/docs/KnownIssues.md +9 -0
  6. data/docs/ReleaseNotes.md +5 -1
  7. data/docs/mkdocs/getting-started/installation.md +8 -1
  8. data/docs/mkdocs/getting-started/quick-start.md +20 -2
  9. data/docs/mkdocs/help.md +2 -2
  10. data/docs/mkdocs/index.md +13 -6
  11. data/docs/mkdocs/overview/build-system.md +4 -4
  12. data/docs/mkdocs/plugins/bullseye.md +6 -0
  13. data/docs/mkdocs/plugins/command-hooks.md +20 -15
  14. data/docs/mkdocs/plugins/gcov/gcovr.md +130 -109
  15. data/docs/mkdocs/plugins/gcov/index.md +6 -0
  16. data/docs/mkdocs/plugins/index.md +40 -0
  17. data/docs/mkdocs/plugins/valgrind.md +6 -0
  18. data/docs/mkdocs/testing-guide/partials/index.md +22 -13
  19. data/lib/ceedling/config/configurator.rb +2 -1
  20. data/lib/ceedling/preprocess/preprocessinator.rb +3 -2
  21. data/lib/ceedling/preprocess/preprocessinator_file_assembler.rb +27 -13
  22. data/lib/ceedling/test_invoker/test_build_executor.rb +3 -4
  23. data/lib/ceedling/test_invoker/test_build_planner.rb +0 -2
  24. data/lib/ceedling/test_invoker/test_invoker_types.rb +1 -1
  25. data/lib/ceedling/tool_executor.rb +5 -0
  26. data/lib/version.rb +1 -1
  27. data/plugins/command_hooks/lib/command_hooks.rb +4 -0
  28. data/plugins/gcov/lib/console_reportinator.rb +3 -1
  29. data/plugins/gcov/lib/gcov.rb +3 -3
  30. data/plugins/gcov/lib/gcov_reportinator.rb +4 -0
  31. data/plugins/gcov/lib/gcovr_reportinator.rb +61 -14
  32. data/plugins/gcov/lib/reportgenerator_reportinator.rb +3 -1
  33. data/site-local/404.html +3 -3
  34. data/site-local/assets/javascripts/{bundle.79ae519e.min.js → bundle.d7400e89.min.js} +2 -2
  35. data/site-local/assets/javascripts/{bundle.79ae519e.min.js.map → bundle.d7400e89.min.js.map} +2 -2
  36. data/site-local/assets/stylesheets/main.ec1eaa64.min.css +1 -0
  37. data/site-local/assets/stylesheets/{main.484c7ddc.min.css.map → main.ec1eaa64.min.css.map} +1 -1
  38. data/site-local/configuration/environment-vars.html +3 -3
  39. data/site-local/configuration/global-collections.html +3 -3
  40. data/site-local/configuration/index.html +3 -3
  41. data/site-local/configuration/loading.html +3 -3
  42. data/site-local/configuration/mixins.html +3 -3
  43. data/site-local/configuration/parallel-builds.html +3 -3
  44. data/site-local/configuration/project-file.html +3 -3
  45. data/site-local/configuration/reference/cexception.html +3 -3
  46. data/site-local/configuration/reference/cmock.html +3 -3
  47. data/site-local/configuration/reference/defines.html +3 -3
  48. data/site-local/configuration/reference/environment.html +3 -3
  49. data/site-local/configuration/reference/extension.html +3 -3
  50. data/site-local/configuration/reference/files.html +3 -3
  51. data/site-local/configuration/reference/flags.html +3 -3
  52. data/site-local/configuration/reference/index.html +3 -3
  53. data/site-local/configuration/reference/libraries.html +3 -3
  54. data/site-local/configuration/reference/mixins.html +3 -3
  55. data/site-local/configuration/reference/paths.html +3 -3
  56. data/site-local/configuration/reference/plugins.html +3 -3
  57. data/site-local/configuration/reference/project.html +3 -3
  58. data/site-local/configuration/reference/release-build.html +3 -3
  59. data/site-local/configuration/reference/test-build.html +3 -3
  60. data/site-local/configuration/reference/test-runner.html +3 -3
  61. data/site-local/configuration/reference/tools.html +3 -3
  62. data/site-local/configuration/reference/unity.html +3 -3
  63. data/site-local/configuration/which-ceedling.html +3 -3
  64. data/site-local/development/index.html +3 -3
  65. data/site-local/development/plugins/configuration.html +3 -3
  66. data/site-local/development/plugins/index.html +3 -3
  67. data/site-local/development/plugins/plugin-subclass.html +3 -3
  68. data/site-local/development/plugins/rake-tasks.html +3 -3
  69. data/site-local/development/workflow.html +3 -3
  70. data/site-local/getting-started/command-line.html +3 -3
  71. data/site-local/getting-started/example-projects/cipher-quest.html +3 -3
  72. data/site-local/getting-started/example-projects/index.html +3 -3
  73. data/site-local/getting-started/example-projects/temp-sensor.html +3 -3
  74. data/site-local/getting-started/example-projects/wondrous-forest.html +3 -3
  75. data/site-local/getting-started/index.html +3 -3
  76. data/site-local/getting-started/installation.html +12 -4
  77. data/site-local/getting-started/quick-start.html +18 -4
  78. data/site-local/help.html +4 -4
  79. data/site-local/index.html +13 -8
  80. data/site-local/overview/build-system.html +6 -6
  81. data/site-local/overview/index.html +3 -3
  82. data/site-local/overview/test-environments.html +3 -3
  83. data/site-local/overview/tools-and-frameworks.html +3 -3
  84. data/site-local/plugins/beep.html +3 -3
  85. data/site-local/plugins/bullseye.html +9 -3
  86. data/site-local/plugins/command-hooks.html +42 -38
  87. data/site-local/plugins/compile-commands-json-db.html +3 -3
  88. data/site-local/plugins/cppcheck.html +3 -3
  89. data/site-local/plugins/dependencies.html +3 -3
  90. data/site-local/plugins/fff.html +3 -3
  91. data/site-local/plugins/gcov/examples.html +3 -3
  92. data/site-local/plugins/gcov/gcovr.html +325 -227
  93. data/site-local/plugins/gcov/index.html +9 -3
  94. data/site-local/plugins/gcov/overview.html +3 -3
  95. data/site-local/plugins/gcov/reportgenerator.html +3 -3
  96. data/site-local/plugins/gcov/reporting.html +3 -3
  97. data/site-local/plugins/gcov/setup.html +3 -3
  98. data/site-local/plugins/gcov/tool-versions.html +3 -3
  99. data/site-local/plugins/gcov/troubleshooting.html +3 -3
  100. data/site-local/plugins/index.html +79 -15
  101. data/site-local/plugins/module-generator.html +3 -3
  102. data/site-local/plugins/report-build-warnings-log.html +3 -3
  103. data/site-local/plugins/report-tests-gtestlike-stdout.html +3 -3
  104. data/site-local/plugins/report-tests-ide-stdout.html +3 -3
  105. data/site-local/plugins/report-tests-log-factory.html +3 -3
  106. data/site-local/plugins/report-tests-pretty-stdout.html +3 -3
  107. data/site-local/plugins/report-tests-raw-output-log.html +3 -3
  108. data/site-local/plugins/report-tests-teamcity-stdout.html +3 -3
  109. data/site-local/plugins/valgrind.html +9 -3
  110. data/site-local/project/release-history.html +3 -3
  111. data/site-local/project/upgrade.html +3 -3
  112. data/site-local/reference/build-directives.html +3 -3
  113. data/site-local/reference/command-line.html +3 -3
  114. data/site-local/reference/environment-vars.html +3 -3
  115. data/site-local/reference/gcov-plugin.html +3 -3
  116. data/site-local/reference/global-collections.html +3 -3
  117. data/site-local/reference/index.html +3 -3
  118. data/site-local/reference/partials-macros.html +3 -3
  119. data/site-local/reference/project-configuration.html +3 -3
  120. data/site-local/sitemap.xml.gz +0 -0
  121. data/site-local/snapshot/examples/cipher_quest/index.html +3 -3
  122. data/site-local/snapshot/examples/temp_sensor/index.html +3 -3
  123. data/site-local/snapshot/examples/wondrous_forest/index.html +3 -3
  124. data/site-local/testing-guide/build-directives.html +3 -3
  125. data/site-local/testing-guide/conventions.html +3 -3
  126. data/site-local/testing-guide/frameworks.html +3 -3
  127. data/site-local/testing-guide/index.html +3 -3
  128. data/site-local/testing-guide/partials/configuration.html +3 -3
  129. data/site-local/testing-guide/partials/conventions.html +3 -3
  130. data/site-local/testing-guide/partials/directives.html +3 -3
  131. data/site-local/testing-guide/partials/example.html +3 -3
  132. data/site-local/testing-guide/partials/index.html +25 -16
  133. data/site-local/testing-guide/partials/overview.html +3 -3
  134. data/site-local/testing-guide/partials/variables.html +3 -3
  135. data/site-local/testing-guide/test-cases.html +3 -3
  136. data/site-local/testing-guide/test-sample.html +3 -3
  137. data/site-local/testing-guide/test-suite-anatomy.html +3 -3
  138. data/spec/support/system/system_context.rb +3 -1
  139. data/spec/system/support/gcov_common_test_cases.rb +4 -1
  140. data/spec/units/preprocess/preprocessinator_file_assembler_spec.rb +155 -0
  141. data/spec/units/test_build_executor_spec.rb +114 -0
  142. data/vendor/unity/auto/generate_test_runner.rb +55 -5
  143. data/vendor/unity/src/unity.h +1 -1
  144. data/vendor/unity/test/testdata/testRunnerGeneratorEmpty.c +13 -0
  145. data/vendor/unity/test/tests/test_generate_test_runner.rb +11 -0
  146. metadata +9 -7
  147. data/site-local/assets/stylesheets/main.484c7ddc.min.css +0 -1
  148. data/vendor/unity/auto/run_test.erb +0 -37
@@ -20,7 +20,9 @@ class GcovrReportinator < GcovReportinator
20
20
 
21
21
  GCOVR_SETTING_PREFIX = "gcov_gcovr"
22
22
 
23
- def initialize(system_objects)
23
+ def initialize(system_objects, config)
24
+ super(config)
25
+
24
26
  @artifacts_path = GCOV_GCOVR_ARTIFACTS_PATH
25
27
  @summary = ''
26
28
  @ceedling = system_objects
@@ -37,6 +39,8 @@ class GcovrReportinator < GcovReportinator
37
39
  @tool_executor = @ceedling[:tool_executor]
38
40
  @configurator = @ceedling[:configurator]
39
41
 
42
+ check_config_options()
43
+
40
44
  @gcovr_version = get_gcovr_version()
41
45
 
42
46
  # MC/DC reporting requires gcovr 8+
@@ -78,13 +82,13 @@ class GcovrReportinator < GcovReportinator
78
82
  # and are not included in the string returned by this method.
79
83
  def args_builder_common(gcovr_opts, gcovr_version)
80
84
  args = ""
81
- args += "--config \"#{gcovr_opts[:config_file]}\" " unless gcovr_opts[:config_file].nil?
85
+ args += "--config \"#{gcovr_opts[:config_file]}\" " if config_file_in_use?(gcovr_opts)
82
86
 
83
87
  # When a config file is provided, defer all other options to it.
84
88
  # This prevents Ceedling from overriding config file values with its CLI arguments.
85
89
  # --root (${1}) is always passed; --exclude (${2}) is nil when a config file is present,
86
90
  # so the tool executor omits those flags and the config file governs exclusions.
87
- return args if gcovr_opts[:config_file]
91
+ return args if config_file_in_use?(gcovr_opts)
88
92
 
89
93
  args += "--filter \"#{gcovr_opts[:report_include]}\" " unless gcovr_opts[:report_include].nil?
90
94
  args += "--gcov-filter \"#{gcovr_opts[:gcov_filter]}\" " unless gcovr_opts[:gcov_filter].nil?
@@ -149,7 +153,7 @@ class GcovrReportinator < GcovReportinator
149
153
  artifacts_file_cobertura = File.join(GCOV_GCOVR_ARTIFACTS_PATH, gcovr_opts[:cobertura_artifact_filename])
150
154
  end
151
155
 
152
- args += "--xml-pretty " if gcovr_opts[:cobertura_pretty]
156
+ args += "--xml-pretty " if gcovr_opts[:cobertura_pretty] && !config_file_in_use?(gcovr_opts)
153
157
  args += "--xml #{use_output_option ? "--output " : ""} \"#{artifacts_file_cobertura}\" "
154
158
  end
155
159
 
@@ -190,7 +194,7 @@ class GcovrReportinator < GcovReportinator
190
194
  artifacts_file_json = File.join(GCOV_GCOVR_ARTIFACTS_PATH, gcovr_opts[:json_artifact_filename])
191
195
  end
192
196
 
193
- args += "--json-pretty " if gcovr_opts[:json_pretty]
197
+ args += "--json-pretty " if gcovr_opts[:json_pretty] && !config_file_in_use?(gcovr_opts)
194
198
  # Note: In gcovr 4.2, the JSON report is output only when the --output option is specified.
195
199
  # Hopefully we can remove --output after a future gcovr release.
196
200
  args += "--json #{use_output_option ? "--output " : ""} \"#{artifacts_file_json}\" "
@@ -219,12 +223,17 @@ class GcovrReportinator < GcovReportinator
219
223
  is_html_report_type_detailed = (opts[:gcov_html_report_type].is_a? String) && (opts[:gcov_html_report_type].casecmp("detailed") == 0)
220
224
 
221
225
  args += "--html-details " if is_html_report_type_detailed || report_enabled?(opts, ReportTypes::HTML_DETAILED)
222
- args += "--html-title \"#{gcovr_opts[:html_title]}\" " unless gcovr_opts[:html_title].nil?
223
- args += "--html-absolute-paths " if !(gcovr_opts[:html_absolute_paths].nil?) && gcovr_opts[:html_absolute_paths]
224
- args += "--html-encoding \"#{gcovr_opts[:html_encoding]}\" " unless gcovr_opts[:html_encoding].nil?
225
226
 
226
- [:html_medium_threshold, :html_high_threshold].each do |opt|
227
- args += "--#{opt.to_s.gsub('_','-')} #{gcovr_opts[opt]} " unless gcovr_opts[opt].nil?
227
+ # These options duplicate settings a gcovr configuration file would provide, so they're
228
+ # withheld when :config_file is set to avoid silently overriding the file's values.
229
+ if !config_file_in_use?(gcovr_opts)
230
+ args += "--html-title \"#{gcovr_opts[:html_title]}\" " unless gcovr_opts[:html_title].nil?
231
+ args += "--html-absolute-paths " if !(gcovr_opts[:html_absolute_paths].nil?) && gcovr_opts[:html_absolute_paths]
232
+ args += "--html-encoding \"#{gcovr_opts[:html_encoding]}\" " unless gcovr_opts[:html_encoding].nil?
233
+
234
+ [:html_medium_threshold, :html_high_threshold].each do |opt|
235
+ args += "--#{opt.to_s.gsub('_','-')} #{gcovr_opts[opt]} " unless gcovr_opts[opt].nil?
236
+ end
228
237
  end
229
238
 
230
239
  # The following option must be appended last for gcovr version <= 4.2 to properly work.
@@ -313,6 +322,42 @@ class GcovrReportinator < GcovReportinator
313
322
  end
314
323
 
315
324
 
325
+ # gcovr options silently ignored whenever :config_file is set (dropped by args_builder_common's
326
+ # early return, or gated in args_builder_cobertura/json/html) -- in that case all such
327
+ # configuration must come from the gcovr configuration file itself.
328
+ IGNORED_WHEN_CONFIG_FILE_SET = [
329
+ :report_include, :report_exclude, :gcov_filter, :gcov_exclude, :exclude_directories,
330
+ :branches, :sort_uncovered, :sort_percentage, :print_summary, :gcov_executable,
331
+ :exclude_unreachable_branches, :exclude_throw_branches, :use_gcov_files, :gcov_ignore_parse_errors,
332
+ :keep, :delete, :threads, :merge_mode_function,
333
+ :fail_under_line, :fail_under_branch, :fail_under_decision, :fail_under_function,
334
+ :source_encoding, :object_directory,
335
+ :cobertura_pretty, :json_pretty,
336
+ :html_title, :html_absolute_paths, :html_encoding, :html_medium_threshold, :html_high_threshold
337
+ ].freeze
338
+
339
+ # True when a gcovr configuration file is in use, meaning Ceedling must defer to it and
340
+ # withhold any option that would silently override its settings.
341
+ def config_file_in_use?(gcovr_opts)
342
+ !gcovr_opts[:config_file].nil?
343
+ end
344
+
345
+
346
+ # Validate the gcovr plugin configuration for known-bad combinations.
347
+ def check_config_options
348
+ gcovr_opts = @config[GCOVR_SETTING_PREFIX.to_sym] || {}
349
+ return unless config_file_in_use?(gcovr_opts)
350
+
351
+ ignored = IGNORED_WHEN_CONFIG_FILE_SET.select { |key| !gcovr_opts[key].nil? }
352
+ return if ignored.empty?
353
+
354
+ list = ignored.map { |key| ":#{key}" }.join(', ')
355
+ msg = ":gcov ↳ :gcovr ↳ :config_file is set, so the following options are ignored: #{list}. " \
356
+ "Provide equivalent settings directly in your gcovr configuration file instead."
357
+ @loginator.log( msg, Verbosity::COMPLAIN )
358
+ end
359
+
360
+
316
361
  # Get the gcovr options from the project options.
317
362
  def collect_gcovr_opts(opts)
318
363
  # dup prevents repeated calls from accumulating mutations on the shared opts hash.
@@ -320,10 +365,12 @@ class GcovrReportinator < GcovReportinator
320
365
  # would see the already-mutated :report_exclude from the previous call and nest it.
321
366
  _opts = opts[GCOVR_SETTING_PREFIX.to_sym].dup
322
367
 
323
- # Only auto-generate --exclude patterns when no config file is specified.
324
- # A gcovr config file is authoritative; CLI args override it, so injecting
325
- # auto-excludes would silently defeat the config file.
326
- unless _opts[:config_file]
368
+ if config_file_in_use?(_opts)
369
+ # A gcovr config file is authoritative; CLI args override it, so injecting
370
+ # auto-excludes would silently defeat the config file. Force an empty array
371
+ # (not nil) so the tool executor omits the --exclude flag entirely.
372
+ _opts[:report_exclude] = []
373
+ else
327
374
  # Build array of --exclude patterns: user-provided value (if any) + internally-generated per-file patterns.
328
375
  # Splat via *Array() handles both a user-supplied string and a user-supplied array
329
376
  # without introducing a nested element into the exclusions list.
@@ -19,7 +19,9 @@ class ReportGeneratorReportinator < GcovReportinator
19
19
 
20
20
  attr_reader :artifacts_path
21
21
 
22
- def initialize(system_objects)
22
+ def initialize(system_objects, config)
23
+ super(config)
24
+
23
25
  @artifacts_path = GCOV_REPORT_GENERATOR_ARTIFACTS_PATH
24
26
  @summary = ''
25
27
  @ceedling = system_objects
data/site-local/404.html CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
 
19
19
  <link rel="icon" href="/assets/images/favicon.png">
20
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
20
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
21
21
 
22
22
 
23
23
 
@@ -25,7 +25,7 @@
25
25
 
26
26
 
27
27
 
28
- <link rel="stylesheet" href="/assets/stylesheets/main.484c7ddc.min.css">
28
+ <link rel="stylesheet" href="/assets/stylesheets/main.ec1eaa64.min.css">
29
29
 
30
30
 
31
31
  <link rel="stylesheet" href="/assets/stylesheets/palette.ab4e12ef.min.css">
@@ -3995,7 +3995,7 @@
3995
3995
  <script id="__config" type="application/json">{"annotate": null, "base": "/", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.indexes", "navigation.path", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "/assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script>
3996
3996
 
3997
3997
 
3998
- <script src="/assets/javascripts/bundle.79ae519e.min.js"></script>
3998
+ <script src="/assets/javascripts/bundle.d7400e89.min.js"></script>
3999
3999
 
4000
4000
 
4001
4001
  </body>