⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autobook_98.html

📁 Autoconf使用手册
💻 HTML
字号:
<HTML><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><!-- Created on September, 12  2004 by texi2html 1.64 --><!-- Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)            Karl Berry  <karl@freefriends.org>            Olaf Bachmann <obachman@mathematik.uni-kl.de>            and many others.Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> --><HEAD><TITLE>Autoconf, Automake, and Libtool: Adding a Test Suite</TITLE><META NAME="description" CONTENT="Autoconf, Automake, and Libtool: Adding a Test Suite"><META NAME="keywords" CONTENT="Autoconf, Automake, and Libtool: Adding a Test Suite"><META NAME="resource-type" CONTENT="document"><META NAME="distribution" CONTENT="global"><META NAME="Generator" CONTENT="texi2html 1.64"><script language="Javascript"><!--    // Check the browser version.    function checkVersion() {      if (navigator.appVersion.charAt(0)>=3) return true;      if (navigator.appVersion.charAt(0)>=4) return true;      else return false;    }      if (checkVersion()) {             homeon = new Image();             homeon.src = "homeon.png";             homeoff = new Image();             homeoff.src = "home.png";             tocon = new Image();             tocon.src = "tocon.png";             tocoff = new Image();             tocoff.src = "toc.png";             indexon = new Image();             indexon.src = "indexon.png";             indexoff = new Image();             indexoff.src = "index.png";             helpon = new Image();             helpon.src = "helpon.png";             helpoff = new Image();             helpoff.src = "help.png";             backon = new Image();             backon.src = "backon.png";             backoff = new Image();             backoff.src = "back.png";             forwardon = new Image();             forwardon.src = "forwardon.png";             forwardoff = new Image();             forwardoff.src = "forward.png";             prevon = new Image();             prevon.src = "prevon.png";             prevoff = new Image();             prevoff.src = "prev.png";             nexton = new Image();             nexton.src = "nexton.png";             nextoff = new Image();             nextoff.src = "next.png";             upon = new Image();             upon.src = "upon.png";             upoff = new Image();             upoff.src = "up.png";         }     function img_act(imgName) {             if (checkVersion()) {             imgOn = eval(imgName + "on.src");             document [imgName].src = imgOn;             }     }     function img_inact(imgName) {             if (checkVersion()) {             imgOff = eval(imgName + "off.src");             document [imgName].src = imgOff;             }     }// --></SCRIPT></HEAD><BODY LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#6688AA" VLINK="#336688" ALINK="#808080"><A NAME="SEC98"></A><TABLE BORDER=0 CELLPADDING=0 CELLSPACING=10><TR VALIGN="TOP"><TD ALIGN="MIDDLE" WIDTH=50 BGCOLOR="#e6e6e6"><TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_97.html#SEC97" onMouseover="img_act('prev')" onMouseout="img_inact('prev')"><IMG SRC="prev.png" BORDER="0" ALT="Back: Including Texinfo Documentation" ALIGN="MIDDLE" NAME="prev"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_99.html#SEC99" onMouseover="img_act('next')" onMouseout="img_inact('next')"><IMG SRC="next.png" BORDER="0" ALT="Forward: Rolling Distribution Tarballs" ALIGN="MIDDLE" NAME="next"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_93.html#SEC93" onMouseover="img_act('back')" onMouseout="img_inact('back')"><IMG SRC="back.png" BORDER="0" ALT="FastBack: A Large GNU Autotools Project" ALIGN="MIDDLE" NAME="back"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_93.html#SEC93" onMouseover="img_act('up')" onMouseout="img_inact('up')"><IMG SRC="up.png" BORDER="0" ALT="Up: A Large GNU Autotools Project" ALIGN="MIDDLE" NAME="up"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_99.html#SEC99" onMouseover="img_act('forward')" onMouseout="img_inact('forward')"><IMG SRC="forward.png" BORDER="0" ALT="FastForward: Rolling Distribution Tarballs" ALIGN="MIDDLE" NAME="forward"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook.html#SEC_Top" onMouseover="img_act('home')" onMouseout="img_inact('home')"><IMG SRC="home.png" BORDER="0" ALT="Top: Autoconf, Automake, and Libtool" ALIGN="MIDDLE" NAME="home"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_toc.html#SEC_Contents" onMouseover="img_act('toc')" onMouseout="img_inact('toc')"><IMG SRC="toc.png" BORDER="0" ALT="Contents: Table of Contents" ALIGN="MIDDLE" NAME="toc"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_285.html#SEC285" onMouseover="img_act('index')" onMouseout="img_inact('index')"><IMG SRC="index.png" BORDER="0" ALT="Index: Index" ALIGN="MIDDLE" NAME="index"></A></TD></TR><TR VALIGN="TOP" ALIGN="LEFT"><TD VALIGN="MIDDLE" ALIGN="LEFT"><A HREF="autobook_abt.html#SEC_About" onMouseover="img_act('help')" onMouseout="img_inact('help')"><IMG SRC="help.png" BORDER="0" ALT="About: About this document" ALIGN="MIDDLE" NAME="help"></A></TD></TR></TABLE></TD><TD ALIGN="LEFT"><H2> 12.5 Adding a Test Suite </H2><!--docid::SEC98::--><P>Automake has very flexible support for automated test-suites within aproject distribution, which are discussed more fully in the Automakemanual.  I have added a simple shell script based testing facility toSic using this support -- this kind of testing mechanism is perfectlyadequate for command line projects.  The tests themselves simply feedprescribed input to the uninstalled <CODE>sic</CODE> interpreter andcompare the actual output with what is expected.</P><P>Here is one of the test scripts:</P><P><TABLE width=100%><tr><td>&nbsp;</td><td class=example bgcolor=#6688aa><br><pre></pre></td></tr></table></P><P>The tricky part of this script is the first part which discovers thelocation of (and loads)  <TT>`$srcdir/defs'</TT>.  It is a little convolutedbecause it needs to work if the user has compiled the project in aseparate build tree -- in which case the <TT>`defs'</TT> file is in aseparate source tree and not in the actual directory in which the testis executed.</P><P>The <TT>`defs'</TT> file allows me to factor out the common definitions fromeach of the test files so that it can be maintained once in a singlefile that is read by all of the tests:</P><P><TABLE width=100%><tr><td>&nbsp;</td><td class=example bgcolor=#6688aa><br><pre></pre></td></tr></table></P><P>Having written a few more test scripts, and made sure that they areworking by running them from the command line, all that remains is towrite a suitable <TT>`Makefile.am'</TT> so that <CODE>automake</CODE> can runthe test suite automatically.</P><P><TABLE width=100%><tr><td>&nbsp;</td><td class=example bgcolor=#6688aa><br><pre></pre></td></tr></table></P><P>I have used the <SAMP>`testsubdir'</SAMP> macro to run the tests in their ownsubdirectory so that the directory containing the actual test scripts isnot polluted with lots of fallout files generated by running the tests.For completeness I have used a <EM>hook target</EM><A NAME="DOCF26" HREF="autobook_fot.html#FOOT26">(26)</A> to remove this subdirectory when the user types:</P><P><TABLE width=100%><tr><td>&nbsp;</td><td class=example bgcolor=#6688aa><br><pre>$ make distclean...rm -rf testSubDir...</pre></td></tr></table></P><P>Adding more tests is accomplished by creating a new test script andadding it to the list in <CODE>noinst_SCRIPTS</CODE>.  Remembering to add thenew <TT>`tests'</TT> subdirectory to <TT>`configure.in'</TT> and the top-level<TT>`Makefile.am'</TT>, and reconfiguring the project to propagate thechanges into the various generated files, I can run the whole test suitefrom the top directory with:</P><P><TABLE width=100%><tr><td>&nbsp;</td><td class=example bgcolor=#6688aa><br><pre>$ make check</pre></td></tr></table></P><P>It is often useful run tests in isolation, either when developing newtests, or to examine more closely why a test has failed unexpectedly.Having set this test suite up as I did, individual tests can be executedwith:</P><P><TABLE width=100%><tr><td>&nbsp;</td><td class=example bgcolor=#6688aa><br><pre>$ VERBOSE=1 make check TESTS=incomplete.testmake  check-TESTSmake[1]: Entering directory/tmp/sic/tests=== Running test incomplete.test123PASS: incomplete.test==================All 1 tests passed==================make[1]: Leaving directory /tmp/sic/tests$ ls testSubDir/err   errok   in.sic   ok   out</pre></td></tr></table></P><P>The <TT>`testSubDir'</TT> subdirectory now contains the expected and actualoutput from that particular test for both <TT>`stdout'</TT> and<TT>`stderr'</TT>, and the input file which generated the actual output.Had the test failed, I would be able to look at these files to decidewhether there is a bug in the program or simply a bug in the testscript.  Being able to examine individual tests like this is invaluable,especially when the test suite becomes very large -- because you will,naturally, add tests every time you add features to a project or findand fix a bug.</P><P>Another alternative to the pure shell based test mechanism I havepresented here is the Autotest facility by Fran@,cois Pinard, as usedin Autoconf after release 2.13.</P><P>Later in <A HREF="autobook_182.html#SEC182">20. A Complex GNU Autotools Project</A>, the Sic project will berevisited to take advantage of some of the more advanced features ofGNU Autotools.  But first these advanced features will be discussed in thenext several chapters -- starting, in the next chapter, with adiscussion of how GNU Autotools can help you to make a tarred distributionof your own projects.</P><P><A NAME="Rolling Distribution Tarballs"></A></TR></TABLE><BR>  <FONT SIZE="-1">This document was generatedby <I>Gary V. Vaughan</I> on <I>September, 12  2004</I>using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html"><I>texi2html</I></A></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -