automake
[Top][All Lists]
Advanced

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

environment for tests (was: Re: make distcheck creates directory that I


From: Ed Hartnett
Subject: environment for tests (was: Re: make distcheck creates directory that I don't have write permissions for - is this expected?)
Date: Sun, 06 Nov 2005 07:53:58 -0700
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux)

Ralf Wildenhues <address@hidden> writes:

> Hi Ed,
>
> * Ed Hartnett wrote on Sat, Nov 05, 2005 at 07:52:01PM CET:
>> 
>> My current problem is that I have some reference netCDF files, which
>> ship with the distribution. I also have a test program, which produces
>> data files that need to be identical to the reference files shipped
>> with the dist.
>> 
>> But the problem is the reference files are in the source directory,
>> and the test files are in the build directory.
>> 
>> At the moment, I am doing this with a one-line shell script, which
>> does something like this:
>> 
>> cmp nctest_classic.nc ref_nctest_classic.nc
>> 
>> What I need to do, apparently, is somehow construct this shell script
>> from the Makefile, using $(srcdir) somehow.
>
> This would be one possibility.  You could have a shell_script.in with
>   srcdir="@srcdir@"
>   cmp "$srcdir/ref_nctest_classic.nc" nctest_classic.nc
>
> and list shell_script in configure.ac as
>   AC_CONFIG_FILES([shell_script], [chmod a+x shell_script])
>
> But this is probably even overkill.  You could just export a shell
> variable containing srcdir from Makefile to the script -- no need to
> construct that at all, then:  If, for example, you use the Automake test
> feature, as in
>   TESTS = shell_script ...
>   check_SCRIPTS = ...
>   check_PROGRAMS = ...
>
> then you could just add
>   TESTS_ENVIRONMENT = srcdir="$(srcdir)" ...

AH-HA!!!

Yes, this worked beautifully. I never knew about this. Looking at the
automake manual I find:

"   The variable `TESTS_ENVIRONMENT' can be used to set environment
variables for the test run; the environment variable `srcdir' is set in
the rule.  If all your test programs are scripts, you can also set
`TESTS_ENVIRONMENT' to an invocation of the shell (e.g.  `$(SHELL)
-x'); this can be useful for debugging the tests.  "

This seems to imply that I don't even need the line that sets
TESTS_ENVIRONMENT, because srcdir is already going to be defined in
the environment that my test script runs in. And sure enough, it still
works after I take it out.

So I can use $srcdir without setting it in test scripts. Presumably I
can also fetch environmental vars from test programs, or pass them on
the command line as parameters. (I have a fortran test program that is
opening a reference file shipped with the distribution, and I need it
to find srcdir too.)

>
> and use "$srcdir" within the script.  Or, if you have many scripts that
> share some initialization, you could just substitute this initialization
> part and source that from all shell scripts (by `. ./defs', for example).
>
>> Or is there a way to use some make target for this? Any suggestions or
>> web examples would be helpful. I'm going to take another look at the
>> info files and around the web. There must be a better way to run this
>> cmp test without a whole extra shell script!
>
> Yep.  Examples for test suites are contained in (sorry for the shameless
> plugs):
>   Automake test suite:  Automake, Libtool-1.5.x
>   Autotest test suite:  Autoconf, Libtool-CVS
>   DejaGNU  test suite:  GCC
>

Thanks Ralf! I will first see how many problems I can clear away with
the use of environment vars in my test scripts...

Thanks again for all the help! You are really making netCDF-4.0
possible.

Ed
-- 
Ed Hartnett  -- address@hidden





reply via email to

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