diff options
author | Benoit Foucher <benoit@zeroc.com> | 2016-03-31 08:38:29 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2016-03-31 08:38:29 +0200 |
commit | 04c83affba981565fcca3b3bfa2a3d96ca331c81 (patch) | |
tree | 8cf749969ff9209645130bb8e4433d837c77c6d6 /cpp/test/IceUtil/stacktrace/Client.cpp | |
parent | Merge remote-tracking branch 'origin/3.6' (diff) | |
parent | Fixed Glacier2 bug which would cause hang on shutdown (diff) | |
download | ice-04c83affba981565fcca3b3bfa2a3d96ca331c81.tar.bz2 ice-04c83affba981565fcca3b3bfa2a3d96ca331c81.tar.xz ice-04c83affba981565fcca3b3bfa2a3d96ca331c81.zip |
Merge remote-tracking branch 'origin/3.6'
Diffstat (limited to 'cpp/test/IceUtil/stacktrace/Client.cpp')
-rw-r--r-- | cpp/test/IceUtil/stacktrace/Client.cpp | 78 |
1 files changed, 51 insertions, 27 deletions
diff --git a/cpp/test/IceUtil/stacktrace/Client.cpp b/cpp/test/IceUtil/stacktrace/Client.cpp index 7e12df183d6..4a16654b698 100644 --- a/cpp/test/IceUtil/stacktrace/Client.cpp +++ b/cpp/test/IceUtil/stacktrace/Client.cpp @@ -224,42 +224,66 @@ int main(int argc, char* argv[]) filename += ".Linux"; #endif - ifstream ifs(filename.c_str()); - stringstream sstr; - sstr << ifs.rdbuf(); + while(true) + { + ifstream ifs(filename.c_str()); + stringstream sstr; + sstr << ifs.rdbuf(); #if defined(__APPLE__) - string expected = sstr.str(); - standardizeVersion(expected); + string expected = sstr.str(); + standardizeVersion(expected); #else - vector<string> expected = splitLines(sstr.str()); + vector<string> expected = splitLines(sstr.str()); #endif - ThrowerPtr thrower = new Thrower(); - try - { - thrower->first(); - } - catch(const IceUtil::Exception& ex) - { - string stack = ex.ice_stackTrace(); -#ifdef __APPLE__ - standardizeVersion(stack); - if(expected.size() < stack.size()) + ThrowerPtr thrower = new Thrower(); + try { - test(stack.compare(0, expected.size(), expected) == 0); + thrower->first(); } - else + catch(const IceUtil::Exception& ex) { - test(stack == expected); - } + string stack = ex.ice_stackTrace(); +#ifdef __APPLE__ + standardizeVersion(stack); + if(expected.size() < stack.size()) + { + test(stack.compare(0, expected.size(), expected) == 0); + } + else + { + test(stack == expected); + } + break; #else - vector<string> actual = splitLines(stack); - test(expected.size() <= actual.size()); - for(size_t i = 0; i < expected.size(); ++i) - { - test(actual[i].find(expected[i]) != string::npos); - } + vector<string> actual = splitLines(stack); + test(expected.size() <= actual.size()); + for(size_t i = 0; i < expected.size(); ++i) + { + if(actual[i].find(expected[i]) == string::npos) + { +#if defined(_WIN32) && defined(NDEBUG) + // + // With windows optimized builds retry with the alternate + // expect file. + // + if(filename != "StackTrace.release.Win32") + { + filename = "StackTrace.release.Win32"; + continue; + } + else + { + test(false); + } +#else + test(false); +#endif + } + } + break; #endif + } } cout << "ok" << endl; #else |