Skip to content
Ruby/Rake-based build and test system for C projects
Ruby Other
Find file
Failed to load latest commit information.
assets Proposed new interface for the Ceedling gem
bin Fixed issues with ceedling executable due to ceedling release folder …
config first commit of working code
docs Fixes formatting issue with sample rakefile
examples Updated defaults for OSX clang compatibility.
lib Officially update version to latest collection
plugins Fixed XML inside <FailedTests>
spec Update Version of bundler being used with system tests on Travis
test_graveyard Updated to pull in latest cmock and unity and bumped minor version
vendor Officially update version to latest collection
.gitattributes - No more dependency on non-existent CMock version/ file
.gitignore Added ignore of .ruby-version file for rbenv since we want the versio…
.gitmodules Updated cmock and unity to latest.
.travis.yml This is called "guessing"
Gemfile Updated to use RSpec 3.0+ and bumped version for new release
Gemfile.lock Update Version of bundler being used with system tests on Travis Updated URLs to Travis CI to be camel-cased so that they work
Rakefile Updated defaults for OSX clang compatibility.
ceedling.gemspec Updated to pull in latest cmock and unity and bumped minor version
license.txt Updated version to 0.15 for gem release.

Ceedling - Build/test system for C based on Ruby/Rake

Ceedling Build Status

Ceedling is a build system for C projects that is something of an extension around Ruby’s Rake (make-ish) build system. Ceedling also makes TDD (Test-Driven Development) in C a breeze by integrating CMock, Unity, and CException -- three other awesome open-source projects you can’t live without if you're creating awesomeness in the C language. Ceedling is also extensible with a handy plugin mechanism.

Usage Documentation

Documentation and license info exists in the repo in docs/

Getting Started (Developers)

> git clone --recursive
> cd ceedling
> bundle install # Ensures you have all RubyGems needed
> bundle execute rake # Run all CMock library tests

Using Ceedling inside of a project

Ceedling can deploy all of its guts into a folder. This allows it to be used without having to worry about external dependencies.

ceedling new [your new project name]

Using Ceedling outside of a project as a gem

Ceedling can also be used as a gem. The following Rakefile is the bare minimum required in order to use Ceedling this way:

require 'ceedling'

If you want to load a Ceedling project YAML file other than the default project.yml (i.e. ./my_config.yml), you can do:

Ceedling.load_project(config: './my_config.yml')

Additionally, a project.yml is required. Here is one to get you started:

  :use_exceptions: FALSE
  :use_test_preprocessor: TRUE
  :use_deep_dependencies: TRUE
  :build_root: build
#  :release_build: TRUE
  :test_file_prefix: test_

#  :output: MyApp.out
#  :use_assembly: FALSE


  :executable: .out

    - +:test/**
    - -:test/support
    - src/**
    - test/support

  # in order to add common defines:
  #  1) remove the trailing [] from the :common: section
  #  2) add entries to the :common: section (e.g. :test: has TEST defined)
  :commmon: &common_defines []
    - *common_defines
    - TEST
    - *common_defines
    - TEST

  :when_no_prototypes: :warn
  :enforce_strict_ordering: TRUE
    - :ignore
    uint8:    HEX8
    uint16:   HEX16
    uint32:   UINT32
    int8:     INT8
    bool:     UINT8

# Ceedling defaults to using gcc for compiling, linking, etc.
# As [:tools] is blank, gcc will be used (so long as it's in your system path)
# See documentation to configure a given toolchain for use

    # This is required to use builtin ceedling plugins
    - "#{Ceedling.load_path}"
    # Uncomment this and create the directory in order to use your own
    # custom ceedling plugins
    # - ceedling_plugins
    # These plugins ship with Ceedling.
    - stdout_pretty_tests_report
    # - stdout_ide_tests_report # IDE parseable output
    # - teamcity_tests_report # TeamCity CI output (only enabled in TeamCity builds)
    - module_generator # Adds tasks for creating code module files

Finally, you'll need to create something like the following directory structure. This one matches the project.yml defined above:

Something went wrong with that request. Please try again.