From 484bce6d53c77ec8be8df6ca43cac52dc7e402a5 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Wed, 10 Aug 2011 12:06:10 +0200 Subject: tests: fixed crash of tst_qdialog This test assumed that C++ exceptions could always be caught by the event loop. This is not the case when the Glib event loop is used. Skip the relevant portion of the test in that case. Change-Id: I2ad83386025a98f6c32202700c97e04ef3dff343 Reviewed-by: Kalle Lehtonen Reviewed-by: Sergio Ahumada (cherry picked from commit 569cd194d20e61d35768b210b4351f4eeb5c1ef8) --- tests/auto/qdialog/tst_qdialog.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/auto/qdialog/tst_qdialog.cpp b/tests/auto/qdialog/tst_qdialog.cpp index 6d9f798..86dde21 100644 --- a/tests/auto/qdialog/tst_qdialog.cpp +++ b/tests/auto/qdialog/tst_qdialog.cpp @@ -467,6 +467,22 @@ void tst_QDialog::throwInExec() #if defined(Q_WS_MAC) || (defined(Q_WS_WINCE) && defined(_ARM_)) QSKIP("Throwing exceptions in exec() is not supported on this platform.", SkipAll); #endif + +#if defined(Q_OS_LINUX) + // C++ exceptions can't be passed through glib callbacks. Skip the test if + // we're using the glib event loop. + QByteArray dispatcher = QAbstractEventDispatcher::instance()->metaObject()->className(); + if (dispatcher.contains("Glib")) { + QSKIP( + qPrintable(QString( + "Throwing exceptions in exec() won't work if %1 event dispatcher is used.\n" + "Try running with QT_NO_GLIB=1 in environment." + ).arg(QString::fromLatin1(dispatcher))), + SkipAll + ); + } +#endif + int caughtExceptions = 0; try { ExceptionDialog dialog; -- cgit v0.12 From 257477c65834570ddad6cfe804b2f0b132306b1c Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Tue, 9 Aug 2011 16:30:46 +0200 Subject: tests: Skip `qaudioinput' tests if there is no audio backend available This code was always passing when no audio backend was available, skip the tests in this case instead. Change-Id: I4c0060ff144fa497a21823ffcab101ff68b84e17 Reviewed-by: Rohan McGovern --- tests/auto/qaudioinput/tst_qaudioinput.cpp | 133 +++++++++++++++-------------- 1 file changed, 70 insertions(+), 63 deletions(-) diff --git a/tests/auto/qaudioinput/tst_qaudioinput.cpp b/tests/auto/qaudioinput/tst_qaudioinput.cpp index 6025bdb..0004c42 100644 --- a/tests/auto/qaudioinput/tst_qaudioinput.cpp +++ b/tests/auto/qaudioinput/tst_qaudioinput.cpp @@ -86,14 +86,14 @@ void tst_QAudioInput::initTestCase() // Only perform tests if audio input device exists! QList devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); - if(devices.size() > 0) + if (devices.size() > 0) available = true; else { qWarning()<<"NOTE: no audio input device found, no test will be performed"; available = false; } - if(available) + if (available) audio = new QAudioInput(format, this); } @@ -124,6 +124,9 @@ void tst_QAudioInput::invalidFormat_data() void tst_QAudioInput::invalidFormat() { + if (!available) + QSKIP("No audio input device found, no test will be performed", SkipAll); + QFETCH(QAudioFormat, invalidFormat); QAudioInput audioInput(invalidFormat, this); @@ -140,81 +143,85 @@ void tst_QAudioInput::invalidFormat() void tst_QAudioInput::settings() { - if(available) { - // Confirm the setting we added in the init function. - QAudioFormat f = audio->format(); - - QVERIFY(format.channels() == f.channels()); - QVERIFY(format.frequency() == f.frequency()); - QVERIFY(format.sampleSize() == f.sampleSize()); - QVERIFY(format.codec() == f.codec()); - QVERIFY(format.byteOrder() == f.byteOrder()); - QVERIFY(format.sampleType() == f.sampleType()); - } + if (!available) + QSKIP("No audio input device found, no test will be performed", SkipAll); + + // Confirm the setting we added in the init function. + QAudioFormat f = audio->format(); + + QVERIFY(format.channels() == f.channels()); + QVERIFY(format.frequency() == f.frequency()); + QVERIFY(format.sampleSize() == f.sampleSize()); + QVERIFY(format.codec() == f.codec()); + QVERIFY(format.byteOrder() == f.byteOrder()); + QVERIFY(format.sampleType() == f.sampleType()); } void tst_QAudioInput::buffers() { - if(available) { - // Should always have a buffer size greater than zero. - int store = audio->bufferSize(); - audio->setBufferSize(4096); - QVERIFY(audio->bufferSize() > 0); - audio->setBufferSize(store); - QVERIFY(audio->bufferSize() == store); - } + if (!available) + QSKIP("No audio input device found, no test will be performed", SkipAll); + + // Should always have a buffer size greater than zero. + int store = audio->bufferSize(); + audio->setBufferSize(4096); + QVERIFY(audio->bufferSize() > 0); + audio->setBufferSize(store); + QVERIFY(audio->bufferSize() == store); } void tst_QAudioInput::notifyInterval() { - if(available) { - QVERIFY(audio->notifyInterval() == 1000); // Default + if (!available) + QSKIP("No audio input device found, no test will be performed", SkipAll); - audio->setNotifyInterval(500); - QVERIFY(audio->notifyInterval() == 500); // Custom + QVERIFY(audio->notifyInterval() == 1000); // Default - audio->setNotifyInterval(1000); // reset - } + audio->setNotifyInterval(500); + QVERIFY(audio->notifyInterval() == 500); // Custom + + audio->setNotifyInterval(1000); // reset } void tst_QAudioInput::pullFile() { - if(available) { - QFile filename(SRCDIR"test.raw"); - filename.open( QIODevice::WriteOnly | QIODevice::Truncate ); - - QSignalSpy readSignal(audio, SIGNAL(notify())); - QSignalSpy stateSignal(audio, SIGNAL(stateChanged(QAudio::State))); - - // Always have default states, before start - QVERIFY(audio->state() == QAudio::StoppedState); - QVERIFY(audio->error() == QAudio::NoError); - QVERIFY(audio->elapsedUSecs() == 0); - - audio->start(&filename); - QTest::qWait(20); - // Check state and periodSize() are valid non-zero values. - QVERIFY(audio->state() == QAudio::ActiveState); - QVERIFY(audio->error() == QAudio::NoError); - QVERIFY(audio->elapsedUSecs() > 10000 && audio->elapsedUSecs() < 800000); - QVERIFY(audio->periodSize() > 0); - QVERIFY(stateSignal.count() == 1); // State changed to QAudio::ActiveState - - // Wait until finished... - QTest::qWait(5000); - - QVERIFY(readSignal.count() > 0); - QVERIFY(audio->processedUSecs() > 0); - - audio->stop(); - QTest::qWait(20); - QVERIFY(audio->state() == QAudio::StoppedState); - QVERIFY(audio->elapsedUSecs() == 0); - // Can only check to make sure we got at least 1 more signal, but can be more. - QVERIFY(stateSignal.count() > 1); - - filename.close(); - } + if (!available) + QSKIP("No audio input device found, no test will be performed", SkipAll); + + QFile filename(SRCDIR"test.raw"); + filename.open( QIODevice::WriteOnly | QIODevice::Truncate ); + + QSignalSpy readSignal(audio, SIGNAL(notify())); + QSignalSpy stateSignal(audio, SIGNAL(stateChanged(QAudio::State))); + + // Always have default states, before start + QVERIFY(audio->state() == QAudio::StoppedState); + QVERIFY(audio->error() == QAudio::NoError); + QVERIFY(audio->elapsedUSecs() == 0); + + audio->start(&filename); + QTest::qWait(20); + // Check state and periodSize() are valid non-zero values. + QVERIFY(audio->state() == QAudio::ActiveState); + QVERIFY(audio->error() == QAudio::NoError); + QVERIFY(audio->elapsedUSecs() > 10000 && audio->elapsedUSecs() < 800000); + QVERIFY(audio->periodSize() > 0); + QVERIFY(stateSignal.count() == 1); // State changed to QAudio::ActiveState + + // Wait until finished... + QTest::qWait(5000); + + QVERIFY(readSignal.count() > 0); + QVERIFY(audio->processedUSecs() > 0); + + audio->stop(); + QTest::qWait(20); + QVERIFY(audio->state() == QAudio::StoppedState); + QVERIFY(audio->elapsedUSecs() == 0); + // Can only check to make sure we got at least 1 more signal, but can be more. + QVERIFY(stateSignal.count() > 1); + + filename.close(); } QTEST_MAIN(tst_QAudioInput) -- cgit v0.12