[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DejaGnu unit testing protocol

From: David Malcolm
Subject: Re: DejaGnu unit testing protocol
Date: Wed, 22 Jul 2020 19:06:30 -0400
User-agent: Evolution 3.32.5 (3.32.5-1.fc30)

On Wed, 2020-07-22 at 17:05 -0500, Jacob Bachmeyer wrote:
> I had been planning to look at this later, but fixing PR42399
> brought 
> this front-and-center.  The DejaGnu unit testing protocol is not
> (yet) 
> documented (will be fixed as part of PR42399) and there is a strange 
> quirk in its handler.
> What produces lines with prefixes matching {[0-9][0-9]:..:..:}
> and/or 
> why is host_execute looking for that pattern?  These lines have the 
> effect only of resetting a timeout counter and printing the line if 
> verbose is 3 or higher but are otherwise ignored.
> The DejaGnu unit testing protocol is very simple, and I think I can
> work 
> with this fairly well for the long-term.  DejaGnu spawns a unit test 
> program and reads that program's output.  Arguments for the unit
> test 
> program can be specified in the testsuite.  The unit test program
> can 
> produce any output, but DejaGnu is sensitive to lines beginning with
> a 
> tab character, followed by uppercase letters, followed by a colon.  
> These lines (currently) indicate test results and (in the future) 
> provide additional information to effect proper testing.  (Examples
> of 
> future extensions now planned include support for known failures and 
> framework-assessed expected failures.  Currently, the dejagnu.h
> header 
> provides xfail/xpass functions to allow unit tests to declare
> expected 
> failure, but host_execute does not recognize these results; this
> second 
> bug is now slated to be fixed for 1.6.3.)
> Unit test programs may also produce other output for the benefit of
> a 
> developer directly running them or reading the DejaGnu log, but the 
> sequence {\n\t[][[:upper:]]*:} should be considered reserved for the 
> DejaGnu unit testing support.
> Anyone know why that pattern was included in host_execute or have
> other 
> comments?

In terms of "other comments":

FWIW within gcc, the jit.dg testsuite for libgccjit has a copy of
host_execute ("fixed_host_execute") to workaround issues I've run into:;a=blob;f=gcc/testsuite/jit.dg/jit.exp

It has drifted somewhat from the DejaGnu original; for example it
gained the ability to parse valgrind output and convert leaks into
pass/fail results.

(I also ran into the issue that dejagnu.h's pass/fail C functions
aren't thread-safe, which I hack around in my testsuite, replacing them
in multi-threaded tests with ones guarded by a mutex).

Hope this is constructive

reply via email to

[Prev in Thread] Current Thread [Next in Thread]