diff options
author | Ben Elliston <bje@gnu.org> | 2004-02-08 14:02:07 +0000 |
---|---|---|
committer | Ben Elliston <bje@gnu.org> | 2004-02-08 14:02:07 +0000 |
commit | 30c35cf4696b0345c348e85acfb59c4ce6ef7f16 (patch) | |
tree | d0faabdd68d49929e59921150502859f5533feaa | |
parent | ccc2f172e9c5d00186a162e7acfb174625313fe0 (diff) | |
download | dejagnu-30c35cf4696b0345c348e85acfb59c4ce6ef7f16.zip dejagnu-30c35cf4696b0345c348e85acfb59c4ce6ef7f16.tar.gz dejagnu-30c35cf4696b0345c348e85acfb59c4ce6ef7f16.tar.bz2 |
* TODO: Update.
* testsuite/libdejagnu/unit.cc: Conform with GNU coding standard.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | TODO | 42 | ||||
-rw-r--r-- | testsuite/libdejagnu/unit.cc | 179 |
3 files changed, 143 insertions, 84 deletions
@@ -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. @@ -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 (®ex_pat, "\r\n\t#passed.*#failed.*#untested.*#unresolved", REG_NOSUB|REG_NEWLINE); - if (regexec (®ex_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 (®ex_pat, + "\r\n\t#passed.*#failed.*#untested.*#unresolved", + REG_NOSUB | REG_NEWLINE); + + if (regexec (®ex_pat, buf, 0, (regmatch_t *) 0, 0)) + runtest.pass ("Totals message"); + else + runtest.fail ("Totals message"); + + return 0; } |