Skip to content

Releases: ThrowTheSwitch/Ceedling

v1.1.0-pre.2

02 Jun 19:17
v1.1.0-pre.2

Choose a tag to compare

v1.1.0-pre.2 Pre-release
Pre-release

🌟 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 help output provides links for further support and Github sponsorship.
  • ceedling check validates your configuration and produces logs from processing it without executing a build.
  • ceedling docs exports 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 #include directive.
  • #1128 Command line mixin precedence.
  • Revisions to Mixin documentation correct merge order explanations and clarify Mixins generally.
  • :gcov section of :flags is able to use filename matchers again (like :test section).
  • Now properly reports timing for single-batch builds (i.e. non-parallel builds).
  • PR #1126 fix for race condition in cache handling of #include listings in YAML files.
  • PR #1056 fix for extracting #include directive filenames that contain dashes.
  • Multiple fixes to #includes handling and encoding.
  • Type handling in example temp_sensor project 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 :arguments lists, 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 new handling from 0.31.1 to 1.0.0.
  • Fixes for typos and grammar in documentation and logging.

👋 Removed

v1.1.0-pre.1

25 May 23:15

Choose a tag to compare

v1.1.0-pre.1 Pre-release
Pre-release

🌟 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 help output provides links for further support and Github sponsorship.
  • ceedling check validates your configuration and produces logs from processing it without executing a build.
  • ceedling docs exports 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 .
  • :gcov section of :flags is able to use filename matchers again (like :test section).
  • 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 #include listings in YAML files.
  • PR #1056 fix for extracting #include directive filenames that contain dashes.
  • Type handling in example temp_sensor project 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 new handling 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

22 May 00:54

Choose a tag to compare

Partials Pre-release Pre-release
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

  1. Testing and mocking any functions extracted from source through new Partials directive macros (available for use only in test files).
  2. Exposing private (static) module variables for testing — i.e. stripping static and externing the variables.
  3. Exposing private (static) function-scoped variables for testing — i.e. relocating the declarations from function to module scope, stripping static, renaming the variables to prevent name collisions, and externing the variables.
  4. Remapping the location of functions within generated Partials to their original source files for proper coverage reporting.
  5. Handling all core C language features including typedefs, macros, structs, unions, enums, etc.
  6. Preserving order of C statements in source modules transformed into Partials.
  7. Support for compiler extensions (e.g. MSVC __declspec and GCC __attribute()__).
  8. GCov plugin
    1. Partials support for console reports
    2. Support for GCC 14+ (coverage reporting instrumentation changed with GCC 14)
    3. 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

  1. Preprocessing support for distinguishing and handling system includes (#include <system.h>) and user includes (#include "user.h").
  2. Streamlined preprocessing, eliminating redundant steps and reducing memory usage.
  3. ceedling check validates and processes project configuration without running anything.
  4. 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

  1. Preprocessing for Partials does not handle decorator macros (e.g. STATICINLINE) in function signatures.

v1.0.1

30 Jan 18:48

Choose a tag to compare

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_mocks set 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

01 Jan 19:29

Choose a tag to compare

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

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

18 Jun 20:06
ca463d0

Choose a tag to compare

Primarily bugfixes on the 0.30.0 release.

v0.31.0

29 Jan 16:16

Choose a tag to compare

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

03 May 20:55

Choose a tag to compare

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

13 Nov 01:50

Choose a tag to compare

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

08 Aug 17:57

Choose a tag to compare

[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