Artefakt CMock
Přenosná zdrojová distribuce nástroje CMock (ThrowTheSwitch/CMock), generátoru mocků a stubů pro C, který spolupracuje s frameworkem pro unit testy Unity. Tento repozitář využívá Artifact Handler platformy Embedbits k vyhledání, stažení, ověření a konfiguraci CMocku v navazujících embedded projektech.
CMock má dvě části, obě jsou součástí tohoto balíčku:
- generátor v Ruby (
lib/cmock.rb), který parsuje C hlavičky a během buildu generuje souboryMock<name>.c/.h— vyžaduje artefakt Ruby, - malý C runtime (
src/cmock.c) kompilovaný do testovací binárky — vyžaduje hlavičky z artefaktu Unity.
Tento repozitář je podle rolí rozdělen na tři větve/refy — větev main (master), kterou právě čtete, obsahuje pouze tuto dokumentaci; skripty handleru jsou ve větvi Core a verzované zdrojové balíčky jsou publikovány jako GitHub Releases ukotvené ve větvi Bin.
Obsah repozitáře
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)
Role v platformě
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 naklonuje upstream repozitář u každého release tagu (vX.Y.Z), ověří vyčtený tag, odstraní metadata .git, přidá textový soubor VERSION a zazipuje strom zdrojových kódů. CMock je nezávislý na platformě (Ruby + zdrojové kódy v C), takže vydání nemají příponu platformy — jsou označena prostě Bin/<version> (prefix v se vypouští).
Git submoduly vendor/unity a vendor/c_exception z upstreamu nejsou zahrnuty — slouží pouze vlastním self-testům CMocku. Unity je připnuto nezávisle prostřednictvím artefaktu Unity.
Struktura větví
| Větev / Ref | Obsah |
|---|---|
main / master | Pouze tento README — žádný funkční obsah |
Core | Skripty CMake handleru pro použití artefaktu |
Bin | Pouze kotvicí větev — nejsou zde commitovány žádné binárky |
Release tag Bin/<version> | GitHub Release obsahující zdrojový balíček .zip a soubor s kontrolním součtem .hash |
Poznámka: Na Git hostingu bez Releases API (Azure DevOps) stejný importér commituje
.zip+.hashpřímo do větveBina tento commit označí tagemBin/<version>. CMake handler obě varianty zpracuje transparentně.
Stažení vydání
# 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.*"
Struktura balíčku
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
Příklad generování mocků pomocí artefaktu Ruby:
ruby cmock/lib/cmock.rb -o<config.yml> path/to/header.h
Verzování
Verze artefaktů přímo odpovídají oficiálním release tagům CMocku s odstraněným prefixem v:
2.5.3, 2.6.0, 2.7.0, ...
Licence
CMock je distribuován pod licencí MIT License. Podrobnosti: https://github.com/ThrowTheSwitch/CMock/blob/master/LICENSE.txt
Autoři
- Mr.Nobody — embedbits.com
Příspěvky jsou vítány! Otevřete prosím pull request.