Rusty Wright wrote:

I completely agree.

I'd go one step further with your building it on another machine and say that it has to build on another machine that's a different platform. I.e., if you're building on unix it must also build on Windows, or vice versa. And if you're building it in eclipse with the maven plugin it must also build outside of eclipse from the command line.

An effective way of doing this is to actively make your CI server as different as humanly possible to your development environment. Different OS, different timezone.

The more different you make it, the more likely you are to find latent defects, like hard coded paths, or failures due to sloppy timezone handling.

In your CI environment you want to active give your code every possible reason to fail, because if the code succeeds despite this, your code very probably works bug free.

Developers tend to be resistant to this: "Oh, it's Linux, that's why the test case fails", which is why this may need a bit of gentle (or not so gentle) discipline to enforce.

In the example I am referring to, calculations that were failing "because of a different OS" were actually failing because of bad timezone handling, and people were resistant to fixing it.

Regards,
Graham
--

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to