[asdf-devel] ASDF test-op question

Robert Goldman rpgoldman at sift.info
Tue Oct 6 03:18:20 UTC 2009


Daniel Herring wrote:
> On Mon, 5 Oct 2009, Robert Goldman wrote:
>> Gary King wrote:
>>> Hi Robert,
>>>
>>>> I don't believe that this is a general solution, for two reasons:
>>> I agree that it isn't a general solution especially since there is no
>>> interface/API for clients to do anything with an ASDF operation! It
>>> might, however, be a small step in the right direction.
>> An alternative solution would be to provide a :stream or :filename init
>> argument for the test-op operation class and bind a dynamic variable
>> around every perform, making the stream or filename available for
>> writing....
> 
> Why serialize the data?  Could we design a structured API to be used by 
> other tools?
> 
> What if each test logged messages to asdf:*test-stream* and finished by 
> calling
> (asdf:test-result test-description-string result-keyword)
> 
> DejaGnu has a good description of test results; the keywords from good to 
> bad could be :xpass, :xfail, :untested, :unresolved, :unsupported, :pass, 
> and :fail.
> http://www.gnu.org/software/dejagnu/manual/x47.html
> 
> Then asdf:test-op could return (values worst-result results-list).
> 
> Of course ASDF doesn't need to reinvent testing; there are plenty of 
> existing frameworks to choose from.
> http://www.cliki.net/test_framework
> 

What I am after is an ASDF test-op that will adapt as well as possible
to the widest possible set of testing frameworks.  I agree that we
should not attempt to reinvent testing.

That is why I have been suggesting that we provide a test operation that
binds a stream --- because most of the test frameworks I have worked
with provide a test report, rather than returning results.

I don't believe that having the test-op return a result will work, given
the current ASDF execution model.  If we are testing system X that has A
and B dependencies, then what will happen will be something like

.... testing A's components... test-op A....testing B's components ...
test-op B .... test other X components ... test-op X

It's not obvious to me how we take the results from test-op A and
test-op B and roll them up into test-op X.  Nor do I see how, in
general, a test-op done in LIFT for A, FiveAM for B and NST for X, can
be made to communicate with each other.

It's not ideal, but I think a separate stream may be about as good as we
can do.

Best,
r





More information about the asdf-devel mailing list