aboutsummaryrefslogtreecommitdiff
path: root/contrib/bluegnu2.0.3/doc/dejagnu.info-1
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bluegnu2.0.3/doc/dejagnu.info-1')
-rw-r--r--contrib/bluegnu2.0.3/doc/dejagnu.info-11163
1 files changed, 0 insertions, 1163 deletions
diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.info-1 b/contrib/bluegnu2.0.3/doc/dejagnu.info-1
deleted file mode 100644
index c11c3b4..0000000
--- a/contrib/bluegnu2.0.3/doc/dejagnu.info-1
+++ /dev/null
@@ -1,1163 +0,0 @@
-This is Info file dejagnu.info, produced by Makeinfo version 1.68 from
-the input file ./dejagnu.texi.
-
-START-INFO-DIR-ENTRY
-* DejaGnu: (dejagnu). The GNU testing framework.
-END-INFO-DIR-ENTRY
-
- Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided also
-that the entire resulting derived work is distributed under the terms
-of a permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions.
-
-
-File: dejagnu.info, Node: Top, Next: Overview, Up: (dir)
-
-DejaGnu
-*******
-
- DejaGnu is a framework for running test suites on software tools.
-
- This file describes version 1.3 of DejaGnu.
-
-* Menu:
-
-* Overview:: What is DejaGnu?
-* What is New:: What is new in this release.
-* Invoking runtest:: Using `runtest', the main test driver
-* Customizing:: Setting `runtest' defaults
-* Internals:: The DejaGnu implementation
-* Tests:: How to write a test case
-* Extending:: New tools, new targets, and new hosts
-* Installation:: Configuring and Installing DejaGnu
-* Index:: Index
-
-
-File: dejagnu.info, Node: Overview, Next: What is New, Prev: Top, Up: Top
-
-What is DejaGnu?
-****************
-
- DejaGnu is a framework for testing other programs. Its purpose is to
-provide a single front end for all tests. Beyond this, DejaGnu offers
-several advantages for testing:
-
- 1. The flexibility and consistency of the DejaGnu framework make it
- easy to write tests for any program.
-
- 2. DejaGnu provides a layer of abstraction which allows you to write
- tests that are portable to any host or target where a program must
- be tested. For instance, a test for GDB can run (from any Unix
- based host) on any target architecture that DejaGnu supports.
- Currently DejaGnu runs tests on several single board computers,
- whose operating software ranges from just a boot monitor to a
- full-fledged, Unix-like realtime OS.
-
- 3. All tests have the same output format. This makes it easy to
- integrate testing into other software development processes.
- DejaGnu's output is designed to be parsed by other filtering
- script, and it is also human readable.
-
- DejaGnu is written in `expect', which in turn uses "Tcl"--Tool
-command language.
-
- Running tests requires two things: the testing framework, and the
-test suites themselves. Tests are usually written in `expect' using
-Tcl, but you can also use a Tcl script to run a test suite that is not
-based on `expect'. (`expect' script filenames conventionally use
-`.exp' as a suffix; for example, the main implementation of the DejaGnu
-test driver is in the file `runtest.exp'.)
-
-* Menu:
-
-* Running Tests:: A first look at running DejaGnu tests
-* Sample Test:: What does a DejaGnu test case look like?
-* Design Goals:: Goals behind DejaGnu
-* Posix:: DejaGnu conforms to POSIX 1003.3
-* Future Directions:: Where is DejaGnu going?
-* Tcl and Expect:: Reading more about Tcl and Expect
-
-
-File: dejagnu.info, Node: What is New, Next: Invoking runtest, Prev: Overview, Up: Top
-
-What is new in this release ?
-*****************************
-
- This release has a number of substantial changes over version 1.2.
-The most visible change is that the version of expect and Tcl included
-in the release are up-to-date with the current stable net releases.
-Other changes are:
-
- 1. The config sub-system in DejaGnu has been completely redesigned.
- It now supports testing on remote hosts as well as remote targets.
-
- 2. More builtin support for building target binaries with the correct
- linker flags. Currently this only works with GCC, preferably with a
- target support by `libgloss'.
-
- 3. Lots of little bug fixes from a year of heavy use here at Cygnus
- Support.
-
- 4. DejaGnu now uses `autoconf' for configuration.
-
- 5. New test cases for DejaGnu have been added for the new features,
- plus the "-tool" option bug in the 1.2 testsuite has been fixed.
-
- 6. The `--tool' option is now optional.
-
- 7. `runtest' when searching for test drivers ignores all directories
- named SCCS, RCS, and CVS.
-
- 8. There is now a generic keyword based test harness that uses
- comments in source code to control how each test case gets built
- and run.
-
- 9. There is now some support for running a testsuite with multiple
- passes.
-
-
-
-File: dejagnu.info, Node: Running Tests, Next: Sample Test, Up: Overview
-
-Running existing tests
-======================
-
- To run tests from an existing collection, first use `configure' as
-usual to set up the source directory containing the tests. Then try
-running
-
- make check
-
- If the `check' target exists, it usually saves you some trouble--for
-instance, it can set up any auxiliary programs or other files needed by
-the tests.
-
- Once you have run `make check' to build any auxiliary files, you
-might want to call the test driver `runtest' directly to repeat the
-tests. You may also have to call `runtest' directly for test
-collections with no `check' target in the `Makefile'.
-
- Typically, you must use two command-line options: `--tool', to
-specify which set of tests to run(1), and `--srcdir', to specify where
-to find test directories.
-
- For example, if the directory `gdb/testsuite' contains a collection
-of DejaGnu tests for GDB, you can run them like this:
-
- eg$ cd gdb/testsuite
- eg$ runtest --tool gdb
-*Test output follows, ending with:*
-
- === gdb Summary ===
-
- # of expected passes 508
- # of expected failures 103
- /usr/latest/bin/gdb version 4.14.4 -nx
-
- You can use the option `--srcdir' to point to some other directory
-containing a collection of tests:
-
- eg$ runtest --tool gdb --srcdir /devo/gdb/testsuite
-
- These examples assume a "native" configuration, where the same
-computer runs both `runtest' and the tests themselves. When you have a
-"cross" configuration, the tests run on a different computer,
-controlled by the host running `runtest'. In this situation, you need
-the option `--name' to specify the network address for the other
-computer:
-
- eg$ runtest --tool gdb --name vx9.munist.com
-
- If you always use the same option values, you can record them in a
-file called `site.exp', rather than typing them each time. *Note
-Setting defaults for `runtest' options: Config Values.
-
- By default, `runtest' prints only the names of the tests it runs,
-output from any tests that have unexpected results, and a summary
-showing how many tests passed and how many failed. To display output
-from all tests (whether or not they behave as expected), use the
-`--all' option. For more verbose output about processes being run,
-communication, and so on, use `--verbose'. To see even more output, use
-multiple `--verbose' options. *Note Using `runtest': Invoking runtest,
-for a more detailed explanation of each `runtest' option.
-
- Test output goes into two files in your current directory: summary
-output in `TOOL.sum', and detailed output in `TOOL.log'. (TOOL refers
-to the collection of tests; for example, after a run with `--tool gdb',
-look for output files `gdb.sum' and `gdb.log'.) *Note The files
-DejaGnu writes: Output Files.
-
- ---------- Footnotes ----------
-
- (1) `--tool' selects a particular suite of tests, *not* the name of
-the executable program to run. *Note Configuration dependent values:
-Config Values, for information on the variables that you can use to
-specify the names of programs to run.
-
-
-File: dejagnu.info, Node: Sample Test, Next: Design Goals, Prev: Running Tests, Up: Overview
-
-What does a DejaGnu test look like?
-===================================
-
- Each DejaGnu test is an `expect' script; the tests vary widely in
-complexity, depending on the nature of the tool and the feature tested.
-
- Here is a very simple GDB test--one of the simplest tests shipped
-with DejaGnu (extracted from `gdb.t00/echo.exp'):(1)
-
- # send a string to the GDB stdin:
- send "echo Hello world!\n"
-
- # inspect the GDB stdout for the correct reply,
- # and determine whether the test passes or fails:
- expect {
- -re "Hello world.*$prompt $" { pass "Echo test" }
- -re "$prompt $" { fail "Echo test" }
- timeout { fail "(timeout) Echo test" }
- }
-
- Though brief, this example is a complete test. It illustrates some
-of the main features of DejaGnu test scripts:
-
- * The test case does not start the tested program (GDB in this case);
- all test scripts for interactive tools can assume the
- corresponding tool is running.
-
- * Comments start with `#'.
-
- * The main commands you use to control a tested program are `send'
- (to give it commands) and `expect' (to analyze its responses).
-
- * The `expect' command uses a list of pairs; a pattern (regular
- expression if `-re' specified), followed by an action to run if the
- pattern matches output from the program. Only the action for the
- *first* matching pattern will execute.
-
- * Test cases use the commands `pass' and `fail' to record the test
- outcome.
-
- ---------- Footnotes ----------
-
- (1) More recent GDB tests use the `gdb_test' procedure. An
-equivalent test using that procedure is ` gdb_test "echo Hello world!"
-"Hello world!" '
-
-
-File: dejagnu.info, Node: Design Goals, Next: Posix, Prev: Sample Test, Up: Overview
-
-Design goals
-============
-
- DejaGnu grew out of the internal needs of Cygnus Support. Cygnus
-maintains and enhances a variety of free programs in many different
-environments, and we needed a testing tool that:
-
- * is useful to developers while fixing bugs;
-
- * automates running many tests during a software release process;
-
- * is portable among a variety of host computers;
-
- * supports cross-development testing;
-
- * permits testing interactive programs, like GDB; and
-
- * permits testing batch oriented programs, like GCC.
-
- Some of the requirements proved challenging. For example,
-interactive programs do not lend themselves very well to automated
-testing. But all the requirements are important: for instance, it is
-imperative to make sure that GDB works as well when cross-debugging as
-it does in a native configuration.
-
- Probably the greatest challenge was testing in a cross-development
-environment (which can be a real nightmare). Most cross-development
-environments are customized by each developer. Even when buying
-packaged boards from vendors there are many differences. The
-communication interfaces vary from a serial line to ethernet. DejaGnu
-was designed with a modular communication setup, so that each kind of
-communication can be added as required, and supported thereafter. Once
-a communication procedure is coded, any test can use it. Currently
-DejaGnu can use `rsh', `rlogin', `telnet', `tip', `kermit', and
-`mondfe' for remote communications.
-
- Julia Menapace first coined the term "Deja Gnu" to describe an
-earlier testing framework at Cygnus Support. When we replaced it with
-the Expect-based framework, it was like DejaGnu all over again...
-
-
-File: dejagnu.info, Node: Posix, Next: Future Directions, Prev: Design Goals, Up: Overview
-
-A POSIX conforming test framework
-=================================
-
- DejaGnu conforms to the POSIX standard for test frameworks.
-
- POSIX standard 1003.3 defines what a testing framework needs to
-provide, in order to permit the creation of POSIX conformance test
-suites. This standard is primarily oriented to running POSIX
-conformance tests, but its requirements also support testing of features
-not related to POSIX conformance. POSIX 1003.3 does not specify a
-particular testing framework, but at this time there is only one other
-POSIX conforming test framework: TET.(1)
-
- The POSIX documentation refers to "assertions". An assertion is a
-description of behavior. For example, if a standard says "The sun
-shall shine", a corresponding assertion might be "The sun is shining."
-A test based on this assertion would pass or fail depending on whether
-it is daytime or nighttime. It is important to note that the standard
-being tested is never 1003.3; the standard being tested is some other
-standard, for which the assertions were written.
-
- As there is no test suite to test *testing frameworks* for POSIX
-1003.3 conformance, verifying conformance to this standard is done by
-repeatedly reading the standard and experimenting. One of the main
-things 1003.3 does specify is the set of allowed output messages, and
-their definitions. Four messages are supported for a required feature
-of POSIX conforming systems, and a fifth for a conditional feature.
-DejaGnu supports the use of all five output messages; in this sense a
-test suite that uses exactly these messages can be considered POSIX
-conforming. These definitions specify the output of a test case:
-
-`PASS'
- A test has succeeded. That is, it demonstrated that the assertion
- is true.
-
-`XFAIL'
- POSIX 1003.3 does not incorporate the notion of expected failures,
- so `PASS', instead of `XPASS', must also be returned for test
- cases which were expected to fail and did not. This means that
- `PASS' is in some sense more ambiguous than if `XPASS' is also
- used. For information on `XPASS' and `XFAIL', see *Note Using
- `runtest': Invoking runtest.
-
-`FAIL'
- A test *has* produced the bug it was intended to capture. That is,
- it has demonstrated that the assertion is false. The `FAIL'
- message is based on the test case only. Other messages are used to
- indicate a failure of the framework.
-
- As with `PASS', POSIX tests must return `FAIL' rather than `XFAIL'
- even if a failure was expected.
-
-`UNRESOLVED'
- A test produced indeterminate results. Usually, this means the
- test executed in an unexpected fashion; this outcome requires that
- a human being go over results, to determine if the test should
- have passed or failed. This message is also used for any test
- that requires human intervention because it is beyond the
- abilities of the testing framework. Any unresolved test should
- resolved to `PASS' or `FAIL' before a test run can be considered
- finished.
-
- Note that for POSIX, each assertion must produce a test result
- code. If the test isn't actually run, it must produce `UNRESOLVED'
- rather than just leaving that test out of the output. This means
- that you have to be careful when writing tests, to not carelessly
- use tcl statements like `return'--if you alter the flow of control
- of the tcl code you must insure that every test still produces
- some result code.
-
- Here are some of the ways a test may wind up `UNRESOLVED':
-
- * A test's execution is interrupted.
-
- * A test does not produce a clear result. This is usually
- because there was an `ERROR' from DejaGnu while processing
- the test, or because there were three or more `WARNING'
- messages. Any `WARNING' or `ERROR' messages can invalidate
- the output of the test. This usually requires a human being
- to examine the output to determine what really happened--and
- to improve the test case.
-
- * A test depends on a previous test, which fails.
-
- * The test was set up incorrectly.
-
-`UNTESTED'
- A test was not run. This is a placeholder, used when there is no
- real test case yet.
-
-The only remaining output message left is intended to test features that
-are specified by the applicable POSIX standard as conditional:
-
-`UNSUPPORTED'
- There is no support for the tested case. This may mean that a
- conditional feature of an operating system, or of a compiler, is
- not implemented. DejaGnu also uses this message when a testing
- environment (often a "bare board" target) lacks basic support for
- compiling or running the test case. For example, a test for the
- system subroutine `gethostname' would never work on a target board
- running only a boot monitor.
-
- DejaGnu uses the same output procedures to produce these messages for
-all test suites, and these procedures are already known to conform to
-POSIX 1003.3. For a DejaGnu test suite to conform to POSIX 1003.3, you
-must avoid the `setup_xfail' procedure as described in the `PASS'
-section above, and you must be careful to return `UNRESOLVED' where
-appropriate, as described in the `UNRESOLVED' section above.
-
- ---------- Footnotes ----------
-
- (1) TET was created by Unisoft for a consortium comprised of X/Open,
-Unix International, and the Open Software Foundation.
-
-
-File: dejagnu.info, Node: Future Directions, Next: Tcl and Expect, Prev: Posix, Up: Overview
-
-Future directions
-=================
-
- In the near future, there are two parallel directions for DejaGnu
-development. The first is to add support for more hosts and targets.
-
- The second would permit testing programs with a more complex
-interface, whether text based or GUI based. Two components already
-exist: a Tcl based X window toolkit, and a terminal package for
-`expect'. Both of these could be merged into DejaGnu in a way that
-permits testing programs that run in each environment.
-
- Meanwhile, we hope DejaGnu enables the creation of test suites for
-conformance to ANSI C and C++, to POSIX, and to other standards. We
-encourage you to make any test suites you create freely available,
-under the same terms as DejaGnu itself.
-
-
-File: dejagnu.info, Node: Tcl and Expect, Prev: Future Directions, Up: Overview
-
-Tcl and Expect
-==============
-
- Tcl was introduced in a paper by John K. Ousterhout at the 1990
-Winter Usenix conference, `Tcl: An Embeddable Command Language'. That
-paper is included in PostScript form in the `doc' subdirectory of the
-Tcl distribution. The version of Tcl included in DejaGnu at this time is
-Tcl 7.4p3.
-
- Don Libes introduced `expect' in his paper `expect: Curing Those
-Uncontrollable Fits of Interaction' at the 1990 Summer Usenix
-conference. The paper is included in PostScript form in the `expect'
-distribution (as are several other papers about `expect'). The version
-of expect included in DejaGnu at this time is expect 5.18.0.
-
-
-File: dejagnu.info, Node: Invoking runtest, Next: Customizing, Prev: What is New, Up: Top
-
-Using `runtest'
-***************
-
- `runtest' is the executable test driver for DejaGnu. You can
-specify two kinds of things on the `runtest' command line: command line
-options, and Tcl variables for the test scripts. The options are
-listed alphabetically below.
-
- `runtest' returns an exit code of `1' if any test has an unexpected
-result; otherwise (if all tests pass or fail as expected) it returns
-`0' as the exit code.
-
- `runtest' flags the outcome of each test as one of these cases.
-(*Note A POSIX conforming test framework: Posix, for a discussion of
-how POSIX specifies the meanings of these cases.)
-
-`PASS'
- The most desirable outcome: the test succeeded, and was expected to
- succeed.
-
-`XPASS'
- A pleasant kind of failure: a test was expected to fail, but
- succeeded. This may indicate progress; inspect the test case to
- determine whether you should amend it to stop expecting failure.
-
-`FAIL'
- A test failed, although it was expected to succeed. This may
- indicate regress; inspect the test case and the failing software
- to locate the bug.
-
-`XFAIL'
- A test failed, but it was expected to fail. This result indicates
- no change in a known bug. If a test fails because the operating
- system where the test runs lacks some facility required by the
- test, the outcome is `UNSUPPORTED' instead.
-
-`UNRESOLVED'
- Output from a test requires manual inspection; the test suite
- could not automatically determine the outcome. For example, your
- tests can report this outcome is when a test does not complete as
- expected.
-
-`UNTESTED'
- A test case is not yet complete, and in particular cannot yet
- produce a `PASS' or `FAIL'. You can also use this outcome in dummy
- "tests" that note explicitly the absence of a real test case for a
- particular property.
-
-`UNSUPPORTED'
- A test depends on a conditionally available feature that does not
- exist (in the configured testing environment). For example, you
- can use this outcome to report on a test case that does not work
- on a particular target because its operating system support does
- not include a required subroutine.
-
- `runtest' may also display the following messages:
-
-`ERROR'
- Indicates a major problem (detected by the test case itself) in
- running the test. This is usually an unrecoverable error, such as
- a missing file or loss of communication to the target. (POSIX
- test suites should not emit this message; use `UNSUPPORTED',
- `UNTESTED', or `UNRESOLVED' instead, as appropriate.)
-
-`WARNING'
- Indicates a possible problem in running the test. Usually warnings
- correspond to recoverable errors, or display an important message
- about the following tests.
-
-`NOTE'
- An informational message about the test case.
-
- This is the full set of command line options that `runtest'
-recognizes. Arguments may be abbreviated to the shortest unique string.
-
- runtest --tool TOOL [ TESTSUITE.exp ... ]
- [ TESTSUITE.exp="testfile1 ..." ]
- [ TCLVAR=VALUE... ]
- [ --all ] [ --baud BAUD-RATE ] [ --connect TYPE ]
- [ --debug ] [ --help ] [ --host STRING ]
- [ --mail "NAME ..." ] [ --name STRING ]
- [ --name NAME ] [ --outdir PATH ]
- [ --objdir PATH ] [ --reboot ]
- [ --srcdir PATH ] [ --strace N ]
- [ --target STRING --build STRING ]
- [ -v | --verbose ] [ -V | --version ] [ --DN ]
-
-`--tool TOOL'
- TOOL specifies what set of tests to run, and what initialization
- module to use. TOOL is used *only* for these two purposes: it is
- *not* used to name the executable program to test. Executable
- tool names (and paths) are recorded in `site.exp' (*note
- Configuration dependent values: Config Values.), and you can
- override them by specifying Tcl variables on the command line.
-
- For example, including `--tool gcc' on the `runtest' command line
- runs tests from all test subdirectories whose names match `gcc.*',
- and uses one of the initialization modules named
- `config/*-gcc.exp'. To specify the name of the compiler (perhaps
- as an alternative path to what `runtest' would use by default), use
- `GCC=BINNAME' on the `runtest' command line.
-
-`TESTSUITE.exp ...'
- Specify the names of testsuites to run. By default, `runtest'
- runs all tests for the tool, but you can restrict it to particular
- testsuites by giving the names of the `.exp' `expect' scripts that
- control them.
-
- TESTSUITE.exp may not include path information; use plain
- filenames.
-
-`TESTFILE.exp="testfile1 ..."'
- Specify a subset of tests in a suite to run. For compiler or
- assembler tests, which often use a single `.exp' script covering
- many different source files, this option allows you to further
- restrict the tests by listing particular source files to compile.
- Some tools even support wildcards here. The wildcards supported
- depend upon the tool, but typically they are `?', `*', and
- `[chars]'.
-
-`TCLVAR=VALUE'
- You can define Tcl variables for use by your test scripts in the
- same style used with `make' for environment variables. For
- example, `runtest GDB=gdb.old' defines a variable called `GDB';
- when your scripts refer to `$GDB' in this run, they use the value
- `gdb.old'.
-
- The default Tcl variables used for most tools are defined in the
- main DejaGnu `Makefile'; their values are captured in the
- `site.exp' file. *Note Configuration dependent values: Config
- Values.
-
-`--all'
- Display all test output. By default, `runtest' shows only the
- output of tests that produce unexpected results; that is, tests
- with status `FAIL' (unexpected failure), `XPASS' (unexpected
- success), or `ERROR' (a severe error in the test case itself).
- Specify `--all' to see output for tests with status `PASS'
- (success, as expected) `XFAIL' (failure, as expected), or
- `WARNING' (minor error in the test case itself).
-
-`--baud BAUD-RATE'
-`-b BAUD-RATE'
- Set the default baud rate to something other than 9600. (Some
- serial interface programs, like `tip', use a separate
- initialization file instead of this value.)
-
-`--connect TYPE'
- Connect to a target testing environment as specified by TYPE, if
- the target is not the computer running `runtest'. For example, use
- `--connect' to change the program used to connect to a "bare
- board" boot monitor. The choices for TYPE in the DejaGnu 1.0
- distribution are `rlogin', `telnet', `rsh', `tip', `kermit', and
- `mondfe'.
-
- The default for this option depends on the configuration (*note
- Remote targets supported: Cross Targets.). The default is chosen
- to be the most convenient communication method available, but
- often other alternatives work as well; you may find it useful to
- try alternative connect methods if you suspect a communication
- problem with your testing target.
-
-`--debug'
- Turns on the `expect' internal debugging output. Debugging output
- is displayed as part of the `runtest' output, and logged to a file
- called `dbg.log'. The extra debugging output does *not* appear on
- standard output, unless the verbose level is greater than 2 (for
- instance, to see debug output immediately, specify `--debug -v
- -v'). The debugging output shows all attempts at matching the test
- output of the tool with the scripted patterns describing expected
- output. The output generated with `--strace' also goes into
- `dbg.log'.
-
-`--help'
-`-he'
- Prints out a short summary of the `runtest' options, then exits
- (even if you also specify other options).
-
-`--host STRING'
- STRING is a full configuration "triple" name as used by
- `configure'. Use this option to override the default string
- recorded by your configuration's choice of host. This choice does
- not change how anything is actually configured unless -build is
- also specified; it affects *only* DejaGnu procedures that compare
- the host string with particular values. The procedures `ishost',
- `istarget', `isnative', and `setup_xfail' are affected by
- `--host'. In this usage, `host' refers to the machine that the
- tests are to be run on, which may not be the same as the `build'
- machine. If `--build' is also specified, then `--host' refers to
- the machine that the tests wil, be run on, not the machine DejaGnu
- is run on.
-
-`--build STRING'
- STRING is a full configuration "triple" name as used by
- `configure'. This is the type of machine DejaGnu and the tools to
- be tested are built on. For a normal cross this is the same as the
- host, but for a canadian cross, they are seperate.
-
-`--name NAME'
- NAME is a name for the particular testing target machine (for
- cross testing). If the testing target has IP network support (for
- example, `RPC' or `NFS'), this is the network name for the target
- itself. (NAME is *not the configuration string* you specify as a
- target with `configure'; the `--name' option names a particular
- target, rather than describing a class of targets.) For targets
- that connect in other ways, the meaning of the NAME string depends
- on the connection method. *Note Remote targets supported: Cross
- Targets.
-
-`--name STRING'
- Specify a network name of testing target or its host. The
- particular names that are meaningful with `--name' will depend on
- your site configuration, and on the connection protocol: for
- example, `tip' connections require names from a serial line
- configuration file (usually called `/etc/remote'), while `telnet'
- connections use IP hostnames.
-
-`--objdir PATH'
- Use PATH as the top directory containing any auxiliary compiled
- test code. This defaults to `.'. Use this option to locate
- pre-compiled test code. You can normally prepare any auxiliary
- files needed with `make'.
-
-`--outdir PATH'
- Write output logs in directory PATH. The default is `.', the
- directory where you start `runtest'. This option affects only the
- summary and the detailed log files `TOOL.sum' and `TOOL.log'. The
- DejaGnu debug log `dbg.log' always appears (when requested) in the
- local directory.
-
-`--reboot'
- Reboot the target board when `runtest' initializes. Usually, when
- running tests on a separate target board, it is safer to reboot
- the target to be certain of its state. However, when developing
- test scripts, rebooting takes a lot of time.
-
-`--srcdir PATH'
- Use PATH as the top directory for test scripts to run. `runtest'
- looks in this directory for any subdirectory whose name begins
- with the toolname (specified with `--tool'). For instance, with
- `--tool gdb', `runtest' uses tests in subdirectories `gdb.*' (with
- the usual shell-like filename expansion). If you do not use
- `--srcdir', `runtest' looks for test directories under the current
- working directory.
-
-`--strace N'
- Turn on internal tracing for `expect', to N levels deep. By
- adjusting the level, you can control the extent to which your
- output expands multi-level Tcl statements. This allows you to
- ignore some levels of `case' or `if' statements. Each procedure
- call or control structure counts as one "level".
-
- The output is recorded in the same file, `dbg.log', used for output
- from `--debug'.
-
-`--target STRING'
- Use this option to override the default setting (running native
- tests). STRING is a full configuration "triple" name(1) as used
- by `configure'. This option changes the configuration `runtest'
- uses for the default tool names, and other setup information.
- *Note Using `configure': (configure.info)Using configure, for
- details about `configure' names.
-
-`--verbose'
-`-v'
- Turns on more output. Repeating this option increases the amount
- of output displayed. Level one (`-v') is simply test output. Level
- two (`-v -v') shows messages on options, configuration, and process
- control. Verbose messages appear in the detailed (`*.log') log
- file, but not in the summary (`*.sum') log file.
-
-`--version'
-`-V'
- Prints out the version numbers of DejaGnu, `expect' and Tcl, and
- exits without running any tests.
-
-`-D0'
-`-D1'
- Start the internal Tcl debugger. The Tcl debugger supports
- breakpoints, single stepping, and other common debugging
- activities. (See `A Debugger for Tcl Applications' by Don Libes.
- (2))
-
- If you specify `-D1', the `expect' shell stops at a breakpoint as
- soon as DejaGnu invokes it.
-
- If you specify `-D0', DejaGnu starts as usual, but you can enter
- the debugger by sending an interrupt (e.g. by typing <C-c>).
-
- ---------- Footnotes ----------
-
- (1) Configuration triples have the form `CPU-VENDOR-OS'.
-
- (2) Distributed in PostScript form with `expect' as the file
-`expect/tcl-debug.ps'.
-
-
-File: dejagnu.info, Node: Customizing, Next: Internals, Prev: Invoking runtest, Up: Top
-
-Setting `runtest' defaults
-**************************
-
- The site configuration file, `site.exp', captures
-configuration-dependent values and propagates them to the DejaGnu test
-environment using Tcl variables. This ties the DejaGnu test scripts
-into the `configure' and `make' programs.
-
- DejaGnu supports more than one `site.exp' file. The multiple
-instances of `site.exp' are loaded in a fixed order built into DejaGnu
-(the more local last). The first file loaded is the optional
-`~/.dejagnurc', then the local files, and finally the global file.
-
- 1. There is am optional "master" `site.exp', capturing configuration
- values that apply to DejaGnu across the board, in each
- configuration-specific subdirectory of the DejaGnu library
- directory. `runtest' loads these values first. *Note Configuring
- and Installing DejaGnu: Installation. The master `site.exp'
- contains the default values for all targets and hosts supported by
- DejaGnu. This master file is identified by setting the environment
- variable `DEJAGNU' to the name of the file. This is also refered
- to as the "global" config file.
-
- 2. Any directory containing a configured test suite also has a
- `site.exp', capturing configuration values specific to the tool
- under test. Since `runtest' loads these values last, the
- individual test configuration can either rely on and use, or
- override, any of the global values from the "master" `site.exp'.
-
- You can usually generate or update the testsuite `site.exp' by
- typing `make site.exp' in the test suite directory, after the test
- suite is configured.
-
- 3. You can also have a file in your home directory called
- `.dejagnurc'. This gets loaded first before the other config
- files. Usually this is used for personal stuff, like setting
- `all_flag' so all the output gets printed, or verbosity levels.
-
- You can further override the default values in a user-editable
-section of any `site.exp', or by setting variables on the `runtest'
-command line.
-
-* Menu:
-
-* Config Values:: Variables used in the configuration file.
-* Master Config File:: The master configuration file.
-* Local Config File:: The local configuration file.
-* Personal Config File:: The personal configuration file.
-
-
-File: dejagnu.info, Node: Config Values, Next: Master Config File, Up: Customizing
-
-Config Variables
-----------------
-
- DejaGnu uses a named array in Tcl to hold all the info for each
-machine. In the case of a canadian cross, this means host information as
-well as target information. The named array is called `target_info',
-and it has two indices. The following fields are part of the array.
-
-`name'
- The name of the target. (mostly for error messages) This should
- also be the string used for this target's array. It should also
- be the same as the linker script so we can find them dynamically.
- This should be the same as the argument used for `push_target{}'.
-
-`ldflags'
- This is the linker flags required to produce a fully linked
- executable. For `libgloss' supported targets this is usually just
- the name of the linker script.
-
-`config'
- The target canonical for this target. This is used by some init
- files to make sure the target is supported.
-
-`cflags'
- The flags required to produce an object file from a source file.
-
-`connect'
- This is the connectmode for this target. This is for both IP and
- serial connections. Typically this is either `telnet', `rlogin',
- or `rsh'.
-
-`target'
- This is the hostname of the target. This is for TCP/IP based
- connections, and is also used for version of tip that use
- /etc/remote.
-
-`serial'
- This is the serial port. This is typically /dev/tty? or com?:.
-
-`netport'
- This is the IP port. This is commonly used for telneting to target
- boards that are connected to a terminal server. In that case the
- IP port specifies the which serial port to use.
-
-`baud'
- This is the baud rate for a serial port connection.
-
-`x10'
- This is the parameters for an x10 controller. These are simple
- devices that let us power cycle or reset a target board remotely.
-
-`fileid'
- This is the fileid or spawn id of of the connection.
-
-`prompt'
- a glob style pattern to recognize the prompt.
-
-`abbrev'
- abbreviation for tool init files.
-
-`ioport'
- This is the port for I/O on dual port systems. In this
- configuration, the main serial port `0' is usually used for stdin
- and stdout, which the second serial port can be used for debugging.
-
- The first index into the array is the same value as used in the
-`name' field. This is usually a short version of the name of the target
-board. For an example, here's the settings I use for my `Motorola's'
-`IDP' board and my `Motorola' 6U VME `MVME135-1' board. (both m68k
-targets)
-
- # IDP board
- set target_info(idp,name) "idp"
- set target_info(idp,ldflags) "-Tidp.ld"
- set target_info(idp,config) m68k-unknown-aout
- set target_info(idp,cflags) ""
- set target_info(idp,connect) telnet
- set target_info(idp,target) "s7"
- set target_info(idp,serial) "tstty7"
- set target_info(idp,netport) "wharfrat:1007"
- set target_info(idp,baud) "9600"
- # MVME 135 board
- set target_info(idp,name) "mvme"
- set target_info(idp,ldflags) "-Tmvme.ld"
- set target_info(idp,config) m68k-unknown-aout
- set target_info(idp,cflags) ""
- set target_info(idp,connect) telnet
- set target_info(idp,target) "s8"
- set target_info(idp,serial) "tstty8"
- set target_info(idp,netport) "wharfrat:1008"
- set target_info(idp,baud) "9600"
-
- DejaGnu can use this information to switch between multiple targets
-in one test run. This is done through the use of the `push_target'
-procedure, which is discussed elsewhere.
-
- This array can also hold information for a remote host, which is used
-when testing a candain cross. In this case, the only thing different is
-the index is just `host'. Here's the settings I use to run tests on my
-NT machine while running DejaGnu on a Unix machine. (in this case a
-Linux box)
-
- set target_info(host,name) "nt-host"
- set target_info(host,config) "386-unknown-winnt"
- set target_info(host,connect) "telnet"
- set target_info(host,target) "ripple"
-
- There is more info on how to use these variables in the sections on
-the config files. *Note Configuration Files: Master Config File.
-
- In the user editable second section of `site.exp', you can not only
-override the configuration variables captured in the first section, but
-also specify default values for all the `runtest' command line options.
-Save for `--debug', `--help', and `--version', each command line
-option has an associated Tcl variable. Use the Tcl `set' command to
-specify a new default value (as for the configuration variables). The
-following table describes the correspondence between command line
-options and variables you can set in `site.exp'. *Note Running the
-Tests: Invoking runtest, for explanations of the command-line options.
-
- runtest Tcl
- option variable description
- __________ ________ ___________________________________________
-
- --all all_flag display all test results if set
-
- --baud baud set the default baud rate to something other
- than 9600.
- --connect connectmode `rlogin', `telnet', `rsh',
- `kermit', `tip', or `mondfe'
-
- --outdir outdir directory for `TOOL.sum' and `TOOL.log'
-
- --objdir objdir directory for pre-compiled binaries
-
- --reboot reboot reboot the target if set to `"1"';
- do not reboot if set to `"0"' (the default)
-
- --srcdir srcdir directory of test subdirectories
-
- --strace tracelevel a number: Tcl trace depth
-
- --tool tool name of tool to test; identifies init, test subdir
-
- --verbose verbose verbosity level. As option, use multiple times;
- as variable, set a number, 0 or greater
- --target target_triplet The canonical configuration string for the target.
- --host host_triplet The canonical configuration string for the host.
- --build build_triplet The canonical configuration string for the
- build host.
-
-
-File: dejagnu.info, Node: Master Config File, Next: Local Config File, Prev: Config Values, Up: Customizing
-
-Master Config File
-------------------
-
- The master config file is where all the target specific config
-variables get set for a whole site get set. The idea is that for a
-centralized testing lab where people have to share a target between
-multiple developers. There are settings for both remote targets and
-remote hosts. Here's an example of a Master Config File (also called
-the Global config file) for a *canadian cross*. A canadian cross is
-when you build and test a cross compiler on a machine other than the
-one it's to be hosted on.
-
- Here we have the config settings for our California office. Note that
-all config values are site dependant. Here we have two sets of values
-that we use for testing m68k-aout cross compilers. As both of these
-target boards has a different debugging protocol, we test on both of
-them in sequence.
-
- global CFLAGS
- global CXXFLAGS
-
- case "$target_triplet" in {
- { "native" } {
- set target_abbrev unix
- }
- { "m68*-unknown-aout" } {
- set target_abbrev "rom68k"
- # IDP target # IDP board with rom68k monitor
- set target_info(idp,name) "idp"
- set target_info(idp,ldflags) "-Tidp.ld"
- set target_info(idp,config) m68k-unknown-aout
- set target_info(idp,cflags) ""
- set target_info(idp,connect) telnet
- set target_info(idp,target) "s7"
- set target_info(idp,serial) "tstty12"
- set target_info(idp,netport) "truckin:1007"
- set target_info(idp,baud) "9600"
- # MVME target # Motorola MVME 135 with BUG monitor
- set target_info(mvme,name) "mvme"
- set target_info(mvme,ldflags) "-Tmvme.ld"
- set target_info(mvme,config) m68k-unknown-aout
- set target_info(mvme,cflags) ""
- set target_info(mvme,connect) telnet
- set target_info(mvme,target) "s4"
- set target_info(mvme,serial) "tstty8"
- set target_info(mvme,netport) "truckin:1004"
- set target_info(mvme,baud) "9600"
- }
- }
-
- In this case, we have support for several remote hosts for our
-m68k-aout cross compiler. Typically the remote Unix hosts run DejaGnu
-locally, but we also use them for debugging the testsuites when we find
-problems in running on remote hosts. Expect won't run on NT, so DejaGnu
-is run on the local build machine, and it'll connect to the NT host and
-run all the tests for this cross compiler on that host.
-
- case "$host_triplet" in {
- "native" {
- }
- "i?86-*-linux*" { # Linux host
- set target_info(host,name) "linux-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) chinadoll
- }
- "i?86-*-winnt # NT host
- set target_info(host,name) "nt-host"
- set target_info(host,config) i386-unknown-winnt
- set target_info(host,connect) telnet
- set target_info(host,target) ripple
- }
- "hppa*-hp-hpux*" { # HP-UX host
- set target_info(host,name) "hpux-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) slipknot
- }
- "sparc-sun-sunos*" { # SunOS (sun4)
- set target_info(host,name) "sunos-host"
- set target_info(host,config) $host_triplet
- set target_info(host,connect) rlogin
- set target_info(host,target) darkstar
- }
- }
-
-
-File: dejagnu.info, Node: Local Config File, Next: Personal Config File, Prev: Master Config File, Up: Customizing
-
-Local Config File
------------------
-
- It is usually more convenient to keep these "manual overrides" in the
-`site.exp' local to each test directory, rather than in the "master"
-`site.exp' in the DejaGnu library.
-
- All local `site.exp' usually files have two sections, separated by
-comment text. The first section is the part that is generated by
-`make'. It is essentially a collection of Tcl variable definitions
-based on `Makefile' environment variables. Since they are generated by
-`make', they contain the values as specified by `configure'. (You can
-also customize these values by using the `--site' option to
-`configure'.) In particular, this section contains the `Makefile'
-variables for host and target configuration data. Do not edit this
-first section; if you do, your changes are replaced next time you run
-`make'.
-
- The first section starts with:
-
- ## these variables are automatically generated by make ##
- # Do not edit here. If you wish to override these values
- # add them to the last section
-
- In the second section, you can override any default values (locally
-to DejaGnu) for all the variables. The second section can also contain
-your preferred defaults for all the command line options to `runtest'.
-This allows you to easily customize `runtest' for your preferences in
-each configured test-suite tree, so that you need not type options
-repeatedly on the command line. (The second section may also be empty,
-if you do not wish to override any defaults.)
-
- The first section ends with this line:
-
- ## All variables above are generated by configure. Do Not Edit ##
-
- You can make any changes under this line. If you wish to redefine a
-variable in the top section, then just put a duplicate value in this
-second section. Usually the values defined in this config file are
-related to the configuration of the test run. This is the ideal place to
-set the variables `host_triplet', `build_triplet', `target_triplet'.
-All other variables are tool dependant. ie for testing a compiler, the
-value for CC might be set to a freshly built binary, as opposed to one
-in the user's path.
-
-
-File: dejagnu.info, Node: Personal Config File, Prev: Local Config File, Up: Customizing
-
-Personal Config File
---------------------
-
- The personal config file is used to customize `runtest's' behaviour
-for each person. It's typically used to set the user prefered setting
-for verbosity, and any experimental Tcl procedures. My personal
-`~/.dejagnurc' file looks like:
-
- set all_flag 1
- set RLOGIN /usr/ucb/rlogin
- set RSH /usr/ucb/rsh
-
- Here I set `all_flag' so I see all the test cases that PASS along
-with the ones that FAIL. I also set RLOGIN and `RSH' to the BSD
-version. I have `kerberos' installed, and when I rlogin to a target
-board, it usually isn't supported. So I use the non secure versions of
-these programs rather than the default that's in my path.
-
-
-File: dejagnu.info, Node: Internals, Next: Tests, Prev: Customizing, Up: Top
-
-The DejaGnu Implementation
-**************************
-
- DejaGnu is entirely written in `expect', which uses Tcl as a command
-language. `expect' serves as a very programmable shell; you can run
-any program, as with the usual Unix command shells--but once the
-program is started, your `expect' script has fully programmable control
-of its input and output. This does not just apply to the programs
-under test; `expect' can also run any auxiliary program, such as `diff'
-or `sh', with full control over its input and output.
-
- DejaGnu itself is merely a framework for the set of test suites
-distributed separately for each GNU tool. Future releases of GNU tools
-will include even more tests, developed throughout the free software
-community.
-
- `runtest' is the glue to tie together and manage the test scripts.
-The `runtest' program is actually a simple Bourne shell script that
-locates a copy of the `expect' shell and then starts the main Tcl code,
-`runtest.exp'. `runtest.exp' itself has these essential functions:
-
- 1. Parse the command line options, load the library files, and load
- the default configuration files.
-
- 2. Locating the individual test scripts. `runtest.exp' locates the
- tests by exploiting a straightforward naming convention based on
- the string you specify with the `--tool' option.
-
- 3. Providing an extended test environment, by defining additional Tcl
- procedures beyond those already in `expect'.
-
- 4. Locating target-dependent functions, to standardize the test
- environment across a wide variety of test platforms.
-
-* Menu:
-
-* Names:: Conventions for using tool names
-* Init Module:: Initialization module
-* DejaGnu Builtins:: DejaGnu provides these Tcl procedures
-* Target Dependent:: Procedures supplied by the init module
-* Cross Targets:: Remote targets supported
-* Input Files:: The files DejaGnu depends on
-* Output Files:: The files DejaGnu produces
-