{"id":43885639,"url":"https://github.com/avengineers/hammocking","last_synced_at":"2026-04-28T22:02:48.910Z","repository":{"id":58719495,"uuid":"508345054","full_name":"avengineers/hammocking","owner":"avengineers","description":"Automatic mocking tool for C","archived":false,"fork":false,"pushed_at":"2026-04-28T14:37:16.000Z","size":6540,"stargazers_count":9,"open_issues_count":10,"forks_count":7,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-04-28T16:28:28.148Z","etag":null,"topics":["automation","c","clang","googlemock","googletest","mocking","stubbing","unittest"],"latest_commit_sha":null,"homepage":"https://avengineers.github.io/hammocking","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/avengineers.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2022-06-28T14:59:18.000Z","updated_at":"2026-04-10T06:28:01.000Z","dependencies_parsed_at":"2024-04-04T22:24:21.660Z","dependency_job_id":"711f4967-1e46-43ea-ba5e-b53ae5ebe6a5","html_url":"https://github.com/avengineers/hammocking","commit_stats":{"total_commits":66,"total_committers":9,"mean_commits":7.333333333333333,"dds":0.5909090909090908,"last_synced_commit":"a383bde9cb7a2b0eda790464381817c6c5582f85"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/avengineers/hammocking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avengineers%2Fhammocking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avengineers%2Fhammocking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avengineers%2Fhammocking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avengineers%2Fhammocking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avengineers","download_url":"https://codeload.github.com/avengineers/hammocking/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avengineers%2Fhammocking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32400873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","c","clang","googlemock","googletest","mocking","stubbing","unittest"],"created_at":"2026-02-06T16:08:26.783Z","updated_at":"2026-04-28T22:02:48.897Z","avatar_url":"https://github.com/avengineers.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hammocking\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/avengineers/hammocking/actions/workflows/ci.yml?query=branch%3Adevelop\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/avengineers/hammocking/ci.yml?branch=develop\u0026label=CI\u0026logo=github\u0026style=flat-square\" alt=\"CI Status\" \u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://hammocking.readthedocs.io\"\u003e\n    \u003cimg src=\"https://img.shields.io/readthedocs/hammocking.svg?logo=read-the-docs\u0026logoColor=fff\u0026style=flat-square\" alt=\"Documentation Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/avengineers/hammocking\"\u003e\n    \u003cimg src=\"https://img.shields.io/codecov/c/github/avengineers/hammocking.svg?logo=codecov\u0026logoColor=fff\u0026style=flat-square\" alt=\"Test coverage percentage\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://docs.astral.sh/uv/\"\u003e\n    \u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json\" alt=\"uv\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/astral-sh/ruff\"\u003e\n    \u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\" alt=\"ruff\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/pre-commit/pre-commit\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white\u0026style=flat-square\" alt=\"pre-commit\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pypi.org/project/hammocking/\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/v/hammocking.svg?logo=python\u0026logoColor=fff\u0026style=flat-square\" alt=\"PyPI Version\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/pypi/pyversions/hammocking.svg?style=flat-square\u0026logo=python\u0026logoColor=fff\" alt=\"Supported Python versions\"\u003e\n  \u003cimg src=\"https://img.shields.io/pypi/l/hammocking.svg?style=flat-square\" alt=\"License\"\u003e\n\u003c/p\u003e\n\nAutomatic mocking tool for C.\n\n## Installation\n\nInstall from PyPI:\n\n```bash\npip install hammocking\n```\n\nOr with uv:\n\n```bash\nuv add hammocking\n```\n\nHammocking depends on Jinja2 and libclang. They are installed automatically.\n\n## Development\n\n### DevPod / Dev Container (recommended)\n\nThe fastest way to get a working development environment is [DevPod](https://devpod.sh/) or any [devcontainer](https://containers.dev/)-compatible tool (VS Code Dev Containers, GitHub Codespaces).\n\n```bash\n# Using DevPod CLI\ndevpod up https://github.com/avengineers/hammocking\n\n# Or in VS Code: clone the repo, open it, and select \"Reopen in Container\"\n```\n\nThe container comes with Python 3.13, uv, clang, llvm, cmake, and ninja-build.\n\n### Linux / macOS\n\n#### Prerequisites\n\n- Python 3.10 or higher (3.13 recommended)\n- Git\n\nOptional, for integration tests:\n\n- clang / llvm\n- cmake\n- ninja-build\n\nOn Ubuntu/Debian:\n\n```bash\nsudo apt update\nsudo apt install python3.13 python3.13-venv python3-pip git\n\n# Optional: tools for integration tests\nsudo apt install clang llvm cmake ninja-build\n```\n\n#### Build\n\n```bash\n./build.sh              # full build (lint, test, docs)\n./build.sh --clean      # clean build\n./build.sh --install    # install dependencies only\n```\n\n### Windows\n\n#### Build\n\n```powershell\n.\\build.ps1             # full build (lint, test, docs)\n.\\build.ps1 -clean      # clean build\n.\\build.ps1 -install    # install dependencies only\n```\n\n### Setting up the development environment manually\n\n```bash\nuv sync\nuv run pre-commit install\n```\n\n### Running tests\n\n```bash\nuv run pytest               # all tests\nuv run pytest -m unit        # unit tests only\nuv run pytest -m integration # integration tests only\n```\n\nIf integration tests fail because clang is not installed, skip them:\n\n```bash\nuv run pytest -m \"not integration\"\n```\n\n### What the build does\n\n- Pre-commit checks and linting\n- Running all tests\n- Building documentation\n\n## Troubleshooting\n\n### uv not found\n\nMake sure `~/.local/bin` is on your PATH:\n\n```bash\nexport PATH=\"$HOME/.local/bin:$PATH\"\n```\n\nAdd this line to your `~/.bashrc` or `~/.zshrc` to make it permanent.\n\n### Lock file errors\n\n```bash\nuv lock\nuv sync\n```\n\n## Links\n\n- Documentation: https://hammocking.readthedocs.io\n- PyPI: https://pypi.org/project/hammocking/\n- Issues: https://github.com/avengineers/hammocking/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favengineers%2Fhammocking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favengineers%2Fhammocking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favengineers%2Fhammocking/lists"}