ceedling 1.1.6 → 1.1.8

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/GIT_COMMIT_SHA +1 -1
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +2 -0
  5. data/README.md +4 -1
  6. data/docs/Changelog.md +41 -0
  7. data/docs/KnownIssues.md +3 -0
  8. data/docs/mkdocs/configuration/project-file.md +25 -7
  9. data/docs/mkdocs/configuration/reference/cexception.md +1 -1
  10. data/docs/mkdocs/configuration/reference/cmock.md +1 -1
  11. data/docs/mkdocs/configuration/reference/unity.md +1 -1
  12. data/docs/mkdocs/getting-started/quick-start.md +11 -8
  13. data/docs/mkdocs/plugins/gcov/gcovr.md +329 -189
  14. data/docs/mkdocs/plugins/gcov/reportgenerator.md +113 -31
  15. data/docs/mkdocs/reference/gcov-plugin.md +29 -6
  16. data/docs/mkdocs/snapshot/plugins/gcov/config/defaults.yml +0 -1
  17. data/lib/ceedling/c_extractor/c_extractor_declarations.rb +11 -10
  18. data/lib/ceedling/c_extractor/c_extractor_preprocessing.rb +39 -2
  19. data/lib/ceedling/generators/generator_test_results_backtrace.rb +21 -11
  20. data/lib/ceedling/generators/generator_test_runner.rb +5 -1
  21. data/lib/ceedling/plugins/plugin_reportinator.rb +9 -0
  22. data/lib/ceedling/plugins/report_tests_stdout_plugin.rb +1 -1
  23. data/lib/ceedling/preprocess/preprocessinator_line_marker_includes_extractor.rb +6 -1
  24. data/lib/ceedling/preprocess/preprocessinator_reconstructor.rb +18 -5
  25. data/lib/version.rb +1 -1
  26. data/plugins/gcov/config/defaults.yml +0 -1
  27. data/plugins/gcov/lib/console_reportinator.rb +7 -0
  28. data/plugins/gcov/lib/gcov.rb +64 -26
  29. data/plugins/gcov/lib/gcovr_reportinator.rb +91 -47
  30. data/plugins/gcov/lib/reportgenerator_reportinator.rb +10 -6
  31. data/plugins/valgrind/lib/valgrind.rb +1 -1
  32. data/site-local/configuration/project-file.html +78 -8
  33. data/site-local/configuration/reference/cexception.html +5 -5
  34. data/site-local/configuration/reference/cmock.html +5 -5
  35. data/site-local/configuration/reference/unity.html +5 -5
  36. data/site-local/getting-started/quick-start.html +13 -9
  37. data/site-local/plugins/gcov/gcovr.html +1220 -255
  38. data/site-local/plugins/gcov/reportgenerator.html +404 -46
  39. data/site-local/reference/gcov-plugin.html +48 -10
  40. data/site-local/sitemap.xml.gz +0 -0
  41. data/site-local/snapshot/plugins/gcov/config/defaults.yml +0 -1
  42. data/spec/support/system/system_context.rb +7 -3
  43. data/spec/system/deployment_as_gem_spec.rb +2 -0
  44. data/spec/system/deployment_as_vendor_spec.rb +2 -0
  45. data/spec/system/gcov_deployment_spec.rb +3 -0
  46. data/spec/system/support/common_test_cases.rb +42 -0
  47. data/spec/system/support/gcov_common_test_cases.rb +70 -0
  48. data/spec/units/c_extractor/c_extractor_declarations_spec.rb +16 -0
  49. data/spec/units/c_extractor/c_extractor_integration_spec.rb +53 -0
  50. data/spec/units/c_extractor/c_extractor_preprocessing_spec.rb +45 -0
  51. data/spec/units/generators/generator_partials_spec.rb +98 -0
  52. data/spec/units/generators/generator_test_results_backtrace_spec.rb +77 -0
  53. data/spec/units/generators/generator_test_runner_spec.rb +23 -0
  54. data/spec/units/plugin_reportinator_spec.rb +38 -0
  55. data/spec/units/preprocess/preprocessinator_line_marker_includes_extractor_spec.rb +64 -0
  56. data/spec/units/preprocess/preprocessinator_reconstructor_spec.rb +74 -0
  57. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d99664eb478b97c839d72985434b355644836056256cd574d9d0868e7ece0f2d
4
- data.tar.gz: c82999e6fe6a8eb48a3c3f33031453af444c4ef0fc98bb0be554879d6b6e6072
3
+ metadata.gz: 3c1edc565bc9fcb24accc9fd0d5001076fe86564cb0acd02c7d1fc092476c2c1
4
+ data.tar.gz: 0c5ec0119bc3249824177c6094afd3e3ef9ee7da698b92fed894924d45d83625
5
5
  SHA512:
6
- metadata.gz: 2464ee642f445988fdf76aff593d659f6c41da9c5e8a78431d17c690383fa84d21141fd0335d5737a9827cd04e48a956aa18c44f32348084e1b1d7055a4bdecd
7
- data.tar.gz: a3251efd857f8314fdcef2f7e743d056d3aca42f76e01455f58b2c1caa7730aae1ca199c7c21bdc812ab2f50cbe4314be7f64c1ea56589ba2fbd4924a29b0e0a
6
+ metadata.gz: 6efc0307567637d4019978131f45758d694b97ea93a4a7ada5ff6be8c682d70eff9d8d453de4882cc46344bb1b0aa098dbf7982582a7d7a168818caba2bd7e51
7
+ data.tar.gz: 6366fddeaff5572f317efffb161ff64378cae4e6b2dea30aa11f3baf4aac1777611331483d071a080cb9a01aa1e4087409d5314559881ae0a12ce753a1f86311
data/GIT_COMMIT_SHA CHANGED
@@ -1 +1 @@
1
- 4a45278
1
+ 885dc91
data/Gemfile CHANGED
@@ -15,6 +15,10 @@ gem "rake", ">= 12", "< 14"
15
15
  gem "rr"
16
16
  gem "require_all"
17
17
 
18
+ # `rexml` has been removed from the default gems in some Ruby versions -- needed
19
+ # explicitly by the gcov Partials system-test cases, which parse gcovr's XML output.
20
+ gem "rexml"
21
+
18
22
  # Ceedling dependencies
19
23
  gem "diy", "~> 1.1"
20
24
  gem "constructor", "~> 2"
data/Gemfile.lock CHANGED
@@ -11,6 +11,7 @@ GEM
11
11
  parallel (1.28.0)
12
12
  rake (13.2.1)
13
13
  require_all (3.0.0)
14
+ rexml (3.4.4)
14
15
  rr (3.1.2)
15
16
  rspec (3.13.2)
16
17
  rspec-core (~> 3.13.0)
@@ -48,6 +49,7 @@ DEPENDENCIES
48
49
  parallel (~> 1.26)
49
50
  rake (>= 12, < 14)
50
51
  require_all
52
+ rexml
51
53
  rr
52
54
  rspec (~> 3.8)
53
55
  thor (~> 1.3)
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Ceedling ![CI](https://github.com/ThrowTheSwitch/Ceedling/workflows/CI/badge.svg)
2
2
  ========
3
3
 
4
- **Ceedling 1.1.5** is the latest and greatest.
4
+ **Ceedling 1.1.8** is the latest and greatest.
5
5
 
6
6
  See [_Release Notes_][release-notes], [_Changelog_](docs/Changelog.md),
7
7
  [_Breaking Changes_][breaking-changes], and [_Known Issues_][known-issues].
@@ -101,6 +101,9 @@ awesomeness in the C language.
101
101
  1. **[CMock]**<sup>†</sup>, a code generating,
102
102
  [function mocking & stubbing][test-doubles] kit for interaction-based testing.
103
103
 
104
+ If you are a Visual Studio Code user, you may also be interested in the
105
+ [Ceedling extension](https://marketplace.visualstudio.com/items?itemName=throw-the-switch.vscode-ceedling).
106
+
104
107
  <sup>†</sup> Through a [plugin][FFF-plugin], Ceedling also supports [FFF] for
105
108
  [fake functions][test-doubles] as an alternative to CMock’s mocks and stubs.
106
109
 
data/docs/Changelog.md CHANGED
@@ -10,6 +10,47 @@ This changelog is complemented by three other documents:
10
10
 
11
11
  ---
12
12
 
13
+ # [1.1.8] — 2026-09-10
14
+
15
+ ## 💪 Fixed
16
+
17
+ - Fixed a crashed test case in a parameterized group occasionally being misattributed to a different, shorter-named test case in the same group whose name happened to be a substring of the one actually named in the crash backtrace.
18
+ - Fixed a test case's line number occasionally being misattributed to an unrelated helper function whose name merely contained the test's name as a substring, cascading incorrect line numbers to every test case after it in the same file.
19
+
20
+ ### Partials
21
+
22
+ - [#1262](https://github.com/ThrowTheSwitch/Ceedling/issues/1262) Fixed a Partials-generated header occasionally concatenating two adjacent `#define` lines in one line causing a stray '#' compilation error. The triggering condition involved a `//` or `/* */` comment containing an apostrophe or quote (e.g. `// Don't ...`) that disrupted string literal handling.
23
+
24
+ ### Preprocessing
25
+
26
+ - [#1266](https://github.com/ThrowTheSwitch/Ceedling/issues/1266) Fixed a reconstructed header silently dropping any macro whose name or value merely contained the header's own include guard as a substring (e.g. guard `RTC_H` matching inside `RTC_HOUR_SECONDS`), causing undeclared-identifier compile errors.
27
+ - [#1268](https://github.com/ThrowTheSwitch/Ceedling/issues/1268) Fixed a mockable header's `#include` losing the enums, structs, and function prototypes of a conditionally-included file when that `#include` was indented inside its `#ifdef` block, causing undeclared-identifier compile errors.
28
+
29
+ ### Gcov plugin
30
+
31
+ - Fixed `:gcov ↳ :gcovr ↳ :decisions` reporting an incorrect minimum-version requirement; the version check (and docs) now correctly require `gcovr` 5.1 or higher.
32
+ - Fixed `:gcov ↳ :gcovr ↳ :fail_under_line`/`:fail_under_branch`/`:fail_under_decision`/`:fail_under_function` silently accepting `0`, contradicting the documented 1–100 range; `0` is now rejected.
33
+ - Fixed `:gcov ↳ :gcovr ↳ :object_directory` and `:source_encoding` values containing a space breaking the constructed `gcovr` command line; both are now quoted consistently with every other string-valued option.
34
+ - Fixed a regex-metacharacter-injection risk (e.g. a literal `.`) in `:gcov ↳ :gcovr`'s and `:gcov ↳ :report_generator`'s auto-generated exclusion patterns in `:test_file_prefix`, `:mock_prefix`, or the build root path could silently over- or under-match files.
35
+ - Fixed `:gcov ↳ :mcdc` triggering a `gcc --version` check (and a potential build-breaking exception for an older compiler) on every build in which a project enables the Gcov plugin, not only `gcov:` builds.
36
+ - Fixed only the first of multiple simultaneously violated `:gcov ↳ :gcovr ↳ :fail_under_*` thresholds being reported when a build-breaking exception is raised; every violated threshold is now listed.
37
+ - Fixed a latent mutation risk in `:gcov ↳ :report_generator` option handling that could accumulate stale exclusion patterns across repeated report-generation calls within a single run.
38
+ - `:gcov ↳ :gcovr ↳ :branches`/`:sort_uncovered`/`:sort_percentage` now use `gcovr`'s renamed `--txt-metric branch`/`--sort uncovered-number`/`--sort uncovered-percent` flags on `gcovr` 7.0+, silencing `gcovr`'s deprecation warnings for those options. The pre-7.0 flag names are still used automatically with older `gcovr`.
39
+ - Fixed the Gcov console summary silently producing no report and no log line at all for a Partial-implementation source whose `gcov` output couldn't be matched. It now logs the same "Found no coverage results" message the equivalent non-Partial case already did.
40
+
41
+ ---
42
+
43
+ # [1.1.7] — 2026-09-03
44
+
45
+ ## 💪 Fixed
46
+
47
+ - [#1251](https://github.com/ThrowTheSwitch/Ceedling/issues/1251) Fixed _Overall Test Summary_ not printing at logging verbosity of warning or error level on an otherwise all-passing test run.
48
+ - [#1252](https://github.com/ThrowTheSwitch/Ceedling/issues/1252) Fixed the Gcov plugin requiring `gcovr` to be installed for any build merely because the plugin was enabled, rather than only when a `gcov:` build actually runs.
49
+ - [#1080](https://github.com/ThrowTheSwitch/Ceedling/issues/1080) Fixed `:gcov ↳ :gcovr ↳ :fail_under_decision` failing every `gcov:` build outright — `gcovr` itself requires `--decisions` alongside `--fail-under-decision`, which Ceedling never supplied. A new `:decisions` option is also available directly. Each now reports a clear error if configured against a `gcovr` too old to support it (6.0 for `:decisions`, 7.0 for `:fail_under_decision`).
50
+ - Fixed a Unity `TEST_IGNORE_MESSAGE()` test case being misreported as crash evidence during crash-diagnosis retries when it shares a test file with a genuine crash.
51
+
52
+ ---
53
+
13
54
  # [1.1.6] — 2026-08-25
14
55
 
15
56
  ## 🌟 Added
data/docs/KnownIssues.md CHANGED
@@ -20,6 +20,8 @@ Known issues are complemented by three other documents:
20
20
  1. While header file search paths are now customizable per executable, this currently only applies to the search paths the compiler uses. Distinguishing test files or header files of the same name in different directories for test runner and mock generation respectively continues to rely on educated guesses in Ceedling code.
21
21
  1. All header files needed for test compilation must be within the `:includes` path collection. Relative paths in include directives that extend outside the path collection will cause build problems.
22
22
  1. Any path for a C file specified with `TEST_SOURCE_FILE(...)` is in relation to **_project root_** — that is, from where you execute `ceedling` at the command line. If you move source files or change your directory structure, many of your `TEST_SOURCE_FILE(...)` calls may need to be updated. A more flexible and dynamic approach to path handling will come in a future update.
23
+ 1. In certain combinations of conditional preprocessing blocks with dependent symbols defined in another file, Ceedling can silently fail to extract computed includes (e.g. `#include SOME_MACRO()`).
24
+ 1. User includes (`#include "path/user.h"`) from source C files lose their relative path when Partial and mock header files are generated from source. Compilation failures can result from certain uncommon cases involving headers of the same names in different directories and a source file including both such headers.
23
25
  1. The Bullseye code coverage plugin has been temporarily disabled as of 1.0.0. The makers of Bullseye have generously provided a license for development, and the plugin will be available in the next minor release.
24
26
 
25
27
  ---
@@ -29,6 +31,7 @@ Known issues are complemented by three other documents:
29
31
  1. The new internal pipeline that allows builds to be parallelized and configured per-test-executable can mean a fair amount of duplication of steps. A header file may be mocked identically multiple times. The same source file may be compiled identically multiple times. The speed gains due to parallelization help make up for this. Future releases will concentrate on optimizing away duplication of build steps.
30
32
  1. While header file search paths are now customizable per executable, this currently only applies to the search paths the compiler uses. Distinguishing test files or header files of the same name in different directories for test runner and mock generation respectively continues to rely on educated guesses in Ceedling code.
31
33
  1. All header files needed for test compilation must be within the `:includes` path collection. Relative paths in include directives that extend outside the path collection will cause build problems.
34
+ 1. C locales and non-ASCII characters (e.g. ©️ in a comment block) can cause parsing failures.
32
35
  1. System header includes `#include <system.h>` may not be properly distinguished from user includes `#include "user.h"` in many test preprocessing scenarios.
33
36
  1. Any path for a C file specified with `TEST_SOURCE_FILE(...)` is in relation to **_project root_** — that is, from where you execute `ceedling` at the command line. If you move source files or change your directory structure, many of your `TEST_SOURCE_FILE(...)` calls may need to be updated. A more flexible and dynamic approach to path handling will come in a future update.
34
37
  1. Ceedling’s many test preprocessing improvements are not presently able to preserve Unity’s special `TEST_CASE()` and `TEST_RANGE()` features. However, preprocessing of test files is much less frequently needed than preprocessing of mockable header files. Test preprocessing can now be configured to enable only one or the other. As such, these advanced Unity features can still be used in even sophisticated projects.
@@ -8,11 +8,21 @@
8
8
 
9
9
  ## Some YAML Learnin’
10
10
 
11
- Please consult YAML documentation for the finer points of format
12
- and to understand details of our YAML-based configuration file.
13
-
14
11
  We recommend [Wikipedia’s entry on YAML](http://en.wikipedia.org/wiki/Yaml)
15
- for this. A few highlights from that reference page:
12
+ and [educative.io’s advanced YAML cheatsheet](https://www.educative.io/blog/advanced-yaml-syntax-cheatsheet)
13
+ for a simple overview of YAML and its syntax sufficient for
14
+ understanding your Ceedling project configuration.
15
+
16
+ !!! tip "`ceedling dumpconfig` to verify your YAML"
17
+ Ceedling provides a means to export the final result of YAML
18
+ processing for your inspection via [`dumpconfig`](../getting-started/command-line.md#ceedling-dumpconfig-filepath-sections).
19
+ Dump output includes the resolution of advanced YAML features and
20
+ Ceedling’s own manipulations. This is a good way to troubleshoot
21
+ your project configuration.
22
+
23
+ ### YAML highlights & overview
24
+
25
+ A few points from the preceding references:
16
26
 
17
27
  * YAML streams are encoded using the set of printable Unicode
18
28
  characters, either in UTF-8 or UTF-16.
@@ -40,9 +50,17 @@ for this. A few highlights from that reference page:
40
50
  punctuation can generally be represented without needing
41
51
  to be enclosed in quotes.
42
52
 
43
- * Repeated nodes are initially denoted by an ampersand (`&`) and
44
- thereafter referenced with an asterisk (`*`). These are known as
45
- anchors and aliases in YAML speak.
53
+ ### YAML anchors, aliases, and extensions
54
+
55
+ YAML provides several “shortcuts” for referencing and modifying blocks
56
+ of YAML so you can avoid duplication. This is advanced YAML and
57
+ well beyond the scope of Ceedling documentation. However, know that
58
+ Ceedling’s YAML parser is entirely capable of handling these advanced
59
+ aspects of YAML.
60
+
61
+ See this [cheatsheet entry](https://www.educative.io/blog/advanced-yaml-syntax-cheatsheet#anchors)
62
+ and [this guide](https://blog.daemonl.com/2016/02/yaml.html)
63
+ for much more on these powerful but finicky features.
46
64
 
47
65
  ## Notes on Project File Structure
48
66
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Configure CException’s features**
4
4
 
5
- ## Exmaple `:cmock` YAML
5
+ ## Example `:cmock` YAML
6
6
 
7
7
  ```yaml
8
8
  :cexception:
@@ -6,7 +6,7 @@ Ceedling sets values for a subset of CMock settings. All CMock options are
6
6
  available to be set, but only those options set by Ceedling in an automated
7
7
  fashion are documented below. See [CMock documentation][cmock-docs].
8
8
 
9
- ## Exmaple `:cmock` YAML
9
+ ## Example `:cmock` YAML
10
10
 
11
11
  ```yaml
12
12
  :cmock:
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Configure Unity’s features**
4
4
 
5
- ## Exmaple `:unity` YAML
5
+ ## Example `:unity` YAML
6
6
 
7
7
  ```yaml
8
8
  :unity:
@@ -36,6 +36,11 @@ through running build tasks. Jump down just a teeny bit to see what the Ceedling
36
36
  command line looks like and navigate to all the documentation for the steps
37
37
  listed immediately below.
38
38
 
39
+ !!! warning "C toolchain requirement"
40
+ Ceedling requires a command line C toolchain be available in your path and is
41
+ flexible enough to work with most anything. By default, Ceedling is ready to
42
+ work with [GCC] out of the box (we recommend [MinGW] on Windows).
43
+
39
44
  1. [Install Ceedling](installation.md)
40
45
  1. Create a project
41
46
  * Use Ceedling to generate an example project (see next section), or
@@ -46,15 +51,13 @@ listed immediately below.
46
51
  1. Create a Ceedling project file in the root of your project directory.
47
52
  1. Run Ceedling tasks (see next section) from the working directory of your project.
48
53
 
49
- !!! note
50
- Ceedling requires a command line C toolchain be available in your path. It’s
51
- flexible enough to work with most anything on any platform. By default, Ceedling
52
- is ready to work with [GCC] out of the box (we recommend the [MinGW] project
53
- on Windows).
54
+ A common build strategy is to use your target toolchain for release builds—with or
55
+ without Ceedling—but rely on Ceedling + GCC for test builds (more on this
56
+ [here][overview]).
54
57
 
55
- A common build strategy with tooling other than GCC is to use your target
56
- toolchain for release builds—with or without Ceedling—but rely on Ceedling +
57
- GCC for test builds (more on all this [here][overview]).
58
+ !!! tip "Ceedling VS Code extension"
59
+ If you are a Visual Studio Code user, you may want to install the
60
+ [Ceedling extension](https://marketplace.visualstudio.com/items?itemName=throw-the-switch.vscode-ceedling).
58
61
 
59
62
  [GCC]: https://gcc.gnu.org
60
63
  [MinGW]: http://www.mingw.org/