We have updated Ceedling and release a new Rubygem to bundle the latest TDD counterparts, CMock and Unity, to utilize Travis CI to monitor the health of our tools at the ThrowTheSwitch GitHub organization!
Atomic Object has blazed the trail of bringing effective test-driven development (TDD) and continuous integration (CI) to C development for nearly a decade. When we embarked on this journey, very little (if any) support existed for the C language, so we rolled up our own.
- Unity is a basic testing framework. It’s portable C, easy to configure, and runs on almost everything.
- CMock is a framework that works with Unity to help you create mocks and stubs of interfaces to simplify testing.
- CException is simple exception handling in C. It is significantly faster than full-blown C++ exception handling but loses some flexibility.
- Ceedling is a build system that rolls up all the above into single Ruby gem!
The new Ceedling gem rolls up all of this goodness into a single Rubygem that allows you to create a full C project ala TDD with a simple Rakefile and a project.yml to easily configure and grow your masterpiece in a few keystrokes:
> ceedling new foo Project 'foo' created! - Tool documentation is located in: vendor/ceedling/docs - Execute 'rake -T' to view available tasks > cd foo > rake -T rake clean # Delete build artifacts rake clobber # Delete all generated files rake environment # List environment variables rake module:create[module_path] # Generate testable module rake module:destroy[module_path] # Destroy testable module rake test:* # Run single test ([*] module/test/source name) rake test:all # Run all unit tests rake test:delta # Run tests for changed files rake test:path[dir] # Run tests whose path contains [dir] rake test:pattern[regex] # Run tests mathing [regex] rake verbosity[level] # Set verbosity (silent:0-obnoxious:4) rake version # Display build environment version info > rake test:all -------------------- OVERALL TEST SUMMARY -------------------- No tests executed.
Honestly, we have been a bit lax on in the past on getting Ceedling updated as the other tools have grown. With them all now being watched by the world in Travis CI, our user base can easily see the good-ole’ green light to know that all of the pieces are ready to integrate… and to help keep us in check as well.
Best of all, in true open-source fashion, Travis CI will monitor all Pull Requests too, so that we can be sure that any contributions from any of our users don’t bust the build as well!