Test program for integration tests.

An application for integration tests that exhibits various failure behaviors.
I'm making the change, but I disagree with them.  After making the suggested change the code is noticeably less clear.  The complication isn't worth the purity here.

Two years ago I also strongly held the same belief that you do about treating command line options as injected configuration information.  I changed my opinion after writing the integration testing framework for large series of analytics pipelines.

I came to the conclusion that the vast majority of configuration options are essentially user-specifiable constants, and should be treated like constants would be.