diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2012-02-15 20:57:25 -0500 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2012-02-15 20:57:25 -0500 | 
| commit | fc6d70db8771320f3b1136e76383fc85ddf1b6b2 (patch) | |
| tree | 8f66c971860b8592c6b2790254fa076f132158ff /indra/llcommon/tests | |
| parent | 56d931216e67a3e59199669bba022c65a9617bb5 (diff) | |
Don't be confused by "\r\n" line endings on pipe on Windows.
These are all very well when we just want to dump the output to a log, or
whatever, but in a unit-test context it matters for comparison.
Diffstat (limited to 'indra/llcommon/tests')
| -rw-r--r-- | indra/llcommon/tests/llprocess_test.cpp | 24 | 
1 files changed, 19 insertions, 5 deletions
| diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 2db17cae97..6d6b888471 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -288,6 +288,22 @@ public:      LLError::Settings* mOldSettings;  }; +std::string getline(std::istream& in) +{ +    std::string line; +    std::getline(in, line); +    // Blur the distinction between "\r\n" and plain "\n". std::getline() will +    // have eaten the "\n", but we could still end up with a trailing "\r". +    std::string::size_type lastpos = line.find_last_not_of("\r"); +    if (lastpos != std::string::npos) +    { +        // Found at least one character that's not a trailing '\r'. SKIP OVER +        // IT and then erase the rest of the line. +        line.erase(lastpos+1); +    } +    return line; +} +  /*****************************************************************************  *   TUT  *****************************************************************************/ @@ -1010,17 +1026,15 @@ namespace tut              yield();          }          ensure("script never started", i < timeout); -        std::string line; -        std::getline(childout.get_istream(), line); -        ensure_equals("bad wakeup from stdin/stdout script", line, "ok"); +        ensure_equals("bad wakeup from stdin/stdout script", +                      getline(childout.get_istream()), "ok");          py.mPy->getWritePipe().get_ostream() << "go" << std::endl;          for (i = 0; i < timeout && py.mPy->isRunning() && ! childout.contains("\n"); ++i)          {              yield();          }          ensure("script never replied", childout.contains("\n")); -        std::getline(childout.get_istream(), line); -        ensure_equals("child didn't ack", line, "ack"); +        ensure_equals("child didn't ack", getline(childout.get_istream()), "ack");          ensure_equals("bad child termination", py.mPy->getStatus().mState, LLProcess::EXITED);          ensure_equals("bad child exit code",   py.mPy->getStatus().mData,  0);      } | 
