Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Ruby/Rake-based build and test system for C projects
Ruby C C++

Updated to new versions of CMock and Unity to get type_sanitizer upda…

…te and fix for mocking files with multiple extentions (e.g. kinetic.pb-c.h)
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 Add initial Markdown conversion of `CeedlingPacket.odt.`
examples Updated defaults for OSX clang compatibility.
lib Updated to new versions of CMock and Unity to get type_sanitizer upda…
plugins Updated ide and pretty test reports to list test output first, since …
spec Merged in 'update_ide_and_pretty_reort_ordering' branch to get report…
test_graveyard Updated to pull in latest cmock and unity and bumped minor version
vendor Updated to new versions of CMock and Unity to get type_sanitizer upda…
.gitignore Added ignore of .ruby-version file for rbenv since we want the versio…
.gitmodules Updated cmock and unity to latest.
.travis.yml Updated to latest CMock and Unity.
Gemfile Updated to use RSpec 3.0+ and bumped version for new release
Gemfile.lock Updated to use RSpec 3.0+ and bumped version for new release
README.md 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.

README.md

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 https://github.com/throwtheswitch/ceedling.git
> 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'
Ceedling.load_project

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:

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

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

:environment:

:extension:
  :executable: .out

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

:defines:
  # 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 []
  :test:
    - *common_defines
    - TEST
  :test_preprocess:
    - *common_defines
    - TEST

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

#:tools:
# 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

:plugins:
  :load_paths:
    # 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
  :enabled:
    # 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:

./test
./test/support
./src
./project.yml
./Rakefile
./build
Something went wrong with that request. Please try again.