079cceaec6
- Fix testsuite. - Resolves: #225679
94 lines
3.0 KiB
Diff
94 lines
3.0 KiB
Diff
diff -Burp dejagnu-1.4.4/testsuite/libdejagnu/unit.cc dejagnu-1.4.4-pm/testsuite/libdejagnu/unit.cc
|
|
--- dejagnu-1.4.4/testsuite/libdejagnu/unit.cc 2003-08-17 03:33:06.000000000 +0200
|
|
+++ dejagnu-1.4.4-pm/testsuite/libdejagnu/unit.cc 2007-10-03 18:31:03.000000000 +0200
|
|
@@ -7,6 +7,7 @@
|
|
#include <fstream>
|
|
#include <set>
|
|
#include <dejagnu.h>
|
|
+#include <sstream>
|
|
|
|
using namespace std;
|
|
|
|
@@ -49,12 +50,8 @@ main (int argc, char *argv[]) {
|
|
// 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];
|
|
-#ifdef __STDC_HOSTED__
|
|
- cout.rdbuf()->pubsetbuf(bbuuff, 5120);
|
|
-#else
|
|
- cout.rdbuf()->setbuf(bbuuff, 5120);
|
|
-#endif
|
|
+ stringstream stream;
|
|
+ streambuf * buf = cout.rdbuf(stream.rdbuf());
|
|
|
|
testClass1.tname = "testType1";
|
|
testClass1.tnum = 1;
|
|
@@ -65,53 +62,59 @@ main (int argc, char *argv[]) {
|
|
|
|
// Test the pass message
|
|
test.pass ("bogus pass message for testing");
|
|
+ cout.flush();
|
|
outstate = os2;
|
|
- if (strncmp(bbuuff, "\tPAS: bogus pass message", 22) == 0) {
|
|
+ if (strncmp(stream.str().c_str(), "\tPAS: bogus pass message", 22) == 0) {
|
|
runtest.pass ("Pass message");
|
|
} else {
|
|
runtest.fail ("Pass message");
|
|
}
|
|
+ stream.str("");
|
|
|
|
// 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) {
|
|
+ if (strncmp(stream.str().c_str(), "\tFAI: bogus fail message", 22) == 0) {
|
|
runtest.pass ("Fail message");
|
|
} else {
|
|
runtest.fail ("Fail message");
|
|
}
|
|
+ stream.str("");
|
|
|
|
// 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) {
|
|
+ if (strncmp(stream.str().c_str(), "\tUNT: bogus untested message", 21) == 0) {
|
|
runtest.pass ("Untested message");
|
|
} else {
|
|
runtest.fail ("Untested message");
|
|
}
|
|
+ stream.str("");
|
|
|
|
// 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) {
|
|
+ if (strncmp(stream.str().c_str(), "\tUNR: bogus unresolved message", 21) == 0) {
|
|
runtest.pass ("Unresolved message");
|
|
} else {
|
|
runtest.fail ("Unresolved message");
|
|
}
|
|
+ stream.str("");
|
|
|
|
// 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)) {
|
|
+ if (regexec (®ex_pat, stream.str().c_str(), 0, (regmatch_t *)0, 0)) {
|
|
runtest.pass ("Totals message");
|
|
} else {
|
|
runtest.fail ("Totals message");
|
|
}
|
|
-}
|
|
-
|
|
+ stream.str("");
|
|
|
|
+ cout.rdbuf(buf);
|
|
+}
|