diff --git a/README.md b/README.md index c62ba398..db3d2f52 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ library builds & dependency management, and more. [TDD]: http://en.wikipedia.org/wiki/Test-driven_development [test-doubles]: https://blog.pragmatists.com/test-doubles-fakes-mocks-and-stubs-1a7491dfa3da [FFF]: https://github.com/meekrosoft/fff -[FFF-plugin]: https://github.com/ElectronVector/fake_function_framework +[FFF-plugin]: https://github.com/ThrowTheSwitch/Ceedling/tree/master/plugins/fff [ceedling-plugins]: docs/CeedlingPacket.md#ceedling-plugins
@@ -313,7 +313,9 @@ Training and support contracts are available through **_[Ceedling Pro][ceedling- ## Ceedling docs -**[Usage help][ceedling-packet]** (a.k.a. _Ceedling Packet_), **[release notes][release-notes]**, **[breaking changes][breaking-changes]**, **[changelog][changelog]**, a variety of guides, and much more exists in **[docs/](docs/)**. +* **_[Ceedling Packet][ceedling-packet]_** is Ceedling’s user manual. It references and links to the documentation of the other projects, _Unity_, _CMock_, and _CException_, that it weaves together into a build. +* **[Release Notes][release-notes]**, **[Breaking Changes][breaking-changes]**, and **[Changelog][changelog]** can be found in the **[docs/](docs/)** directory along with a variety of guides and much more. +* The **[Plugins section](https://github.com/ThrowTheSwitch/Ceedling/blob/test/ceedling_0_32_rc/docs/CeedlingPacket.md#ceedling-plugins)** within _Ceedling Packet_ lists all plugins providing overviews and links to their documentation. ## Library and courses @@ -341,36 +343,10 @@ Matt Chernosky’s **[detailed tutorial][tutorial]** demonstrates using Ceedling # 🚀 Getting Started -👀 See the **_[Quick Start](docs/CeedlingPacket.md#quick-start)_** section in Ceedling’s core documentation, _Ceedling Packet_. +👀 See the **_[Quick Start](docs/CeedlingPacket.md#quick-start)_** section in Ceedling’s user manual, _Ceedling Packet_. ## The basics -### MadScienceLab Docker Image - -Fully packaged [Ceedling Docker images][docker-images] containing Ruby, Ceedling, the GCC toolchain, and more are also available. [Docker containers][docker-overview] provide self-contained, portable, well-managed alternative to local installation of tools like Ceedling. - -To run the _MadScienceLab_ container from your local terminal after [installing Docker][docker-install]: - -_Note: [Helper scripts are available][docker-images] to simplify your command line and access advanced features._ - -```shell - > docker run -it --rm -v $PWD/my/project:/home/dev/project throwtheswitch/madsciencelab:latest -``` - -When the container launches it will drop you into a Z-shell command line that has access to all the tools and utilities available within the container. - -To run Ceedling from within the _MadScienceLab_ container’s shell and project working directory: - -```shell - > ceedling test:all -``` - -See the [Docker image documentation][docker-images] for all the details on how to use these containers. - -[docker-overview]: https://www.ibm.com/topics/docker -[docker-install]: https://www.docker.com/products/docker-desktop/ -[docker-images]: https://hub.docker.com/r/throwtheswitch/madsciencelab - ### Local installation 1. Install [Ruby]. (Only Ruby 3+ supported.) @@ -389,6 +365,55 @@ See the [Docker image documentation][docker-images] for all the details on how t > ceedling test:all release ``` +### MadScienceLab Docker Images + +As an alternative to local installation, fully packaged Docker images containing Ruby, Ceedling, the GCC toolchain, and more are also available. [Docker][docker-overview] is a virtualization technology that provides self-contained containers that are a portable, well-managed alternative to local installation of tools like Ceedling. + +Two Docker images containing Ceedling and supporting tools exist: + +1. **_[MadScienceLab][docker-image-base]_**. This image contains Ruby, Ceedling, CMock, Unity, CException, the GNU Compiler Collection (gcc), and a handful of essential C libraries and command line utilities. +1. **_[MadScienceLab Plugins][docker-image-plugins]_**. This image contains all of the above plus the command line tools that Ceedling’s built-in plugins rely on. + +See the Docker Hub pages linked above for more documentation on these images and details on the platforms on which you can run these images. + +To run a _MadScienceLab_ container from your local terminal: + +1. [Install Docker][docker-install] +1. Determine: + 1. The local path of your Ceedling project + 1. The variant and revision of the Docker image you’ll be using +1. Run the container with: + 1. The Docker `run` command and `-it --rm` command line options + 1. A Docker volume mapping from the root of your project to the default project path inside the container + +Example: + +```shell + > docker run -it --rm -v /my/local/project/path:/home/dev/project throwtheswitch/madsciencelab-plugins: +``` + +When the container launches it will drop you into a Z-shell command line that has access to all the tools and utilities available within the container. + +To run Ceedling from within the _MadScienceLab_ container’s shell and project working directory, just execute it as you would after installing it locally: + +```shell + dev | ~/project > ceedling help +``` + +```shell + dev | ~/project > ceedling new ... +``` + +```shell + dev | ~/project > ceedling test:all +``` + +[docker-overview]: https://www.ibm.com/topics/docker +[docker-install]: https://www.docker.com/products/docker-desktop/ + +[docker-image-base]: https://hub.docker.com/r/throwtheswitch/madsciencelab +[docker-image-plugins]: https://hub.docker.com/r/throwtheswitch/madsciencelab-plugins + ### Example super-duper simple Ceedling configuration file ```yaml @@ -533,7 +558,9 @@ You can enable this by adding `--gitsupport` to your `new` call. # 💻 Contributing to Ceedling Development -## Alternate installation for development +## Alternate installation options for Ceedling development + +### Alternate local installation for development After installing Ruby… @@ -566,6 +593,30 @@ Gemfile.lock. > sudo gem install bundler -v ``` +### Alternate Docker image usage for development + +For nearly all development tasks, the _MadScienceLab_ Docker images contain +everything needed. + +When running an existing image as a development container, one merely needs +to map a volume from your local Ceedling code repository to Ceedling’s +installation location within the container. With that accomplished, +experimenting with project builds and running self-tests is simple. + +1. Start your target Docker container +1. Look up the Ceedling gem’s installation path from within the container + + ```shell + dev | ~/project > gem info ceedling + ``` +1. Exit the container +1. Restart the container with the gem installation volume mapping and + any other command line options you need + + ```shell + docker run -it --rm -v /my/local/ceedling/repo: -v /my/local/experiment/path:/home/dev/project throwtheswitch/madsciencelab: + ``` + ## Running Ceedling’s self-tests Ceedling uses [RSpec] for its tests. diff --git a/docs/Changelog.md b/docs/Changelog.md index 5f067464..b210da24 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -9,7 +9,7 @@ This changelog is complemented by two other documents: --- -# [1.0.0 pre-release] — 2024-06-19 +# [1.0.0 pre-release] — 2024-07-16 ## 🌟 Added @@ -133,6 +133,12 @@ Much glorious filepath and pathfile handling now abounds: * Matching globs were advertised in the documentation (erroneously, incidentally) but lacked full programmatic support. * Ceedling now tells you if your matching patterns don't work. Unfortunately, all Ceedling can determine is if a particular pattern yielded 0 results. +### Ceedling’s `:use_test_preprocessor` and CMock’s `:treat_inlines` now work together properly + +This fix addresses the problem detailed in PR [#728](https://github.com/ThrowTheSwitch/Ceedling/pull/728) and related issues. + +CMock can optionally mock inline functions. This requires ingesting, modifying, and rewriting a source hearder file along with then mocking it. Sophisticated header files with complex macros can require that the source header file be preprocessed before CMock then processes it a second time. In previous versions of Ceedling the preprocessing steps and handoff to CMock were not working as intended. This has been fixed. + ### Bug fixes for command line build tasks `files:header` and `files:support` Longstanding bugs produced duplicate and sometimes incorrect lists of header files. Similarly, support file lists were not properly expanded from globs. Both of these problems have been fixed. The `files:header` command line task has replaced the `files:include` task.