Артефакт CMock
Портативний дистрибутив вихідного коду CMock (ThrowTheSwitch/CMock) — генератора моків і стабів для C, який працює разом із фреймворком модульного тестування Unity. Цей репозиторій використовується Embedbits Platform Artifact Handler для пошуку, завантаження, перевірки та налаштування CMock у подальших embedded-проєктах.
CMock складається з двох частин, обидві входять до цього пакета:
- генератор на Ruby (
lib/cmock.rb), що розбирає заголовкові файли C і під час збірки генерує файлиMock<name>.c/.h— потребує артефакту Ruby, - невеликий C runtime (
src/cmock.c), який компілюється в тестовий бінарний файл — потребує заголовків артефакту Unity.
Цей репозиторій поділено на три гілки/посилання за ролями: гілка main (master), яку ви зараз читаєте, містить лише цю документацію; скрипти handler містяться в гілці Core, а версіоновані пакети з вихідним кодом публікуються як GitHub Releases, прив'язані до гілки Bin.
Вміст репозиторію
main / master
└── README.md ← This document — no other content
Core
├── ArtifactConfig.cmake ← Artifact metadata (name, version constraints, asset naming)
└── CMakeCMockDefaults.cmake ← CMock integration logic (mock generation, runtime library)
Bin (anchor branch — no tracked binary files)
└── (empty commits only; each release tag points here)
Роль у платформі
GitHub (ThrowTheSwitch) GitHub (Embedbits)
────────────────────────────────────── ──────────────────────────────────────────
ThrowTheSwitch/CMock Artifact-cmock
tag "v2.6.0" (source) ──► main / master → README only (this document)
Core → ArtifactConfig.cmake, CMakeCMockDefaults.cmake
Bin → Anchor branch (empty commits)
Releases → cmock-<version>.zip + .hash
tagged Bin/<version>
CMock_Importer.sh клонує початковий репозиторій для кожного тега релізу (vX.Y.Z), перевіряє, що checkout відповідає тегу, видаляє метадані .git, додає текстовий файл VERSION і пакує дерево вихідного коду в zip. CMock не залежить від платформи (Ruby + код на C), тому релізи не мають суфікса платформи — вони тегуються просто як Bin/<version> (префікс v відкидається).
Git submodules vendor/unity і vendor/c_exception із початкового репозиторію не включаються — вони потрібні лише для власних самотестів CMock. Unity фіксується окремо через артефакт Unity.
Структура гілок
| Гілка / посилання | Вміст |
|---|---|
main / master | Лише цей README — жодного функціонального вмісту |
Core | Скрипти CMake handler для використання артефакту |
Bin | Лише якірна гілка — бінарні файли тут не комітяться |
Тег релізу Bin/<version> | GitHub Release із вихідним пакетом .zip та файлом контрольної суми .hash |
Примітка: На Git-хостингу без Releases API (Azure DevOps) той самий імпортер комітить
.zip+.hashбезпосередньо в гілкуBinі тегує цей коміт якBin/<version>. Handler для CMake прозоро розпізнає обидві форми.
Отримання релізу
# Core handler scripts
git clone --branch Core --single-branch --depth=1 <repository_url> cmock-core
# Source package + checksum for one specific version (GitHub Release asset)
gh release download Bin/2.6.0 --repo Embedbits/Artifact-cmock --pattern "cmock-2.6.0.*"
Структура пакета
cmock-<version>.zip
└── cmock/
├── VERSION ← plain-text version, e.g. "2.6.0"
├── lib/ ← Ruby generator (cmock.rb + plugins)
├── config/ ← default generator configuration
├── src/ ← cmock.c, cmock.h, cmock_internals.h
├── vendor/unity/ ← empty (submodule not fetched — use the Unity artifact)
└── ... ← upstream docs, examples, tests
Приклад генерації моків за допомогою артефакту Ruby:
ruby cmock/lib/cmock.rb -o<config.yml> path/to/header.h
Версіонування
Версії артефакту безпосередньо відповідають офіційним тегам релізів CMock без префікса v:
2.5.3, 2.6.0, 2.7.0, ...
Ліцензія
CMock розповсюджується за ліцензією MIT. Докладніше: https://github.com/ThrowTheSwitch/CMock/blob/master/LICENSE.txt
Автори
- Mr.Nobody — embedbits.com
Запрошуємо до співпраці! Будь ласка, відкрийте pull request.