[Top][All Lists]

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

Re: Adding "-C <dir>" option to runtest(1)

From: Jacob Bachmeyer
Subject: Re: Adding "-C <dir>" option to runtest(1)
Date: Tue, 13 Nov 2018 22:18:35 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20090807 MultiZilla/ SeaMonkey/1.1.17 Mnenhy/

Ben Elliston wrote:
On Mon, Nov 12, 2018 at 06:17:13PM -0600, Jacob Bachmeyer wrote:
I have a few options:

(1)  Use a different long option name, perhaps "--base-directory".
(2)  Add a shell script shim for the testsuite to use that changes directory
and invokes "runtest".
(3)  Allow overriding the configfile name (default "site.exp") via
command-line option.
I vote for (3), even if it is only ever used by the testsuite.

On further examination, runtest.exp uses $configfile to load up to three different files: $base_dir/$configfile $objdir/$configfile $libdir/$configfile.

This suggests to me a useful distinction between "local" config files and "global" config files ($libdir/$configfile $DEJAGNU), and so leads to both --local-init and --global-init options, with --local-init influencing the search under $base_dir and $objdir and --global-init influencing the search under $libdir. These options can stand in for (2), since the parameter could include "/" and the loaded file can use Tcl's "cd" command, since init files are sourced before logs are opened. The use of the --local-init option is obvious, and --global-init is a simple extension from there with relevance for more complex testing labs.

There should be some way to inhibit loading local or global init files entirely; I suggest that setting --{local,global}-init to the empty string should do so. Per GNU conventions, this suggests that --no-local-init and --no-global-init should be aliases for --local-init='' and --global-init='' respectively.

The "configfile" variable is defined with a comment that it is local to runtext.exp, so removing it should not require a deprecation period.

The distinction is that "local" init files are specific to a testsuite, while "global" init files are specific to a site.

The config search order would become:
   (local)     $base_dir/$local_initfile -> $objdir/$local_initfile ->
   (global)    installed($global_initfile) -> $DEJAGNU -> $HOME/.dejagnurc

As a further step, should specifying an absolute path (matches {^/}) for --local-init or --global-init drop the default prefix? In this mode, the two local config files would be collapsed to the given local_initfile and the given global_initfile would be used as-is without prepending $libdir.

The DejaGnu testsuite would write $objdir/testsuite/runtest.all/site.exp and select it using "--local-init testsuite/runtest.all/site.exp"; that site.exp would in turn execute { cd ${objdir}/testsuite/runtest.all } or similar.

This is starting to look more useful than my original proposal.

-- Jacob

reply via email to

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