aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Elliston <bje@gnu.org>2004-02-08 14:02:07 +0000
committerBen Elliston <bje@gnu.org>2004-02-08 14:02:07 +0000
commit30c35cf4696b0345c348e85acfb59c4ce6ef7f16 (patch)
treed0faabdd68d49929e59921150502859f5533feaa
parentccc2f172e9c5d00186a162e7acfb174625313fe0 (diff)
downloaddejagnu-30c35cf4696b0345c348e85acfb59c4ce6ef7f16.zip
dejagnu-30c35cf4696b0345c348e85acfb59c4ce6ef7f16.tar.gz
dejagnu-30c35cf4696b0345c348e85acfb59c4ce6ef7f16.tar.bz2
* TODO: Update.
* testsuite/libdejagnu/unit.cc: Conform with GNU coding standard.
-rw-r--r--ChangeLog6
-rw-r--r--TODO42
-rw-r--r--testsuite/libdejagnu/unit.cc179
3 files changed, 143 insertions, 84 deletions
diff --git a/ChangeLog b/ChangeLog
index 5c70d4f..7b409a1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-09 Ben Elliston <bje@wasabisystems.com>
+
+ * TODO: Update.
+
+ * testsuite/libdejagnu/unit.cc: Conform with GNU coding standard.
+
2004-02-08 Ben Elliston <bje@wasabisystems.com>
* configure.ac: Quote strings throughout in good Autoconf style.
diff --git a/TODO b/TODO
index 05e6474..2c51a6c 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-Last updated $Date: 2004/02/08 12:57:53 $
+Last updated $Date: 2004/02/08 14:02:07 $
Bigger items
============
@@ -14,3 +14,43 @@ Documentation
=============
* Add a "testing methodologies" section to the manual.
+
+
+From: mec.gnu@mindspring.com (Michael Elizabeth Chastain)
+Subject: my dejagnu wish list
+Newsgroups: gmane.comp.sysutils.dejagnu.general
+Date: Sat, 31 Jan 2004 21:02:21 -0500 (EST)
+
+My wish list for dejagnu:
+
+. clean up the exit status value.
+
+ The current situation is:
+
+ 1 a FAIL, XPASS, KPASS, or UNRESOLVED result occurred
+ 1 an unknown TCL procedure was called
+ 1 --status option and a TCL error happened
+ 0 all other cases
+
+ I would like to see something like:
+
+ 0 all tests are okay
+ 1 at least one test is not okay (FAIL, XPASS, KPASS, UNRESOLVED)
+ 2 a TCL error occured
+ 130 user hit ^C (SIGINT)
+ 131 user hit ^\ (SIGQUIT)
+
+ The important part is that I want to detect whether dejagnu ran
+ to completion or whether the user interrupted it with ^C or ^\.
+
+. When the compiler produces error messages, default_target_compile
+ calls "verbose -log ...". There is no need for "-log", because
+ runtest.exp already turned on "expect" logging with
+ "log_file -a $outdir/$tool.log", so there is already a copy of
+ the compiler output in the log file. Just "verbose ..." or
+ nothing at all.
+
+. Reset $warncnt and $errcnt at the start of each script. Right now,
+ if an error happens in a script and then no tests are run,
+ $errcnt carries over to the next script and forces the first test
+ of the new script to be UNRESOLVED.
diff --git a/testsuite/libdejagnu/unit.cc b/testsuite/libdejagnu/unit.cc
index 712ea67..135888b 100644
--- a/testsuite/libdejagnu/unit.cc
+++ b/testsuite/libdejagnu/unit.cc
@@ -1,4 +1,22 @@
// unit.cc -- This is a test case for the Dejagnu.h classes.
+// Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+// Please email any bugs, comments, and/or additions to this file to:
+// bug-dejagnu@gnu.org
#include <sys/types.h>
#include <iostream>
@@ -13,105 +31,100 @@ using namespace std;
TestState runtest;
TestState test;
-class TestClass1 {
+class TestClass1
+{
public:
- string tname;
- unsigned int tnum;
+ string tname;
+ unsigned int tnum;
};
TestClass1 testClass1, testClass2, testClass3;
TestClass1 *testClassPtr;
-// We have to so this silly crap with renaming the output string, so the generic
-// Tcl code that looks for the output state gets confused, and records random
-// duplicate messages.
+// We have to do this silly crap with renaming the output string, so
+// the generic Tcl code that looks for the output state gets confused,
+// and records random duplicate messages.
const char *os1[] = {
- "FAI: ",
- "PAS: ",
- "UNT: ",
- "UNR: "
+ "FAI: ", "PAS: ", "UNT: ", "UNR: "
};
const char *os2[] = {
- "FAILED: ",
- "PASSED: ",
- "UNTESTED: ",
- "UNRESOLVED: "
+ "FAILED: ", "PASSED: ", "UNTESTED: ", "UNRESOLVED: "
};
int
-main (int argc, char *argv[]) {
- regex_t regex_pat;
-
-// char **os2 = outstate;
- outstate = os1;
-
- // Replace the output buffer for cout, so we can examine it to
- // see what was displayed. Otherwise, there is no way we can test
- // the logging functions completely.
- char bbuuff[5120];
+main (int argc, char *argv[])
+{
+ regex_t regex_pat;
+ outstate = os1;
+
+ // Replace the output buffer for cout, so we can examine it to see
+ // what was displayed. Otherwise, there is no way we can test the
+ // logging functions completely.
+ char buf[5120];
#ifdef __STDC_HOSTED__
- cout.rdbuf()->pubsetbuf(bbuuff, 5120);
+ cout.rdbuf ()->pubsetbuf (buf, 5120);
#else
- cout.rdbuf()->setbuf(bbuuff, 5120);
+ cout.rdbuf ()->setbuf (buf, 5120);
#endif
-
- testClass1.tname = "testType1";
- testClass1.tnum = 1;
- testClass2.tname = "testType2";
- testClass2.tnum = 2;
- testClass3.tname = "testType3";
- testClass3.tnum = 3;
-
- // Test the pass message
- test.pass ("bogus pass message for testing");
- outstate = os2;
- if (strncmp(bbuuff, "\tPAS: bogus pass message", 22) == 0) {
- runtest.pass ("Pass message");
- } else {
- runtest.fail ("Pass message");
- }
-
- // Test the fail message
- outstate = os1;
- test.fail ("bogus fail message for testing");
- cout.flush();
- outstate = os2;
- if (strncmp(bbuuff, "\tFAI: bogus fail message", 22) == 0) {
- runtest.pass ("Fail message");
- } else {
- runtest.fail ("Fail message");
- }
-
- // Test the untested message
- outstate = os1;
- test.untested ("bogus untested message for testing");
- cout.flush();
- outstate = os2;
- if (strncmp(bbuuff, "\tUNT: bogus untested message", 21) == 0) {
- runtest.pass ("Untested message");
- } else {
- runtest.fail ("Untested message");
- }
-
- // Test the unresolved message
- outstate = os1;
- test.unresolved ("bogus unresolved message for testing");
- cout.flush();
- outstate = os2;
- if (strncmp(bbuuff, "\tUNR: bogus unresolved message", 21) == 0) {
- runtest.pass ("Unresolved message");
- } else {
- runtest.fail ("Unresolved message");
- }
-
- // Make sure we got everything in the totals
- regcomp (&regex_pat, "\r\n\t#passed.*#failed.*#untested.*#unresolved", REG_NOSUB|REG_NEWLINE);
- if (regexec (&regex_pat, bbuuff, 0, (regmatch_t *)0, 0)) {
- runtest.pass ("Totals message");
- } else {
- runtest.fail ("Totals message");
- }
+
+ testClass1.tname = "testType1";
+ testClass1.tnum = 1;
+ testClass2.tname = "testType2";
+ testClass2.tnum = 2;
+ testClass3.tname = "testType3";
+ testClass3.tnum = 3;
+
+ // Test the pass message.
+ test.pass ("bogus pass message for testing");
+ outstate = os2;
+ if (strncmp (buf, "\tPAS: bogus pass message", 22) == 0)
+ runtest.pass ("Pass message");
+ else
+ runtest.fail ("Pass message");
+
+ // Test the fail message.
+ outstate = os1;
+ test.fail ("bogus fail message for testing");
+ cout.flush ();
+ outstate = os2;
+ if (strncmp (buf, "\tFAI: bogus fail message", 22) == 0)
+ runtest.pass ("Fail message");
+ else
+ runtest.fail ("Fail message");
+
+ // Test the untested message.
+ outstate = os1;
+ test.untested ("bogus untested message for testing");
+ cout.flush ();
+ outstate = os2;
+ if (strncmp (buf, "\tUNT: bogus untested message", 21) == 0) {
+ runtest.pass ("Untested message");
+ } else {
+ runtest.fail ("Untested message");
+ }
+
+ // Test the unresolved message.
+ outstate = os1;
+ test.unresolved ("bogus unresolved message for testing");
+ cout.flush ();
+ outstate = os2;
+ if (strncmp (buf, "\tUNR: bogus unresolved message", 21) == 0)
+ runtest.pass ("Unresolved message");
+ else
+ runtest.fail ("Unresolved message");
+
+ // Make sure we got everything in the totals.
+ regcomp (&regex_pat,
+ "\r\n\t#passed.*#failed.*#untested.*#unresolved",
+ REG_NOSUB | REG_NEWLINE);
+
+ if (regexec (&regex_pat, buf, 0, (regmatch_t *) 0, 0))
+ runtest.pass ("Totals message");
+ else
+ runtest.fail ("Totals message");
+
+ return 0;
}