Writing and Testing CLI Tools
My last few bits of code have all been CLI tools. CLI tools usually consist of imperative code that is hard to abstract and hard to test. Because they tend to perform many side-effects, test cases have to take extra steps to achieve good isolation.