[Dev] About Item.checkItem() and tests
Alec Flett
alecf at osafoundation.org
Thu Feb 2 10:10:05 PST 2006
Andi Vajda wrote:
>
> For a long time there has been a method defined on Item called check()
> that will perform a number of repository consistency checks and report
> failures in the log.
>
> That functionality is even available from the Chandler UI's Test menu
> with the 'Check Repository' menu item. It will recursively walk the UI
> repository view, loading *all* items and calling check() on them.
>
> This method has been invaluable to me for ensuring that a real
> Chandler repository is still consistent after some use. No amount of
> unit test writing can replace such a real life test.
>
> I just added another method, called Item.checkItem(), that is meant to
> be overriden by developers to write additional checks to verify that
> the semantics of a given item are still valid within their domain of
> use. When Item.check() succeeds, it calls checkItem() before returning.
>
This is great! So should we be returning False on an error, or throwing
an exception? i.e. should we populate Item.checkItem() with asserts, or
just a bunch of if statements?
Alec
> For a hypothetical example, I'd expect a calendar event item to have
> an 'endDate' that is after its 'startDate'. It'd be pretty simple to
> override checkItem() on that class and verify this constraint.
>
> When overriding Item.checkItem(), please don't forget to call super()
> and combine its return value with yours, ie, if super() returned
> False, return False even if all your checks succeeded. When you find a
> failure, log it, but try to continue running all checks in the method
> unless they depend on each other, then return False. If all checks
> passed, return True.
>
> Unless there is a bug triggered by the checkItem() code itself,
> checkItem() returns False in case of error and True otherwise. This
> should make it convenient to use in unit tests as well...
>
> Andi..
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "Dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/dev
More information about the Dev
mailing list