<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML ><HEAD ><TITLE >Runtest</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="DejaGnu" HREF="book1.html"><LINK REL="UP" TITLE="Running Tests" HREF="c198.html"><LINK REL="PREVIOUS" TITLE="Running Tests" HREF="c198.html"><LINK REL="NEXT" TITLE="The files DejaGnu produces." HREF="x552.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >DejaGnu: The GNU Testing Framework</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="c198.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Running Tests</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x552.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="RUNTEST" ></A >Runtest</H1 ><P ><B CLASS="COMMAND" >runtest</B > is the executable test driver for DejaGnu. You can specify two kinds of things on the <B CLASS="COMMAND" >runtest</B > command line: command line options, and Tcl variables for the test scripts. The options are listed alphabetically below.</P ><P ><B CLASS="COMMAND" >runtest</B > returns an exit code of <I CLASS="EMPHASIS" >1</I > if any test has an unexpected result; otherwise (if all tests pass or fail as expected) it returns <I CLASS="EMPHASIS" >0</I > as the exit code.</P ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="OUTPUTS" ></A >Output States</H2 ><P ><TT CLASS="FILENAME" >runtest</TT > flags the outcome of each test as one of these cases. <A HREF="x129.html" >A POSIX Conforming Test Framework</A > for a discussion of how POSIX specifies the meanings of these cases.</P ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT >PASS</DT ><DD ><P >The most desirable outcome: the test succeeded, and was expected to succeed.</P ></DD ><DT >XPASS</DT ><DD ><P >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.</P ></DD ><DT >FAIL</DT ><DD ><P >A test failed, although it was expected to succeed. This may indicate regress; inspect the test case and the failing software to ocate the bug.</P ></DD ><DT >XFAIL</DT ><DD ><P >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 <I CLASS="EMPHASIS" >UNSUPPORTED</I > instead.</P ></DD ><DT >UNRESOLVED</DT ><DD ><P >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.</P ></DD ><DT >UNTESTED</DT ><DD ><P >A test case is not yet complete, and in particular cannot yet produce a <I CLASS="EMPHASIS" >PASS</I > or <I CLASS="EMPHASIS" >FAIL</I >. You can also use this outcome in dummy ``tests'' that note explicitly the absence of a real test case for a particular property.</P ></DD ><DT >UNSUPPORTED</DT ><DD ><P >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.</P ></DD ></DL ></DIV ><P >runtest may also display the following messages:</P ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT >ERROR</DT ><DD ><P >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 <I CLASS="EMPHASIS" >UNSUPPORTED</I >, <I CLASS="EMPHASIS" >UNTESTED</I >, or <I CLASS="EMPHASIS" >UNRESOLVED</I > instead, as appropriate.)</P ></DD ><DT >WARNING</DT ><DD ><P >Indicates a possible problem in running the test. Usually warnings correspond to recoverable errors, or display an important message about the following tests.</P ></DD ><DT >NOTE</DT ><DD ><P >An informational message about the test case.</P ></DD ></DL ></DIV ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="INVOKING" ></A >Invoking Runtest</H2 ><P >This is the full set of command line options that <TT CLASS="FILENAME" >runtest</TT > recognizes. Arguments may be abbreviated to the shortest unique string.</P ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="OPTION" >--all</TT > (-a)</DT ><DD ><P >Display all test output. By default, <I CLASS="EMPHASIS" >runtest</I > shows only the output of tests that produce unexpected results; that is, tests with status <I CLASS="EMPHASIS" >FAIL</I > (unexpected failure), <I CLASS="EMPHASIS" >XPASS</I > (unexpected success), or <I CLASS="EMPHASIS" >ERROR</I > (a severe error in the test case itself). Specify <I CLASS="EMPHASIS" >--all</I > to see output for tests with status <I CLASS="EMPHASIS" >PASS</I > (success, as expected) <I CLASS="EMPHASIS" >XFAIL</I > (failure, as expected), or <I CLASS="EMPHASIS" >WARNING</I > (minor error in the test case itself).</P ></DD ><DT ><TT CLASS="OPTION" >--build [string]</TT ></DT ><DD ><P ><I CLASS="EMPHASIS" >string</I > is a full configuration ``triple'' name as used by <B CLASS="COMMAND" >configure</B >. 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.</P ></DD ><DT ><TT CLASS="OPTION" >--host [string]</TT ></DT ><DD ><P ><SPAN CLASS="SYMBOL" >string</SPAN > is a full configuration ``triple'' name as used by <I CLASS="EMPHASIS" >configure</I >. 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 <I CLASS="EMPHASIS" >only</I > DejaGnu procedures that compare the host string with particular values. The procedures <I CLASS="EMPHASIS" >ishost</I >, <I CLASS="EMPHASIS" >istarget</I >, <I CLASS="EMPHASIS" >isnative</I >, and <I CLASS="EMPHASIS" >setup</I >xfail} are affected by <I CLASS="EMPHASIS" >--host</I >. In this usage, <I CLASS="EMPHASIS" >host</I > refers to the machine that the tests are to be run on, which may not be the same as the <I CLASS="EMPHASIS" >build</I > machine. If <I CLASS="EMPHASIS" >--build</I > is also specified, then <I CLASS="EMPHASIS" >--host</I > refers to the machine that the tests wil, be run on, not the machine DejaGnu is run on.</P ></DD ><DT ><TT CLASS="OPTION" >--host_board [name]</TT ></DT ><DD ><P >The host board to use.</P ></DD ><DT ><TT CLASS="OPTION" >--target [string]</TT ></DT ><DD ><P >Use this option to override the default setting (running native tests). <I CLASS="EMPHASIS" >string</I > is a full configuration ``triple'' name of the form <I CLASS="EMPHASIS" >cpu-vendor-os</I > as used by <B CLASS="COMMAND" >configure</B >. This option changes the configuration <I CLASS="EMPHASIS" >runtest</I > uses for the default tool names, and other setup information.</P ></DD ><DT ><TT CLASS="OPTION" >--debug</TT > (-de)</DT ><DD ><P >Turns on the <I CLASS="EMPHASIS" >expect</I > internal debugging output. Debugging output is displayed as part of the <I CLASS="EMPHASIS" >runtest</I > output, and logged to a file called <TT CLASS="FILENAME" >dbg.log</TT >. The extra debugging output does <I CLASS="EMPHASIS" >not</I > appear on standard output, unless the verbose level is greater than 2 (for instance, to see debug output immediately, specify <I CLASS="EMPHASIS" >--debug</I >-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 <I CLASS="EMPHASIS" >--strace</I > also goes into <TT CLASS="FILENAME" >dbg.log</TT >.</P ></DD ><DT ><TT CLASS="OPTION" >--help</TT > (-he)</DT ><DD ><P >Prints out a short summary of the <I CLASS="EMPHASIS" >runtest</I > options, then exits (even if you also specify other options).</P ></DD ><DT ><TT CLASS="OPTION" >--ignore [name(s)] </TT ></DT ><DD ><P >The names of specific tests to ignore.</P ></DD ><DT ><TT CLASS="OPTION" >--objdir [path]</TT ></DT ><DD ><P >Use <I CLASS="EMPHASIS" >path</I > as the top directory containing any auxiliary compiled test code. This defaults to <TT CLASS="FILENAME" >.</TT >. Use this option to locate pre-compiled test code. You can normally prepare any auxiliary files needed with <I CLASS="EMPHASIS" >make</I >.</P ></DD ><DT ><TT CLASS="OPTION" >--outdir [path]</TT ></DT ><DD ><P >Write output logs in directory <TT CLASS="FILENAME" >path</TT >. The default is <I CLASS="EMPHASIS" >.}, the</I > directory where you start <I CLASS="EMPHASIS" >runtest</I >. This option affects only the summary and the detailed log files <TT CLASS="FILENAME" >tool.sum</TT > and <TT CLASS="FILENAME" >tool.log</TT >. The DejaGnu debug log <TT CLASS="FILENAME" >dbg.log</TT > always appears (when requested) in the local directory.</P ></DD ><DT ><TT CLASS="OPTION" >--reboot [name]</TT ></DT ><DD ><P >Reboot the target board when <I CLASS="EMPHASIS" >runtest</I > 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.</P ></DD ><DT ><TT CLASS="OPTION" >--srcdir [path]</TT ></DT ><DD ><P >Use <TT CLASS="FILENAME" >path</TT > as the top directory for test scripts to run. <I CLASS="EMPHASIS" >runtest</I > looks in this directory for any subdirectory whose name begins with the toolname (specified with <I CLASS="EMPHASIS" >--tool</I >). For instance, with <I CLASS="EMPHASIS" >--tool</I >gdb}, <I CLASS="EMPHASIS" >runtest</I > uses tests in subdirectories <TT CLASS="FILENAME" >gdb.*</TT > (with the usual shell-like filename expansion). If you do not use <I CLASS="EMPHASIS" >--srcdir</I >, <I CLASS="EMPHASIS" >runtest</I > looks for test directories under the current working directory.</P ></DD ><DT ><TT CLASS="OPTION" >--strace [number]</TT ></DT ><DD ><P >Turn on internal tracing for <I CLASS="EMPHASIS" >expect</I >, 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 <I CLASS="EMPHASIS" >case</I > or <I CLASS="EMPHASIS" >if</I > statements. Each procedure call or control structure counts as one ``level''. The output is recorded in the same file, <TT CLASS="FILENAME" >dbg.log</TT >, used for output from <I CLASS="EMPHASIS" >--debug</I >.</P ></DD ><DT ><TT CLASS="OPTION" >--connect [program]</TT ></DT ><DD ><P >Connect to a target testing environment as specified by <I CLASS="EMPHASIS" >type</I >, if the target is not the computer running <I CLASS="EMPHASIS" >runtest</I >. For example, use <I CLASS="EMPHASIS" >--connect</I > to change the program used to connect to a ``bare board'' boot monitor. The choices for <I CLASS="EMPHASIS" >type</I > in the DejaGnu 1.4 distribution are <I CLASS="EMPHASIS" >rlogin</I >, <I CLASS="EMPHASIS" >telnet</I >, <I CLASS="EMPHASIS" >rsh</I >, <I CLASS="EMPHASIS" >tip</I >, <I CLASS="EMPHASIS" >kermit</I >, and <I CLASS="EMPHASIS" >mondfe</I >.</P ><P >The default for this option depends on the configuration 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.</P ></DD ><DT ><TT CLASS="OPTION" >--baud [number]</TT ></DT ><DD ><P >Set the default baud rate to something other than 9600. (Some serial interface programs, like <I CLASS="EMPHASIS" >tip</I >, use a separate initialization file instead of this value.)</P ></DD ><DT ><TT CLASS="OPTION" >--target_board [name(s)]</TT ></DT ><DD ><P >The list of target boards to run tests on.</P ></DD ><DT ><A NAME="TOOL-OPT" ></A ><TT CLASS="OPTION" >--tool[name(s)]</TT ></DT ><DD ><P >Specifies which test suite to run, and what initialization module to use. <TT CLASS="OPTION" >--tool</TT > is used <I CLASS="EMPHASIS" >only</I > for these two purposes. It is <I CLASS="EMPHASIS" >not</I > used to name the executable program to test. Executable tool names (and paths) are recorded in <TT CLASS="FILENAME" >site.exp</TT > and you can override them by specifying Tcl variables on the command line.</P ><P >For example, including "<TT CLASS="OPTION" >--tool</TT > gcc" on the <I CLASS="EMPHASIS" >runtest</I > command line runs tests from all test subdirectories whose names match <TT CLASS="FILENAME" >gcc.*</TT >, and uses one of the initialization modules named <TT CLASS="FILENAME" >config/*-gcc.exp</TT >. To specify the name of the compiler (perhaps as an alternative path to what <I CLASS="EMPHASIS" >runtest</I > would use by default), use <I CLASS="EMPHASIS" >GCC=binname</I > on the <I CLASS="EMPHASIS" >runtest</I > command line.</P ></DD ><DT ><TT CLASS="OPTION" >--tool_exec [name]</TT ></DT ><DD ><P >The path to the tool executable to test.</P ></DD ><DT ><TT CLASS="OPTION" >--tool_opts [options]</TT ></DT ><DD ><P >A list of additional options to pass to the tool.</P ></DD ><DT ><TT CLASS="OPTION" >--verbose</TT > (-v)</DT ><DD ><P >Turns on more output. Repeating this option increases the amount of output displayed. Level one (<I CLASS="EMPHASIS" >-v</I >) is simply test output. Level two (<I CLASS="EMPHASIS" >-v</I >-v}) shows messages on options, configuration, and process control. Verbose messages appear in the detailed (<TT CLASS="FILENAME" >*.log</TT >) log file, but not in the summary (<TT CLASS="FILENAME" >*.sum</TT >) log file.</P ></DD ><DT ><TT CLASS="OPTION" >--version</TT > (-V)</DT ><DD ><P >Prints out the version numbers of DejaGnu, <I CLASS="EMPHASIS" >expect</I > and Tcl, and exits without running any tests.</P ></DD ><DT ><TT CLASS="OPTION" >--D[0-1]</TT ></DT ><DD ><P >Start the internal Tcl debugger. The Tcl debugger supports breakpoints, single stepping, and other common debugging activities. See the document "Debugger for Tcl Applications" by Don Libes. (Distributed in PostScript form with <I CLASS="EMPHASIS" >expect</I > as the file <TT CLASS="FILENAME" >expect/tcl-debug.ps.</TT >. If you specify <I CLASS="EMPHASIS" >-D1</I >, the <I CLASS="EMPHASIS" >expect</I > shell stops at a breakpoint as soon as DejaGnu invokes it. If you specify <I CLASS="EMPHASIS" >-D0</I >, DejaGnu starts as usual, but you can enter the debugger by sending an interrupt (e.g. by typing <B CLASS="KEYCAP" >C</B >-<B CLASS="KEYCAP" >c</B >). </P ></DD ><DT ><TT CLASS="FILENAME" >testfile</TT >.exp[=arg(s)]</DT ><DD ><P >Specify the names of testsuites to run. By default, <I CLASS="EMPHASIS" >runtest</I > runs all tests for the tool, but you can restrict it to particular testsuites by giving the names of the <I CLASS="EMPHASIS" >.exp expect</I > scripts that control them. <I CLASS="EMPHASIS" >testsuite</I >.exp may not include path information; use plain filenames.</P ></DD ><DT ><TT CLASS="FILENAME" >testfile</TT >.exp="testfile1 ..."</DT ><DD ><P >Specify a subset of tests in a suite to run. For compiler or assembler tests, which often use a single <I CLASS="EMPHASIS" >.exp</I > 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 <I CLASS="EMPHASIS" >?</I >, <I CLASS="EMPHASIS" >*</I >, and <I CLASS="EMPHASIS" >[chars]</I >.</P ></DD ><DT ><SPAN CLASS="SYMBOL" >tclvar</SPAN >=value</DT ><DD ><P >You can define Tcl variables for use by your test scripts in the same style used with <I CLASS="EMPHASIS" >make</I > for environment variables. For example, <I CLASS="EMPHASIS" >runtest GDB=gdb.old</I > defines a variable called <B CLASS="COMMAND" >GDB</B >; when your scripts refer to <SPAN CLASS="SYMBOL" >$GDB</SPAN > in this run, they use the value <I CLASS="EMPHASIS" >gdb.old</I >.</P ><P >The default Tcl variables used for most tools are defined in the main DejaGnu <I CLASS="EMPHASIS" >Makefile</I >; their values are captured in the <TT CLASS="FILENAME" >site.exp</TT > file.</P ></DD ></DL ></DIV ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="COMMON" ></A >Common Options</H2 ><P >Typically, you don't need must to use any command-line options. <TT CLASS="OPTION" >--tool</TT > used is only required when there are more than one test suite in the same directory. The default options are in the local site.exp file, created by "make site.exp".</P ><P >For example, if the directory <TT CLASS="FILENAME" >gdb/testsuite</TT > contains a collection of DejaGnu tests for GDB, you can run them like this:</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > eg$ cd gdb/testsuite eg$ runtest --tool gdb </PRE ></TD ></TR ></TABLE ><P >Test output follows, ending with:</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > === gdb Summary === # of expected passes 508 # of expected failures 103 /usr/latest/bin/gdb version 4.14.4 -nx </PRE ></TD ></TR ></TABLE ><P >You can use the option <I CLASS="EMPHASIS" >--srcdir</I > to point to some other directory containing a collection of tests:</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > eg$ runtest--srcdir /devo/gdb/testsuite </PRE ></TD ></TR ></TABLE ><P >By default, <B CLASS="COMMAND" >runtest</B > 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 <I CLASS="EMPHASIS" >--all</I > option. For more verbose output about processes being run, communication, and so on, use <I CLASS="EMPHASIS" >--verbose</I >. To see even more output, use multiple <I CLASS="EMPHASIS" >--verbose</I > options. for a more detailed explanation of each <B CLASS="COMMAND" >runtest</B > option.</P ><P >Test output goes into two files in your current directory: summary output in <TT CLASS="FILENAME" >tool.sum</TT >, and detailed output in <TT CLASS="FILENAME" > tool.log</TT >. (<I CLASS="EMPHASIS" >tool</I > refers to the collection of tests; for example, after a run with <I CLASS="EMPHASIS" >--tool</I > gdb, look for output files <TT CLASS="FILENAME" >gdb.sum</TT > and <TT CLASS="FILENAME" >gdb.log</TT >.)</P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="c198.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="book1.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x552.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Running Tests</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="c198.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >The files DejaGnu produces.</TD ></TR ></TABLE ></DIV ></BODY ></HTML >