QSortFilterProxyModel test: fix failing appearsAndSort

Testcase appearsAndSort failed when running the complete testcase but
not as single test. More irritating was the fact that the error was in
QAbstractItemModelTester::headerDataChanged() but the affected test did
not change any header nor does it use the blamed model...
The reason for this is, that QAbstractProxyModel emits a queued
headerDataChanged signal when the header item count changes and
therefore only evaluated when the event loop is run.
Fix it by calling processEvents() after the rowCount change in
filterColumns().
Amends 72e802f3b0

Pick-to: 6.6 6.5
Change-Id: I10cb5aa9c40a6925113cc9c23616774bf15784a4
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Christian Ehrlicher 2023-07-06 21:12:31 +02:00
parent e115d28ce7
commit cdc608359a

View File

@ -62,6 +62,7 @@ void tst_QSortFilterProxyModel::cleanup()
m_proxy->sort(-1, Qt::AscendingOrder); m_proxy->sort(-1, Qt::AscendingOrder);
m_model->clear(); m_model->clear();
m_model->insertColumns(0, 1); m_model->insertColumns(0, 1);
QCoreApplication::processEvents(); // cleanup possibly queued events
} }
/* /*
@ -1100,7 +1101,6 @@ void tst_QSortFilterProxyModel::filterColumns_data()
<< "bravo" << "bravo"
<< "lima") << "lima")
<< true; << true;
QTest::newRow("some") << "lie" QTest::newRow("some") << "lie"
<< (QStringList() << (QStringList()
<< "charlie" << "charlie"
@ -1126,6 +1126,7 @@ void tst_QSortFilterProxyModel::filterColumns()
// prepare model // prepare model
m_model->setColumnCount(initial.size()); m_model->setColumnCount(initial.size());
m_model->setRowCount(1); m_model->setRowCount(1);
QCoreApplication::processEvents(); // QAbstractProxyModel queues the headerDataChanged() signal
QCOMPARE(m_model->columnCount(QModelIndex()), initial.size()); QCOMPARE(m_model->columnCount(QModelIndex()), initial.size());
QCOMPARE(m_model->rowCount(QModelIndex()), 1); QCOMPARE(m_model->rowCount(QModelIndex()), 1);
// set data // set data