On 16 Feb 2009, at 13:37, Robert Dionne wrote:

Pure unit-test logic would suggest creating a couch_btree_chunker
module. Like how I did with couch_config and couch_config_writer.
But then, pragmatism will call heresy and I'd probably agree.

For sure, "In theory there's no difference between theory and practice, but in practice there is" :)

The question is if we want to "do it right" now or KISS our way out of this?


The only problem I see here is that tests belonging to a single module are run in different places and you'd have to track down where the test

hmm... actually according to the docs if you run eunit:test([couch_btree]) it does both (I haven't tested this yet). In other words it ensures couch_btree:test() is run and also finds and runs tests in couch_btree_tests. So if I read this correctly it solve this issue, non?

You're right, I just tested this, nice.


Oh I see, it wouldn't tell you which ones failed?

No no, it does. All is well :)


I'd suggest we establish this guidelines for writing tests:

- A module's public API should be tested in a separate module as it helps refining the public API, keeps files at a manageable size and changes to either tests or the module don't interfere with each other (plus all the
   good thing Michael McDaniel pointed out earlier).

 - A module's private API is tested using inline-tests.

 - Large* modules should be considered for split-ups keep things more
   manageable.

*Large is defined pragmatically on a case-by-case basis.


What do you think?

Cheers
Jan
--

Reply via email to