Elixir: ensure all tests pass before commit

If you want to run automated tests or a formatter before making a git commit in your project there is a helpful Elixir library called elixir-pre-commit. This library is a hook that will run before a commit is finalized. The module works by overwriting your pre-commit file in your .git/hooks directory.

To use the library add it to your deps in mix.exs and update your dependencies with mix deps.get.

def deps do
  [{:pre_commit, "~> 0.3.4", only: :dev}]

And then you will need to add the config to your development config. In Phoenix applications that would be .config/dev.exs. Below is an example configuration, the verbose keyword is optional but helps with debugging:

config :pre_commit,
  commands: ["formatter”, "test"]
  verbose: true

Now when you run git commit within this project your formatter will be run and then your test suite, if either of those fail then the commit will not succeed.

If you enjoyed this post you may also enjoy Helper function for setting default Struct key.