One of my favorite tools I use almost daily is entr(1)
, an inotify(7)
based task runner. When combined with find
or your favorite "rewrite it in Rust" implementation, it becomes a powerful tool for tightening the feedback loop during development. I throw it in a neovim terminal buffer off to the side and hack away.
Python Testing
fd -g '*.py' | entr -c pytest tests/
Python Typechecking
fd -g '*.py' | entr -c mypy /_
Go Testing
fd -g '*.py' | entr -c go test ./...
Rust Testing
fd -g '*.rs' | entr -c cargo test
Usually only a problem for Python, but if executing all tests in PWD are too slow, I replace /_
/folder/nothing with a specific file. It's easy enough to ctrl-c the entr process and modify the end.
I could probably combine it with parallel
for better performance in some situations if the test runner doesn't already offer it, but I don't think it's really necessary.