Update PipeCaptureTest.MinimalBinaryCrash777973 expected string (#777973)
PipeCapture::OnReadable() has been almost completely re-written but this test is still failing thus: $ ./test_PipeCapture ... [ RUN ] PipeCaptureTest.MinimalBinaryCrash777973 test_PipeCapture.cc:313: Failure Expected: inputstr Of length: 27 To be equal to: capturedstr.raw() Of length: 26 With first binary difference: < 0x00000010 "...!......." A9 C2 A0 21 E2 95 9F E2 88 A9 C2 -- > 0x00000010 "...!......" A9 C2 A0 21 E2 95 9F E2 88 A9 [ FAILED ] PipeCaptureTest.MinimalBinaryCrash777973 (0 ms) ... The OnReadable() code specifically skips invalid bytes which aren't part of valid UTF-8 characters, because they can't be displayed to the user. The final C2 byte is the start of a multi-byte UTF-8 character, so on it's own is invalid. Therefore PipeCapture skips it. Update expected string accordingly. Now the test passes. Bug 777973 - Segmentation fault on bad disk
This commit is contained in:
parent
b5b3d199f8
commit
0a3e8487a0
|
@ -18,7 +18,8 @@
|
|||
*
|
||||
* All the tests work by creating a pipe(3) and using a separate thread to write data into
|
||||
* the pipe with PipeCapture running in the initial thread. Captured data is then checked
|
||||
* that it matches the input.
|
||||
* that it either matches the input or different expected output depending on the features
|
||||
* being tested.
|
||||
*/
|
||||
|
||||
#include "PipeCapture.h"
|
||||
|
@ -156,6 +157,7 @@ protected:
|
|||
static const size_t WriterFD = 1;
|
||||
|
||||
std::string inputstr;
|
||||
std::string expectedstr;
|
||||
Glib::ustring capturedstr;
|
||||
bool eof_signalled;
|
||||
unsigned update_signalled;
|
||||
|
@ -315,7 +317,10 @@ TEST_F( PipeCaptureTest, MinimalBinaryCrash777973 )
|
|||
pc.signal_eof.connect( sigc::mem_fun( *this, &PipeCaptureTest::eof_callback ) );
|
||||
pc.connect_signal();
|
||||
run_writer_thread();
|
||||
EXPECT_BINARYSTRINGEQ( inputstr, capturedstr.raw() );
|
||||
// Final \xC2 byte is part of an incomplete UTF-8 character so will be skipped by
|
||||
// PipeCapture.
|
||||
expectedstr = "/LOST.DIR/!\xE2\x95\x9F\xE2\x88\xA9\xC2\xA0!\xE2\x95\x9F\xE2\x88\xA9";
|
||||
EXPECT_BINARYSTRINGEQ( expectedstr, capturedstr.raw() );
|
||||
EXPECT_TRUE( eof_signalled );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue