openafs/tests
Simon Wilkinson 0f30c95a03 cmd: Add support for pulling options from files
With this change, we gain the ability to set our command line options
from krb5.conf configuration files. This is only available for tools
which are implemented using the new cmd_OptionAs accessor methods.

Callers should load their configuration file using
    cmd_OpenConfigFile("/path/to/config/file.conf");

(an addition to libauth to return a path to a system wide
 configuration file will be forthcoming)

and then set their command name (for example, "fileserver", "afsd",
"vos" and so on) using
    cmd_SetCommandName("mycommand");

The accessor functions will then populate their return values with
either:
  a) The command line options, if specified
  b) The contents of the tag matching the option name, in the
     [command_subcommand] section of the configuration file, if it
     exists
  c) The contents of the same tag, in the [command] section of the
     configuration file, if it that exists.
  d) The contents of the same tag in the [defaults] section of the
     configuration file.

Callers can also gain access to the entire configuration file by
calling cmd_RawFile, or to just the section corresponding to their
command line by calling cmd_RawSection. Note that when using the file
directly, it is up to callers to preserve consistency by implementing
similar inheritance rules as the above.

Change-Id: Ic501ab296af3638f961486869af79c9ce47b77b8
Reviewed-on: http://gerrit.openafs.org/7135
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
2012-05-11 18:49:07 -07:00
..
auth tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
bozo Introduce TAP tests of man pages for command_subcommand 2011-06-28 12:52:28 -07:00
bucoord Introduce TAP tests of man pages for command_subcommand 2011-06-28 12:52:28 -07:00
cmd cmd: Add support for pulling options from files 2012-05-11 18:49:07 -07:00
common tests: Move token faking code to its own file 2012-04-22 06:18:19 -07:00
kauth Introduce TAP tests of man pages for command_subcommand 2011-06-28 12:52:28 -07:00
opr tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
ptserver Introduce TAP tests of man pages for command_subcommand 2011-06-28 12:52:28 -07:00
rpctestlib rx: Make struct rx_connection private 2011-12-03 20:44:20 -08:00
rx tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
tap tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
tests-lib/perl5 Introduce TAP tests of man pages for command_subcommand 2011-06-28 12:52:28 -07:00
util tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
venus Introduce TAP tests of man pages for command_subcommand 2011-06-28 12:52:28 -07:00
volser tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
.gitignore Import C TAP Harness 1.2 as a testing harness 2010-05-29 21:48:19 -07:00
libwrap TESTS: Add the libwrap script to "make check" to handle library paths 2012-04-16 06:02:53 -07:00
Makefile.in tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
README tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
TESTS tests: Add missing vos test 2012-04-22 06:16:07 -07:00

This directory contains a test harness and the beginnings of what is
intended to become the primary OpenAFS test suite.  The tests in this
directory are run when "make check" is run at the top level of the OpenAFS
tree.

runtests is the test harness, and TESTS is the list of tests that it
will run.  If you add a new test, add it to TESTS as well.  All tests must
be executables (possibly shell scripts or Perl scripts) that end in either
".t" or "-t", but should be listed in TESTS without that suffix.

Tests should be organized into subdirectories, and where it makes sense to
do so, those subdirectories should match the subdirectory names under src
in the AFS source tree.  In other words, tests for src/util/* should go in
a directory named util, tests for the libkopenafs library should go in a
directory named kopenafs, and so forth.  To integrate with the build
system, each subdirectory will need to have its own Makefile.in and be
added to the list of generated Makefiles in configure.in at the top
level.   The Makefile.in in this directory will also need to be modified
to recurse into any new directories.  See util/Makefile.in for an example
of how to write a Makefile.in for a new test directory.

The files comprising the test harness are sourced from the C TAP Harness 
distribution using the src/external mechanism. The upstream site for that
distribution is at:

    http://www.eyrie.org/~eagle/software/c-tap-harness/

but feel free to propose modifications directly through OpenAFS Gerrit.
Russ Allbery will take care of merging modifications upstream.  However,
OpenAFS-specific modifications should not be made to those files.  To add
additional OpenAFS-specific code to the TAP library, add additional *.c
and *.h (or *.sh) files to the tests/tap directory rather than modifying files
in src/external.

More information can be found in the HOWTO contained in
src/external/c-tap-harness/HOWTO