aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Savoye <rob@welcomehome.org>2006-10-15 15:46:30 +0000
committerRob Savoye <rob@welcomehome.org>2006-10-15 15:46:30 +0000
commitff646916c63267bccf74910ef49bb04e5c853d25 (patch)
tree1cf08fe2c5d39f9d7b911d1812b67ee2879d1684
parent109de73c70c558b70359b9ea2319beb50b75f3af (diff)
downloaddejagnu-ff646916c63267bccf74910ef49bb04e5c853d25.zip
dejagnu-ff646916c63267bccf74910ef49bb04e5c853d25.tar.gz
dejagnu-ff646916c63267bccf74910ef49bb04e5c853d25.tar.bz2
* dejagnu.h: Add support for for expected failures and
unexpected successes.
-rw-r--r--ChangeLog14
-rw-r--r--dejagnu.h72
2 files changed, 82 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index f5df3c0..3d7cb7b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-10-15 Rob Savoye <rob@bertha.welcomehome.org>
+
+ * dejagnu.h: Add support for for expected failures and
+ unexpected successes.
+
+2005-05-06 Andrew Fyfe <a.fyfe@tiscali.co.uk>
+
+ * doc/Makefile.am: Fix install path for man page.
+ * Makefiles: Regenerated.
+
2006-08-29 Ben Elliston <bje@gnu.org>
* runtest.exp (usage): Use "triplet" instead of "config name".
@@ -243,6 +253,7 @@
* NEWS: Likewise.
* doc/dejagnu.texi: Regenerate.
+>>>>>>> 1.203
2005-12-24 Ben Elliston <bje@gnu.org>
* Makefile.am (doc/dejagnu.texi): Don't use shell redirection, in
@@ -409,12 +420,14 @@
* config.guess: Update to most recent version.
* config.sub: Likewise.
+>>>>>>> 1.169
2005-09-24 Ben Elliston <bje@gnu.org>
* packaging/pkg/pkginfo (EMAIL): Update mail address.
* lib/rsh.exp: Tidy comments.
+>>>>>>> 1.147
2005-07-07 Ben Elliston <bje@gnu.org>
* lib/telnet.exp (telnet_transmit): Remove; use standard method.
@@ -487,6 +500,7 @@
* config.guess: Update to most recent version.
* config.sub: Likewise.
+>>>>>>> 1.145
2005-04-28 Mark Kettenis <kettenis@gnu.org>
* lib/target.exp (prune_warnings): Add a few more linker
diff --git a/dejagnu.h b/dejagnu.h
index 63f135c..24421e8 100644
--- a/dejagnu.h
+++ b/dejagnu.h
@@ -40,6 +40,8 @@ static int passed;
static int failed;
static int untest;
static int unresolve;
+static int xfailed;
+static int xpassed;
static char buffer[512];
@@ -72,6 +74,19 @@ pass (const char* fmt, ...)
}
inline void
+xpass (const char* fmt, ...)
+{
+ va_list ap;
+
+ passed++;
+ va_start (ap, fmt);
+ vsnprintf (buffer, sizeof (buffer), fmt, ap);
+ va_end (ap);
+ printf ("\tXPASSED: %s\n", buffer);
+ wait ();
+}
+
+inline void
fail (const char* fmt, ...)
{
va_list ap;
@@ -85,6 +100,19 @@ fail (const char* fmt, ...)
}
inline void
+xfail (const char* fmt, ...)
+{
+ va_list ap;
+
+ failed++;
+ va_start (ap, fmt);
+ vsnprintf (buffer, sizeof (buffer), fmt, ap);
+ va_end (ap);
+ printf ("\tXFAILED: %s\n", buffer);
+ wait ();
+}
+
+inline void
untested (const char* fmt, ...)
{
va_list ap;
@@ -127,7 +155,9 @@ totals (void)
{
printf ("\nTotals:\n");
printf ("\t#passed:\t\t%d\n", passed);
- printf ("\t#failed:\t\t%d\n", failed);
+ printf ("\t#real failed:\t\t%d\n", failed);
+ if (xfail)
+ printf ("\t#expected failures:\t\t%d\n", xfailed);
if (untest)
printf ("\t#untested:\t\t%d\n", untest);
if (unresolve)
@@ -142,12 +172,12 @@ totals (void)
#include <string>
const char *outstate_list[] = {
- "FAILED: ", "PASSED: ", "UNTESTED: ", "UNRESOLVED: "
+ "FAILED: ", "PASSED: ", "UNTESTED: ", "UNRESOLVED: ", "XFAILED: ", "XPASSED: "
};
const char ** outstate = outstate_list;
-enum teststate { FAILED, PASSED, UNTESTED, UNRESOLVED} laststate;
+enum teststate { FAILED, PASSED, UNTESTED, UNRESOLVED, XFAILED, XPASSED} laststate;
class TestState {
private:
@@ -159,6 +189,8 @@ class TestState {
passed = 0;
failed = 0;
untest = 0;
+ xpassed = 0;
+ xfailed = 0;
unresolve = 0;
}
@@ -186,6 +218,20 @@ class TestState {
pass (s);
}
+ void xpass (std::string s)
+ {
+ xpassed++;
+ laststate = PASSED;
+ lastmsg = s;
+ std::cout << "\t" << outstate[XPASSED] << s << std::endl;
+ }
+
+ void xpass (const char *c)
+ {
+ std::string s = c;
+ xpass (s);
+ }
+
void fail (std::string s)
{
failed++;
@@ -200,6 +246,20 @@ class TestState {
fail (s);
}
+ void xfail (std::string s)
+ {
+ xfailed++;
+ laststate = XFAILED;
+ lastmsg = s;
+ std::cout << "\t" << outstate[XFAILED] << s << std::endl;
+ }
+
+ void xfail (const char *c)
+ {
+ std::string s = c;
+ xfail (s);
+ }
+
void untested (std::string s)
{
untest++;
@@ -231,7 +291,11 @@ class TestState {
void totals (void)
{
std::cout << "\t#passed:\t\t" << passed << std::endl;
- std::cout << "\t#failed:\t\t" << failed << std::endl;
+ std::cout << "\t#real failed:\t\t" << failed << std::endl;
+ if (xfailed)
+ std::cout << "\t#expected failures:\t\t" << xfailed << std::endl;
+ if (xpassed)
+ std::cout << "\t#unexpected passes:\t\t" << xpassed << std::endl;
if (untest)
std::cout << "\t#untested:\t\t" << untest << std::endl;
if (unresolve)