The recent problems with crashes in the log pane were due to a
complete botch when I created the logCtrl (and bodyCtrl) properties:
the properties both got the name "b" rather than the intended names.

A proper unit test would have caught that mistake.  Indeed, a proper
unit test would have been the development scaffold for creating these
properties, but I created the code a few days ago when I wasn't using
unit tests for *everything*.

Anyway, once I discovered the cause of the bug I wanted to come up
with a proper unit test that would demonstrate that the bug is gone.
It took awhile.  Afaik, there is no obvious test to tell whether a
symbol 'x' is a property.

I discovered a clean enough test after my workout this afternoon.
Here is the unit test for logCtrl, on the trunk at rev 4831::

    # Test that changing c.frame.log.logCtrl changes
c.frame.log.widget.
    log = c.frame.log
    old_w = log.widget
    assert old_w is not None
    try:
        log.logCtrl = None
        assert log.widget is None
    finally:
        log.widget = old_w

This is an indirect test that logCtrl isn't a normal ivar:  changing
it also changes log.widget.  That should be good enough to prove that
logCtrl is a property with the expected effect.

However, there is another test that I would like to create, and it may
become the first real use of the leoInspect module.  The real
intention of the logCtrl property is that there be *no* assignment to
logCtrl anywhere in Leo.  That is, log.logCtrl is basically a macro
that expands to log.widget.  All assignment happen to log.widget, not
log.logCtrl.

This is a perfect prototype for leoInspect inferences.  It is a simple
*textual* property that reflects how I created and understand the
code.  Verifying this property should be easy using leoInspect, and
difficult or impossible using any other tool.

In short, while I am far from happy about the logCtrl blunder, it has
had the happy side effect of suggesting the first unit test based on
leoInspect.  I hope to have the test ready in a day or so.

Edward

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To post to this group, send email to leo-editor@googlegroups.com.
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en.

Reply via email to