Contributing to ApprovalTests.cpp

Contributing - pairing and pull requests

The default way to add to most repositories is to fork and then create a pull-request.

This is NOT the default way to contribute to Approval Tests!

If you have something that you would like Approval Tests to have, including a bug you would like removed, we suggest you set up a pairing session (usually Skype or Facetime) with either Llewellyn or Clare or both.

A typical session lasts between 60 to 90 minutes. We do the work directly on master, on our own machines, with screen-sharing, and commit and push the results throughout the session. This results in quicker, higher-quality work. It gives us a better understanding of how people are using Approval Tests and the problems they encounter with it, and these sessions are also quite fun.

We use github’s “co-author” feature, so everyone in the pairing session gets credit for the work. Virtually this entire project has been developed in this way, and is stronger for it.

Example co-author text, for use if not using the GitHub Desktop application:

Co-Authored-By: Llewellyn Falco <>

We use Arlo’s Commit Notation to prefix most commits, to indicate their level of risk.

Definition of Done

Note: Reminder for Clare and Llewellyn

  • ☐ Tests

  • ☐ Documentation

    • ☐ Sample code

    • ☐ Copy+pastable template (if appropriate)

    • ☐ A link on Features

    • ☐ A link on build/

    • ☐ Links on other appropriate places

  • ☐ Check the Dashboard (after pushing)

  • ☐ Retrospective (as an experiment) on what we learned from the work

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Formatting Code

If possible, please configure your editor to use this repository’s .clang-format file.

Instructions for this are available:

There is a script to apply clang-format to the whole project: scripts/

We have a CI job called clang-format that checks for code not correctly formatted: .github/workflows/github_actions_build.yml.

Updating the simulated single-header

After adding new header files to the library, we need to update ApprovalTests/ApprovalTests.hpp.

This is done by running scripts/

cd ApprovalTests.cpp


We welcome improvements to the documentation! The page Maintaining the Docs describes how we manage the documentation files.


Running shell scripts in cygwin

To run .sh in cygwin on Windows, add these lines to ~/.bash_profile, and then re-start cygwin:

set -o igncr