Skip to content

Ceedling Packet

Ceedling is a fancypants build system that greatly simplifies building C projects. While it can certainly build release targets, it absolutely shines at running unit test suites.

Ceedling and its suite of frameworks, including Unity and CMock, were developed for use on platforms from heavy duty workstations to teeny tiny microcontrollers. Features handy for low-level development have made these tools popular with embedded systems developers.

New to Ceedling?

Jump straight to the Quick Start — installation, project set up, and your first build tasks all in one place.

New in Ceedling 1.1.0 — Partials

A Partial is your C code sliced and diced to expose functional elements for testing that you could not otherwise access without rewriting your source code. Think of Partials as a scalpel for testing your code.

Overview

  • A Build System for C


    Generate a complete test and release build from a single YAML file. Provides a minimal sample project configuration and an explanation of Ceedling’s design philosophy.

  • Tools & Frameworks


    Ruby, Rake, YAML, Unity, CMock, and CException explained — the pieces that make Ceedling possible and how they fit together.

  • Test Environments


    Native host builds, emulator-based runs, and on-target execution — choose the right test suite strategy for your project.

Getting Started

Unit Testing

  • How Does a Test Case Even Work?


    A brief overview of what a test case is with simple examples illustrating how test cases work.

  • Commented Sample Test File


    A sample test file illustrating test case creation and the conventions that make it work. Includes a discussion of how test executables get built.

  • Anatomy of a Test Suite


    How a unit test grows up to become a test suite.

  • Using Unity, CMock & CException


    Ceedling links together Unity, CMock, and CException — each of which can require configuration of their own. Ceedling facilitates this.

  • Important Conventions & Behaviors


    Much of testing in Ceedling is accomplished by convention. Code and files structured and named in certain ways trigger sophisticated build features.

  • Partials


    Partials are like a scalpel for your source code. A generated partial allows you to test and mock parts of your code you could not otherwise access without rewriting it first.

Project Configuration

  • How to Load a Project Configuration


    You have options, my friend. Load your base configuration via command line flag, environment variable, or default file. Add Mixins to merge configuration for different build scenarios.

  • The Mighty Project Configuration File


    Everything you need to know about the project configuration file. All in glorious YAML.

  • Project Configuration Reference


    Exhaustive documentation for all project configuration options — project paths, testing features, plugins, and much more.

  • Parallel Builds


    Configure Ceedling to take advantage of multiple CPU cores for faster build steps and test suite execution.

  • Which Ceedling?


    Sometimes you may need to point to a different Ceedling to run.

Advanced & Extending

  • Build Directive Macros


    Code macros to accomplish build goals when Ceedling's conventions aren't quite enough.

  • Ceedling Plugins


    Ceedling is extensible with built-in plugins for code coverage, test reporting, CI integration, file scaffolding, sophisticated release builds, and more.

  • Global Collections


    Globally available Ruby lists of paths, files, and more — useful for advanced project customization and plugin development.