To address your second claim - doing IO in tests does not mean testing IO.
I just got the sense that the author was saying that the your tests have to cover every possible failure mode of IO and that’s just silly. IO should have its own tests. This goes back to your “expectation of a contract”.
I just got the sense that the author was saying that the your tests have to cover every possible failure mode of IO and that’s just silly. IO should have its own tests. This goes back to your “expectation of a contract”.
Ah, I didn’t get that impression myself, but looking at the article again I can see it.