Releases: ThrowTheSwitch/Ceedling
v1.1.0-pre.2
🌟 Added
Partials
A Partial is a new feature that allows a test author to work with portions of the same C module under test differently from within the same test file.
With Partials, a test can now cause some functions in the source module under test to be mocked while other source functions are executed against assertions (see #936). Partials also allow testing of static and inline functions with no modification of your source code under test.
Documentation site
Ceedling is now complemented by a full, searchable documentation site.
A local verion of this site that is navigable with your web browser from your filesystem is included within Ceedling and exportable through CLI commands.
CLI additions
ceedling helpoutput provides links for further support and Github sponsorship.ceedling checkvalidates your configuration and produces logs from processing it without executing a build.ceedling docsexports the new HTML-based documentation site to your local filesystem.
GCov plugin support for Modified Condition / Decision Coverage
Ceedling’s GCov plugin for coverage reporting now supports the Modified Condition / Decision Coverage abilities of GCC 14+ and optionally GCovr 8+.
System includes
Preprocessing support now properly distinguishes and handles system includes (#include <system.h>) and user includes (#include "user.h").
💪 Fixed
- #1011 Performance Improvements.
- #1014 Line Continuations not working in test name.
- #1015 directive-only issue.
- #1024 Fixed bug in options-handling for warnings log report.
- #358 Mocks with relative path in
#includedirective. - #1128 Command line mixin precedence.
- Revisions to Mixin documentation correct merge order explanations and clarify Mixins generally.
:gcovsection of:flagsis able to use filename matchers again (like:testsection).- Now properly reports timing for single-batch builds (i.e. non-parallel builds).
- PR #1126 fix for race condition in cache handling of
#includelistings in YAML files. - PR #1056 fix for extracting
#includedirective filenames that contain dashes. - Multiple fixes to
#includes handling and encoding. - Type handling in example
temp_sensorproject compatible with C23 (and previous C standards). - #1120 An overly “helpful” holdover from Ceedling’s earliest days caused certain temporary and backup files to be cleaned that were needed by the user’s IDE and text editing tooling.
⚠️ Changed
- PR #1003 improvements for Mixin merges — clearer logging and edge case handling.
- Added warning logging if a Mixin contains mixins (nesting is not supported).
- Mixins now merge list content according to mixin priority. In all cases but one, a higher priority mixin inserts its list content before the content of the existing list to which it is merging. In the case of
:tools:argumentslists, insertion occurs at the end of the arguments list to enable the typical CLI convention of rightmost argument having the highest priority. - Significant refactoring and improvements to logging and parallel processing.
- Streamlined preprocessing, eliminating redundant steps and reducing memory usage.
- The GCov plugin now compiles all files with coverage (and filters out unneeded framework results) in order to meet the stricter coverage handling that began with GCC 14. This change is backwards and forwards compatible with virtually all versions of GCC and the GCov plugin’s supporting utilities.
- Resolved ambiguity in updated
ceedling newhandling from 0.31.1 to 1.0.0. - Fixes for typos and grammar in documentation and logging.
👋 Removed
- CeedlingPacket.md user manual (superseded by new documentation site and local bundle).
- PluginDevelopmentGuide.md (superseded by new documentation site and local bundle).
v1.1.0-pre.1
🌟 Added
Partials
A Partial is a new feature that allows a test author to work with portions of the same C module under test differently from within the same test file.
With Partials, a test can now cause some functions in the source module under test to be mocked while other source functions are executed against assertions (see #936). Partials also allow testing of static and inline functions with no modification of your source code under test.
Documentation site
Ceedling is now complemented by a full, searchable documentation site.
A local verion of this site that is navigable with your web browser from your filesystem is included within Ceedling and exportable through CLI commands.
CLI additions
ceedling helpoutput provides links for further support and Github sponsorship.ceedling checkvalidates your configuration and produces logs from processing it without executing a build.ceedling docsexports new HTML-based documentation site to your filesystem.
GCov plugin support for Modified Condition / Decision Coverage
Ceedling’s GCov plugin for coverage reporting now supports the Modified Condition / Decision Coverage abilities of GCC 14+ and optionally GCovr 8+.
System includes
Preprocessing support now properly distinguishes and handles system includes (#include <system.h>) and user includes (#include "user.h").
💪 Fixed
- #1011 Performance Improvements.
- #1014 Line Continuations not working in test name.
- #1015 directive-only issue.
- #1024 Fixed bug in options-handling for warnings log report.
- #358 Mocks with relative path in include .
:gcovsection of:flagsis able to use filename matchers again (like:testsection).- Now properly reports timing for single-batch builds (i.e. non-parallel builds).
- Fixes to
#includes handling and encoding. - PR #1126 fix for race condition in cache handling of
#includelistings in YAML files. - PR #1056 fix for extracting
#includedirective filenames that contain dashes. - Type handling in example
temp_sensorproject compatible with C23 (and previous C standards).
⚠️ Changed
- PR #1003 improvements for Mixin merges — clearer logging and edge case handling.
- Significant refactoring and improvements to logging and parallel processing.
- Streamlined preprocessing, eliminating redundant steps and reducing memory usage.
- The GCov plugin now compiles all files with coverage (and filters out unneeded framework results) in order to meet the stricter coverage handling that began with GCC 14. This change is backwards and forwards compatible with virtually all versions of GCC and the GCov plugin’s supporting utilities.
- Resolved ambiguity in updated
ceedling newhandling from 0.31.1 to 1.0.0. - Fixes for typos and grammar in documentation and logging.
👋 Removed
- CeedlingPacket.md user manual (superseded by new documentation site and local bundle).
- PluginDevelopmentGuide.md (superseded by new documentation site and local bundle).
Partials Pre-release
Automatic pre-release for 1.1.0-7343c1c
A Partial is a new feature that allows a test author to work with portions of the same C module under test differently from within the same test file. For example, a test can now cause some functions in the source module under test to be mocked while other source functions are executed against assertions (see #936).
Incremental Release
Partials
- Testing and mocking any functions extracted from source through new Partials directive macros (available for use only in test files).
- Exposing private (
static) module variables for testing — i.e. strippingstaticandexterning the variables. - Exposing private (
static) function-scoped variables for testing — i.e. relocating the declarations from function to module scope, strippingstatic, renaming the variables to prevent name collisions, andexterning the variables. - Remapping the location of functions within generated Partials to their original source files for proper coverage reporting.
- Handling all core C language features including
typedefs, macros, structs, unions, enums, etc. - Preserving order of C statements in source modules transformed into Partials.
- Support for compiler extensions (e.g. MSVC
__declspecand GCC__attribute()__). - GCov plugin
- Partials support for console reports
- Support for GCC 14+ (coverage reporting instrumentation changed with GCC 14)
- Support for modified condition/decision coverage when available in the toolchain
Fixes
- Fixed a line numbering problem for coverage reporting of partialized functions.
Other improvements
- Preprocessing support for distinguishing and handling system includes (
#include <system.h>) and user includes (#include "user.h"). - Streamlined preprocessing, eliminating redundant steps and reducing memory usage.
ceedling checkvalidates and processes project configuration without running anything.- The new Ceedling documentation system is incorporated into the CLI, including the new
ceedling docs.
Documentation
This pre-release marks the transition away from unwieldy and dispersed monolithic markdown documents for Ceedling documentation. A totally revamped and fully web-based documentation system for Ceedling is nearing completion. A temporary dev version of the new Ceedling documentation is available online now and just refreshed. The documentation for Partials is ready to be used.
Known Issues
- Preprocessing for Partials does not handle decorator macros (e.g.
STATICINLINE) in function signatures.
v1.0.1
Bugfix Release 1.0.1 (full name 1.0.1-fb1ce6c)
Bug fixes:
- #978
- #979
- #980
- #981
- #982
- #985
- #988
- #888 & #977
- #996
- #998
- #1005
- Restored
:use_mocksset to true in Ceedling defaults to match documentation and other mocking defaults in template projects. - Resolved a preprocessing issue that could cause the content of a file having a similar filename to that of the file
#includeing it to become mixed with that file.
v1.0.0
This Ceedling release is the most significant since the project was first posted to SourceForge.
Ceedling now runs in Ruby 3. Builds can now run much faster than previous versions because of parallelized tasks. In test suites, header file search paths, code defines, and tool run flags are now customizable per test executable. Ceedling now also offers integrated debugging options to find the cause of crashing tests.
🏴☠️ Avast, Breaking Changes, Ye Scallywags!
Ahoy! There be plenty o’ breaking changes in this release. See Breaking Changes (linked below) for more information!
📚 Docs
Ceedling’s user manual, Ceedling Packet, has been greatly revised and expanded.
For those already familiar with Ceedling, the changes to project configuration are available in a cheat sheet.
📣 Shout-outs and Special Thank-You’s
A HUGE Thanks to the ThrowTheSwitch.org community, for continuing to use, critique, and contribute to these tools. We're making the C world a better place and we appreciate all of you!
We'd like to make some quick shout-outs to some especially helpful contributions. THANK YOU!
-- Mark VanderVoord & Machael Karlesky, ThrowTheSwitch.org Project Maintainers
Sponsors of Ceedling 1.0.0
- ThingamaByte, LLC - For continuing to nurture these projects and community with so much of their time.
- Kamstrup, A/S - For sponsoring and testing Ceedling's new parallel build/test support
- Fraunhofer Institute for Integrated Systems and Device Technology IISB - For also sponsoring and testing Ceedling's new parallel build/test support
- Peter Membrey - For sponsoring, helping to plan, and validating Ceedling's new dependencies plugin
Major Code/Doc Contributors
These individuals contributed significant features, bugfixes, and improvements. This list was generated by git, so if you feel you should be here, you're probably right. Please let us know and we're very sorry to have missed you!
- Dom Postorivo
- Cezary Gapinski
- Aaron Schlicht
- Tim Bates
- Patrick Junger
- Austin Glaser
- Łukasz Żegliński
- Anthony Male
- Peter Membrey
- Laurens Miers
- Alejandro Rosso
- Tony Webb
- Greg Williams
- John Van Enk
- Job Vranish
Major Forum Contributors
These individuals have been a huge help in answering questions and guiding newcomers on our forums. Thanks for making this a welcoming community!
Also, thanks for your contributions!
Hiroaki Yamazoe, Lucas Becker, Rafael Campos Las Heras, Scott Vokes, Zane D. Purvis, Данила Вальковец, Aaron Schlicht,
Carl-Oskar Larsson, Javier Tiá, Jesper L. Nielsen, MrRedKite, Nik Krause, Rasmus Melchior Jacobsen, serjche,
Andrei Korigodskii, Eder Clayton, Felipe Balbi, Hannes Bachl, Mike D. Lowis, Peter Horn, Rasmus Uth Pedersen,
Simon Grossenbacher, AlexandreMarkus, André Draszik, Aurelien CHAPPUIS, Austin Yates, Ben Wainwright,
Christopher Cichiwskyj, Crt Mori, Horacio Mijail Antón Quiles, John Hutchinson, Joseph Gaudet, Julien Peyregne, KGons,
Kalle Møller, Peter Kempter, Luca Cavalli, Maksim Chichikalov, Marcelo Jo, Matt Chernosky, Niall Cooling,
Olivier C. Larocque, Patrick Little, Richard Eklycke, Serjche, Spencer Russell, Stavros Vagionitis, Steven Huang,
Toby Mole, Tom Hotston, Yuanqing Liu, afacotti, ccarrizosa, diachini, Steven Willard
v0.31.1
Primarily bugfixes on the 0.30.0 release.
v0.31.0
many bugfixes.
improved (but not perfect) dependency tracking.
big improvements to gcov support.
better handling of includes (particularly related to subdirs).
improved (but again not perfect) parsing.
v0.30.0
This release of Ceedling includes:
- The Dependencies Plugin (a method of automatically fetching and building sub-projects.
- Significant improvements to GCOV coverage reporting.
- Cleaner library linking support.
- More flexible support for compiling with different options.
- Many Many bugfixes and improvements to self-testing.
Special Thanks to Peter Membrey (@pmembrey) for sponsoring this release, and the dependencies plugin in particular!
Also Thanks to @aschlicht, @CezaryGapinski, @felipebalbi, @beckerzito, @germouse12, @korigod, @andred, @tobyjwebb , and the rest of the community for your contributions!
Ceedling v0.29.1
Update to latest Unity 2.5 & CMock 2.5.1
Cleaner command interface with all things calling ceedling
Better coverage integration
Better options and projects support
Better new and upgrade support
Now defaults to new project AS GEM. can be forced to install locally if desired.
Many many many bugfixes.
Improved support for updating existing projects.
Ceedling v0.28.3
[Release Candidate. We'd love your feedback]
- Improvements to Bullseye plugin
- Improvements to gcov plugin
- Improvements to Module Generator
- Multi-threaded Compiles
- Report Test Timing Supported
- On-demand build directory creation
- Better support for assembly files in TESTS (already existed in releases)
- Docs have been cleaned in spots
- Many a bug squashed
- New plugin: Raw Output