Skip to content

avengineers/hammocking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

154 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hammocking

CI Status Documentation Status Test coverage percentage

uv ruff pre-commit

PyPI Version Supported Python versions License

Automatic mocking tool for C.

Installation

Install from PyPI:

pip install hammocking

Or with uv:

uv add hammocking

Hammocking depends on Jinja2 and libclang. They are installed automatically.

Development

DevPod / Dev Container (recommended)

The fastest way to get a working development environment is DevPod or any devcontainer-compatible tool (VS Code Dev Containers, GitHub Codespaces).

# Using DevPod CLI
devpod up https://github.com/avengineers/hammocking

# Or in VS Code: clone the repo, open it, and select "Reopen in Container"

The container comes with Python 3.13, uv, clang, llvm, cmake, and ninja-build.

Linux / macOS

Prerequisites

  • Python 3.10 or higher (3.13 recommended)
  • Git

Optional, for integration tests:

  • clang / llvm
  • cmake
  • ninja-build

On Ubuntu/Debian:

sudo apt update
sudo apt install python3.13 python3.13-venv python3-pip git

# Optional: tools for integration tests
sudo apt install clang llvm cmake ninja-build

Build

./build.sh              # full build (lint, test, docs)
./build.sh --clean      # clean build
./build.sh --install    # install dependencies only

Windows

Build

.\build.ps1             # full build (lint, test, docs)
.\build.ps1 -clean      # clean build
.\build.ps1 -install    # install dependencies only

Setting up the development environment manually

uv sync
uv run pre-commit install

Running tests

uv run pytest               # all tests
uv run pytest -m unit        # unit tests only
uv run pytest -m integration # integration tests only

If integration tests fail because clang is not installed, skip them:

uv run pytest -m "not integration"

What the build does

  • Pre-commit checks and linting
  • Running all tests
  • Building documentation

Troubleshooting

uv not found

Make sure ~/.local/bin is on your PATH:

export PATH="$HOME/.local/bin:$PATH"

Add this line to your ~/.bashrc or ~/.zshrc to make it permanent.

Lock file errors

uv lock
uv sync

Links