git-check-assertions/README.md

2 KiB

git-check-assertions

🚧 Merely a proof-of-concept right now.

I recently wrote two blogs posts arguing that there might be some value in writing verifiable claims, i.e. assertions, inside of our commit messages:

This is a simple verifier for such assertions.

You include a small bash script inside your commit messages, and git-check-assertions will then check out every commit (from the point that your branch diverged from main), and verify that the script in the commit message runs successfully.

⚠️ Only run this on repositories and branches that you trust, since the bash scripts in the commit messages can do whatever they want.

Building

nix build .?submodules=1

Examples of commit messages

Assert that a commit builds:

```git-check-assertions
dotnet build
```

Assert that a commit builds and that the tests succeed:

```git-check-assertions
dotnet build
dotnet test --no-build
```

Assert that a commit builds, but that the tests do not succeed (assert_fails is a helper function included in git-check-assertions):

```git-check-assertions
dotnet build
assert_fails dotnet test --no-build
```

Assert that a commit builds, and that the tests fail with exactly the error that you expect:

```git-check-assertions
dotnet build
(assert_fails dotnet test --no-build) | grep "Invalid URL"
```

Assert that a commit builds, and that a specific change breaks the tests (as discussed here):

```git-check-assertions
dotnet test
sed -i '/crucial code/d' Main.fs
dotnet build
assert_fails dotnet test --no-build
```