Unity Artifact
Portable source distribution of Unity (ThrowTheSwitch/Unity), a lightweight unit test framework for C, designed for embedded targets. This repository is consumed by the Embedbits Platform Artifact Handler to locate, download, verify, and configure Unity in downstream embedded projects — typically together with the CMock artifact (mock generation) and the Ruby artifact (interpreter for the CMock / Unity generator scripts).
This repository is split into three branches/refs by role — the main (master) branch you are reading now holds only this documentation; the handler scripts live on the Core branch, and versioned source packages are published as GitHub Releases anchored to the Bin branch.
Repository contents
main / master
└── README.md ← This document — no other content
Core
├── ArtifactConfig.cmake ← Artifact metadata (name, version constraints, asset naming)
└── CMakeUnityDefaults.cmake ← Unity integration logic (library target / include setup)
Bin (anchor branch — no tracked binary files)
└── (empty commits only; each release tag points here)
Role in the platform
GitHub (ThrowTheSwitch) GitHub (Embedbits)
────────────────────────────────────── ──────────────────────────────────────────
ThrowTheSwitch/Unity Artifact-unity
tag "v2.6.1" (source) ──► main / master → README only (this document)
Core → ArtifactConfig.cmake, CMakeUnityDefaults.cmake
Bin → Anchor branch (empty commits)
Releases → unity-<version>.zip + .hash
tagged Bin/<version>
Unity_Importer.sh clones the upstream repository at each release tag (vX.Y.Z, release candidates are ignored), verifies the checked-out tag, strips .git metadata, adds a plain-text VERSION file, and zips the source tree. Unity is portable C source compiled straight into the test project, so releases carry no platform suffix — they are tagged plainly Bin/<version> (the v prefix is dropped).
Branch structure
| Branch / Ref | Content |
|---|---|
main / master | This README only — no functional content |
Core | CMake handler scripts for consuming the artifact |
Bin | Anchor branch only — no binaries are committed here |
Release tag Bin/<version> | GitHub Release carrying the .zip source package and its .hash checksum file |
Note: On a Git host without a Releases API (Azure DevOps), the same importer commits the
.zip+.hashdirectly to theBinbranch and tags that commitBin/<version>. The CMake handler resolves either form transparently.
Fetching a release
# Core handler scripts
git clone --branch Core --single-branch --depth=1 <repository_url> unity-core
# Source package + checksum for one specific version (GitHub Release asset)
gh release download Bin/2.6.1 --repo Embedbits/Artifact-unity --pattern "unity-2.6.1.*"
Package layout
unity-<version>.zip
└── unity/
├── VERSION ← plain-text version, e.g. "2.6.1"
├── src/ ← unity.c, unity.h, unity_internals.h
├── extras/ ← optional add-ons (fixture, memory, bdd)
├── auto/ ← Ruby helper scripts (test runner generator, ...)
└── ... ← upstream docs, examples, build files
The Ruby scripts in auto/ (e.g. generate_test_runner.rb) require a Ruby interpreter — use the Ruby artifact.
Versioning
Artifact versions correspond directly to official Unity release tags with the v prefix removed:
2.5.2, 2.6.0, 2.6.1, 2.7.0, ...
License
Unity is distributed under the MIT License. For details, see: https://github.com/ThrowTheSwitch/Unity/blob/master/LICENSE.txt
Authors
- Mr.Nobody — embedbits.com
Contributions are welcome! Please open a pull request.