[petsc-dev] Introducing new "test harness" to PETSc

Barry Smith bsmith at mcs.anl.gov
Tue Jan 24 10:57:51 CST 2017


  I don't really understand what a "sub-test" is, just any test in an example that is not first one? Aside from the suffix are "sub-tests" handled any different than the first test? I don't think they should be.


> On Jan 24, 2017, at 10:10 AM, Scott Kruger <kruger at txcorp.com> wrote:
> 
> 	
> 
> On 1/23/17 11:23 PM, Tobin Isaac wrote:
>> How does tab completion work?  I've tried `make -f gmakefile sys<Tab>`
>> in zsh and bash but got nothing.
> 
> Good question.   I think this is handled by the bash-completion project
> which is normally an apt-get install or brew install, but has never
> worked on my mac for some reason.
> 
>> 
>> Thanks to everyone who worked on this, I just have two other
>> questions/requests:
>> 
>>  - What’s the best way to update the test definitions after fiddling
>> with /*TEST*/ blocks?  It would be nice if gmakegentests.py would run
>> automatically when sources are newer than their tests.
> 
> I'll let Jed comment on this.  It's not trivial with the current method
> of specifying targets (gmake's lisp-like language), and even my
> first pedantic implementation (explicitly writing out targets for
> each test), I seem to recall it being brittle because of the global
> nature of the gmakegentest.py requiring the config.
> 
> My development workflow is generally:
> - edit source file
> - run gmakegentest.py
> - inspect shell script in $PETSC_ARCH/tests
> - run shell script by hand and edit as needed
> - test with makefile (either search or global) before commit
> 
> There is also config/testparse.py which can be run on an
> individual file if you just want to test the parsing:
> 
> > $PETSC_DIR/config/testparse.py -v 1 -t ex1.c
> ex1.c
>   runex1
>      filter: egrep "(PETSC ERROR)" | egrep "(main|CreateError|Error Created)" | cut -f1,2,3,4,5,6 -d" "
> 
>> 
>>  - Is there a technical reason suffixes can only be specified at the
>> top level?  It would help with concision if subtest suffixes could
>> append to their parent suffixes.
> 
> Design decision on what should be a test an what should be a subtest.
> If you want your test to go to a different file, then it is now a test.
> Trying to do something more complicated would add
> unnecessary complexity.  If you do want some grouping, then it can
> be done with suffix itself; i.e., suffix does not have to be an
> integer, but can be an arbitrary string.
> 
> But perhaps I don't understand your use case.
> 
> Scott
> 
> 
> 
>> 
>> Cheers,
>>  Toby
>> 
>> *From:* Jed Brown <mailto:jed at jedbrown.org>
>> *Sent:* ‎Tuesday‎, ‎17‎ ‎January‎, ‎2017 ‎20‎:‎55
>> *To:* Matthew Knepley <mailto:knepley at gmail.com>, Barry Smith
>> <mailto:bsmith at mcs.anl.gov>
>> *Cc:* petsc-dev <mailto:petsc-dev at mcs.anl.gov>
>> 
>> Matthew Knepley <knepley at gmail.com> writes:
>>> Gripes:
>>> 
>>>  1) How do I run an individual test run?
>> 
>>  make -f gmakefile sys_tutorials-runex5
>> 
>> (tab completion works) or use a search that matches only that run.
>> 
>>> I use
>>> 
>>>  make -f gmakefile test searchin=plex
>>> 
>>> to run plex tests, and I think
>>> 
>>>  make -f gmakefile test searchin=plex*ex1
>> 
>> Due to make syntax, % is the internal string matcher.
>> 
>>> will work. However, how do I select ex1_2?
>> 
>>  make -f gmakefile test search=plex%ex1_2
>> 
>>>  2) How do I replace the output which exists with the output of the
>>> current test run?
>>> 
>>> This is amazingly useful after changes.
>> 
>> I have this script ~/bin/diffupdate:
>> #!/bin/sh
>> 
>> args=
>> if [ "$1" = "-u" ]; then
>>    args="-u"
>>    shift
>> fi
>> new="$2"
>> ref="$1"
>> 
>> diff $args "$ref" "$new"
>> ret=$?
>> echo "Updating $new --> $ref"
>> mv "$new" "$ref"
>> exit $ret
>> 
>> 
>> Then I run
>> 
>>  make -f gmakefile test search=plex% DIFF=diffupdate
>> 
>> It prints the diff and replaces the reference file (first argument) with
>> the second.
>> 
>>>  3) How do I give extra arguments with the make interface, rather than
>>> test_harness?
>> 
>> That is, run some modification of the test and still do the diff, but
>> don't change the reference output?  I have used PETSC_OPTIONS for that.
>> 
>>  make .... PETSC_OPTIONS=-more_magic
>> 
>>> Once I have all the functionality of my Python stuff,  I will throw it
>> away.
>> 
> 
> -- 
> Tech-X Corporation               kruger at txcorp.com
> 5621 Arapahoe Ave, Suite A       Phone: (720) 974-1841
> Boulder, CO 80303                Fax:   (303) 448-7756




More information about the petsc-dev mailing list