Agent skill

unity-ceedling-test

Embedded unit testing with Unity framework and CMock

Stars 514
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/a5c-ai/babysitter/tree/main/library/specializations/embedded-systems/skills/unity-ceedling-test

SKILL.md

Unity/Ceedling Test Skill

Overview

This skill provides embedded unit testing capabilities using the Unity test framework, CMock mock generation, and Ceedling build system for comprehensive off-target and on-target testing.

Capabilities

Unity Test Framework

  • Test case generation
  • Assertion macro usage
  • Test fixture setup/teardown
  • Test group organization
  • Parameterized tests
  • Custom assertions

CMock Mock Generation

  • Automatic mock generation from headers
  • HAL/driver mocking strategies
  • Callback mocking
  • Argument capture and validation
  • Return value configuration
  • Call count verification

Ceedling Build System

  • Project configuration (project.yml)
  • Test runner generation
  • Coverage integration
  • Compiler configuration
  • Plugin management
  • CI/CD integration

Hardware Abstraction Mocking

  • Register mock strategies
  • DMA mock patterns
  • Interrupt mock handling
  • Timing mock approaches
  • State machine mocking

Test Coverage

  • gcov integration
  • lcov report generation
  • Branch coverage analysis
  • MC/DC coverage (for safety)
  • Coverage threshold enforcement

Off-Target Testing

  • Host compilation setup
  • Platform abstraction
  • Stub implementation
  • Double buffering for DMA
  • Fake timer implementations

Target Processes

  • embedded-unit-testing.js - Unit test implementation
  • device-driver-development.js - Driver testing
  • bsp-development.js - BSP unit testing

Dependencies

  • Unity test framework
  • CMock mock generator
  • Ceedling build system (optional)
  • gcov/lcov for coverage

Usage Context

This skill is invoked when tasks require:

  • Unit test development
  • Mock generation for drivers
  • Test coverage analysis
  • Off-target testing setup
  • TDD for embedded

Project Structure

project/
  src/
    driver.c
    driver.h
  test/
    test_driver.c
    support/
      test_helper.c
  build/
    test/
    artifacts/
  project.yml

Configuration Example (project.yml)

yaml
:project:
  :build_root: build/
  :test_file_prefix: test_
  :use_exceptions: FALSE

:paths:
  :test:
    - test/**
  :source:
    - src/**
  :include:
    - inc/**

:cmock:
  :mock_prefix: mock_
  :when_no_prototypes: :warn
  :enforce_strict_ordering: TRUE
  :plugins:
    - :ignore
    - :callback
    - :return_thru_ptr

:plugins:
  :enabled:
    - gcov
    - xml_tests_report

Test Example

c
#include "unity.h"
#include "driver.h"
#include "mock_hal_spi.h"

void setUp(void) {
    driver_init();
}

void tearDown(void) {
    driver_deinit();
}

void test_driver_sends_correct_command(void) {
    uint8_t expected[] = {0x01, 0x02, 0x03};

    HAL_SPI_Transmit_ExpectWithArrayAndReturn(
        SPI1, expected, 3, 3, 100, HAL_OK);

    TEST_ASSERT_EQUAL(DRIVER_OK, driver_send_command(0x01));
}

Expand your agent's capabilities with these related and highly-rated skills.

a5c-ai/babysitter

gsd-tools

Central utility skill for GSD operations. Provides config parsing, slug generation, timestamps, path operations, and orchestrates calls to other specialized skills. Acts as the unified entry point that the original gsd-tools.cjs provided via its lib/ modules (commands, config, core, init).

514 31
Explore
a5c-ai/babysitter

model-profile-resolution

Resolve model profile (quality/balanced/budget) at orchestration start and map agents to specific models. Enables cost/quality tradeoffs by selecting appropriate AI models for each agent role.

514 31
Explore
a5c-ai/babysitter

verification-suite

Plan structure validation, phase completeness checks, reference integrity verification, and artifact existence confirmation. Provides the structured verification layer ensuring GSD artifacts are well-formed and complete.

514 31
Explore
a5c-ai/babysitter

state-management

STATE.md reading, writing, and field-level updates. Provides cross-session state persistence via .planning/STATE.md with structured fields for current task, completed phases, blockers, decisions, and quick tasks.

514 31
Explore
a5c-ai/babysitter

git-integration

Git commit patterns, formats, and conventions for GSD methodology. Provides atomic commits per task, structured commit messages, planning file commits, branch management, and milestone tag operations.

514 31
Explore
a5c-ai/babysitter

frontmatter-parsing

YAML frontmatter parsing and manipulation for .planning/ documents. Provides read, write, update, query, and validation operations on frontmatter blocks in GSD markdown artifacts.

514 31
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results