On Feb 16, 2009, at 8:03 AM, Jan Lehnardt wrote:


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?

+1 (if I get a vote :)

I agree completely. As I count the files in src/couchdb (32 and growing) I think it's a good time to start this, even if new tests are only added opportunistically as bugs are fixed, etc... When 1.0 comes along and larger new features added these will serve us well. Danke vielmals!



Cheers
Jan
--


Reply via email to