From b22fdf72aed1d6ab5e073f6cd1eee26de59a5b4f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 13 Jun 2012 09:20:13 +0200 Subject: QFile-test: Test for redirected handles in standard streams test. This is similar to 2509a5b5a49ea52948b434578ff29e7f9ba60b40 in Qt 5 (qtbase). In 4.8, stdout also seems to be affected, whereas in Qt 5, the problem occurred for stdin. Task-number: QTQAINFRA-428 Change-Id: Ia644923bdb76d0ac3c218c843fefcf280ee729cb Reviewed-by: Rohan McGovern --- tests/auto/qfile/tst_qfile.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/tests/auto/qfile/tst_qfile.cpp b/tests/auto/qfile/tst_qfile.cpp index 40534d3..5bed1e7 100644 --- a/tests/auto/qfile/tst_qfile.cpp +++ b/tests/auto/qfile/tst_qfile.cpp @@ -3194,29 +3194,34 @@ void tst_QFile::openStandardStreamsFileDescriptors() //it does not have functions to simply open them like below . QSKIP("Opening standard streams on Windows CE via descriptor not implemented", SkipAll); #endif - // Using file descriptors + /* in/out/err.isSequential() are only true when run in a console (CI); + * it is false when they are redirected from/to files. + * Prevent failures in case someone runs tests with stdout/stderr redirected. */ { QFile in; in.open(STDIN_FILENO, QIODevice::ReadOnly); + if (!in.isSequential()) + QSKIP("Standard input redirected.", SkipSingle); QCOMPARE( in.pos(), (qint64)0 ); QCOMPARE( in.size(), (qint64)0 ); - QVERIFY( in.isSequential() ); } { QFile out; out.open(STDOUT_FILENO, QIODevice::WriteOnly); + if (!out.isSequential()) + QSKIP("Standard output redirected.", SkipSingle); QCOMPARE( out.pos(), (qint64)0 ); QCOMPARE( out.size(), (qint64)0 ); - QVERIFY( out.isSequential() ); } { QFile err; err.open(STDERR_FILENO, QIODevice::WriteOnly); + if (!err.isSequential()) + QSKIP("Standard error redirected.", SkipSingle); QCOMPARE( err.pos(), (qint64)0 ); QCOMPARE( err.size(), (qint64)0 ); - QVERIFY( err.isSequential() ); } } @@ -3227,27 +3232,33 @@ void tst_QFile::openStandardStreamsBufferedStreams() #endif // Using streams { + /* in/out/err.isSequential() are only true when run in a console (CI); + * it is false when they are redirected from/to files. + * Prevent failures in case someone runs tests with stdout/stderr redirected. */ QFile in; in.open(stdin, QIODevice::ReadOnly); + if (!in.isSequential()) + QSKIP("Standard input redirected.", SkipSingle); QCOMPARE( in.pos(), (qint64)0 ); QCOMPARE( in.size(), (qint64)0 ); - QVERIFY( in.isSequential() ); } { QFile out; out.open(stdout, QIODevice::WriteOnly); + if (!out.isSequential()) + QSKIP("Standard output redirected.", SkipSingle); QCOMPARE( out.pos(), (qint64)0 ); QCOMPARE( out.size(), (qint64)0 ); - QVERIFY( out.isSequential() ); } { QFile err; err.open(stderr, QIODevice::WriteOnly); + if (!err.isSequential()) + QSKIP("Standard error redirected.", SkipSingle); QCOMPARE( err.pos(), (qint64)0 ); QCOMPARE( err.size(), (qint64)0 ); - QVERIFY( err.isSequential() ); } } -- cgit v0.12