|
|
Subject: Re: non-recursive make and tests - msg#00115
List: sysutils.automake.general
On Mon, 30 Aug 2004, Bob Friesenhahn wrote:
The $(srcdir) value passed is often essentially useless since it may just be
'.'. It is difficult for the Makefile to produce better values except for
perhaps offsets from @abs_top_srcdir@ and @abs_top_builddir@ substitutions.
It may also be possible to play games by passing back-ticked shell script
fragments rather than normal values in the TESTS_ENVIRONMENT specification.
Regardless, the tests themselves should not have to know their position in
the source or build tree.
If I add this sort of junk to the top of my test scripts then they
seem to pass the tests:
set -e
SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR && pwd`
TOPSRCDIR=`cd $srcdir && pwd`
cd utilities || exit 1
MODEL_MIFF="${TOPSRCDIR}/Magick++/demo/model.miff"
.
.
.
Without the pwd's distcheck can't pass since srcdir may be passed as a
useless '.'.
Unfortunately, with hundreds of such scripts, altering the test
environment to convert to a non-recursive make is quite a penalty.
Many scripts could be one-liners if Automake can produce a
per-directory test environment.
Bob
======================================
Bob Friesenhahn
bfriesen@xxxxxxxxxxxxxxxxxxx
http://www.simplesystems.org/users/bfriesen
Was this page helpful?
Thread at a glance:
Previous Message by Date:
click to view message preview
Re: non-recursive make and tests
On Tue, 31 Aug 2004, Robert Collins wrote:
On Mon, 2004-08-30 at 20:30 -0500, Bob Friesenhahn wrote:
On Mon, 30 Aug 2004, Bob Friesenhahn wrote:
It would be quite helpful if Automake offered a mode in which it
automatically changed the working directory to the directory where the test
program/script resides and set $srcdir to the relative position in the source
tree to support VPATH builds. This would emulate the operation of recursive
builds. Either a global Automake option could be used to enable this
(subdir-tests), or a "RTESTS" (relative tests) mode would be provided.
It seems that this topic has not caught anyone's interest since there
have been no follow-up posts today. Surely someone else has converted
their recursive project to a non-recursive project and noticed that it
is very difficult to get test suites working again?
I found it trivial. Mind you, all my tests are - by design - self
contained.
Most of the tests for the package I maintain require that the test
read an existing input file, and write an output file. Sometimes the
written result needs to be compared with another existing file.
For scripts I can find the source directory (where input files are
stored) by doing something like
SRCDIR=`dirname $0`/
in the script. Unfortunately, this cludge is apparently not working
if the build directory is under the source tree, so distcheck is
failing. Probably another layer of cludges is required. :-)
Bob
======================================
Bob Friesenhahn
bfriesen@xxxxxxxxxxxxxxxxxxx
http://www.simplesystems.org/users/bfriesen
Next Message by Date:
click to view message preview
Re: non-recursive make and tests
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Bob,
On 31 Aug 2004, at 06:08, Bob Friesenhahn wrote:
On Mon, 30 Aug 2004, Bob Friesenhahn wrote:
The $(srcdir) value passed is often essentially useless since it may
just be '.'. It is difficult for the Makefile to produce better
values except for perhaps offsets from @abs_top_srcdir@ and
@abs_top_builddir@ substitutions. It may also be possible to play
games by passing back-ticked shell script fragments rather than
normal values in the TESTS_ENVIRONMENT specification.
Regardless, the tests themselves should not have to know their
position in the source or build tree.
If I add this sort of junk to the top of my test scripts then they
seem to pass the tests:
set -e
SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR && pwd`
TOPSRCDIR=`cd $srcdir && pwd`
cd utilities || exit 1
MODEL_MIFF="${TOPSRCDIR}/Magick++/demo/model.miff"
.
.
.
Without the pwd's distcheck can't pass since srcdir may be passed as a
useless '.'.
Unfortunately, with hundreds of such scripts, altering the test
environment to convert to a non-recursive make is quite a penalty.
Many scripts could be one-liners if Automake can produce a
per-directory test environment.
I made a stab at converting libtool to non-recursive make last year (I
think) and had much the same problem. I think the general solution is
to move to an Autotest based testsuite, where the input files are
generated by the test rather than searched for in the source tree.
Maybe you can emulate that behaviour by making your test input into
here documents in the test scripts, without a whole scale move to
Autotest?
Cheers,
Gary.
- --
Gary V. Vaughan ())_. gary@{lilith.warpmail.net,gnu.org}
Research Scientist ( '/ http://tkd.kicks-ass.net
GNU Hacker / )= http://www.gnu.org/software/libtool
Technical Author `(_~)_ http://sources.redhat.com/autobook
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Darwin)
iD8DBQFBNFsBFRMICSmD1gYRAvmXAJ9b+/z3QyLJlvF/yqV6j67yHoiZEwCgjO3/
/4KCRgLIGY6u8TYeyDL5nY4=
=cRSu
-----END PGP SIGNATURE-----
Previous Message by Thread:
click to view message preview
Re: non-recursive make and tests
On Tue, 31 Aug 2004, Robert Collins wrote:
On Mon, 2004-08-30 at 20:30 -0500, Bob Friesenhahn wrote:
On Mon, 30 Aug 2004, Bob Friesenhahn wrote:
It would be quite helpful if Automake offered a mode in which it
automatically changed the working directory to the directory where the test
program/script resides and set $srcdir to the relative position in the source
tree to support VPATH builds. This would emulate the operation of recursive
builds. Either a global Automake option could be used to enable this
(subdir-tests), or a "RTESTS" (relative tests) mode would be provided.
It seems that this topic has not caught anyone's interest since there
have been no follow-up posts today. Surely someone else has converted
their recursive project to a non-recursive project and noticed that it
is very difficult to get test suites working again?
I found it trivial. Mind you, all my tests are - by design - self
contained.
Most of the tests for the package I maintain require that the test
read an existing input file, and write an output file. Sometimes the
written result needs to be compared with another existing file.
For scripts I can find the source directory (where input files are
stored) by doing something like
SRCDIR=`dirname $0`/
in the script. Unfortunately, this cludge is apparently not working
if the build directory is under the source tree, so distcheck is
failing. Probably another layer of cludges is required. :-)
Bob
======================================
Bob Friesenhahn
bfriesen@xxxxxxxxxxxxxxxxxxx
http://www.simplesystems.org/users/bfriesen
Next Message by Thread:
click to view message preview
Re: non-recursive make and tests
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Bob,
On 31 Aug 2004, at 06:08, Bob Friesenhahn wrote:
On Mon, 30 Aug 2004, Bob Friesenhahn wrote:
The $(srcdir) value passed is often essentially useless since it may
just be '.'. It is difficult for the Makefile to produce better
values except for perhaps offsets from @abs_top_srcdir@ and
@abs_top_builddir@ substitutions. It may also be possible to play
games by passing back-ticked shell script fragments rather than
normal values in the TESTS_ENVIRONMENT specification.
Regardless, the tests themselves should not have to know their
position in the source or build tree.
If I add this sort of junk to the top of my test scripts then they
seem to pass the tests:
set -e
SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR && pwd`
TOPSRCDIR=`cd $srcdir && pwd`
cd utilities || exit 1
MODEL_MIFF="${TOPSRCDIR}/Magick++/demo/model.miff"
.
.
.
Without the pwd's distcheck can't pass since srcdir may be passed as a
useless '.'.
Unfortunately, with hundreds of such scripts, altering the test
environment to convert to a non-recursive make is quite a penalty.
Many scripts could be one-liners if Automake can produce a
per-directory test environment.
I made a stab at converting libtool to non-recursive make last year (I
think) and had much the same problem. I think the general solution is
to move to an Autotest based testsuite, where the input files are
generated by the test rather than searched for in the source tree.
Maybe you can emulate that behaviour by making your test input into
here documents in the test scripts, without a whole scale move to
Autotest?
Cheers,
Gary.
- --
Gary V. Vaughan ())_. gary@{lilith.warpmail.net,gnu.org}
Research Scientist ( '/ http://tkd.kicks-ass.net
GNU Hacker / )= http://www.gnu.org/software/libtool
Technical Author `(_~)_ http://sources.redhat.com/autobook
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Darwin)
iD8DBQFBNFsBFRMICSmD1gYRAvmXAJ9b+/z3QyLJlvF/yqV6j67yHoiZEwCgjO3/
/4KCRgLIGY6u8TYeyDL5nY4=
=cRSu
-----END PGP SIGNATURE-----
|
|