Introduce DolphinMainWindowTest

For now it contains a test case for the crash in bug #379135

CCBUG: 379135

Reviewers: emmanuelp, dfaure

Differential Revision: https://phabricator.kde.org/D5936
This commit is contained in:
Elvis Angelaccio 2017-05-22 11:37:37 +02:00
parent 4216c7e6ba
commit 1faef1c92d
3 changed files with 75 additions and 0 deletions

View file

@ -124,6 +124,7 @@ DolphinMainWindow::DolphinMainWindow() :
setAcceptDrops(true); setAcceptDrops(true);
m_tabWidget = new DolphinTabWidget(this); m_tabWidget = new DolphinTabWidget(this);
m_tabWidget->setObjectName("tabWidget");
connect(m_tabWidget, &DolphinTabWidget::activeViewChanged, connect(m_tabWidget, &DolphinTabWidget::activeViewChanged,
this, &DolphinMainWindow::activeViewChanged); this, &DolphinMainWindow::activeViewChanged);
connect(m_tabWidget, &DolphinTabWidget::tabCountChanged, connect(m_tabWidget, &DolphinTabWidget::tabCountChanged,

View file

@ -52,3 +52,8 @@ LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test)
ecm_add_test(viewpropertiestest.cpp testdir.cpp ecm_add_test(viewpropertiestest.cpp testdir.cpp
TEST_NAME viewpropertiestest TEST_NAME viewpropertiestest
LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test) LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test)
# DolphinMainWindowTest
ecm_add_test(dolphinmainwindowtest.cpp
TEST_NAME dolphinmainwindowtest
LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test)

View file

@ -0,0 +1,69 @@
/***************************************************************************
* Copyright (C) 2017 by Elvis Angelaccio <elvis.angelaccio@kde.org> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#include "dolphinmainwindow.h"
#include "dolphintabpage.h"
#include "dolphintabwidget.h"
#include "dolphinviewcontainer.h"
#include <QTest>
class DolphinMainWindowTest : public QObject
{
Q_OBJECT
private slots:
void init();
void testClosingTabsWithSearchBoxVisible();
private:
QScopedPointer<DolphinMainWindow> m_mainWindow;
};
void DolphinMainWindowTest::init()
{
m_mainWindow.reset(new DolphinMainWindow());
}
// See https://bugs.kde.org/show_bug.cgi?id=379135
void DolphinMainWindowTest::testClosingTabsWithSearchBoxVisible()
{
m_mainWindow->openDirectories({ QUrl::fromLocalFile(QDir::homePath()) }, false);
m_mainWindow->show();
// Without this call the searchbox doesn't get FocusIn events.
QTest::qWaitForWindowExposed(m_mainWindow.data());
QVERIFY(m_mainWindow->isVisible());
auto tabWidget = m_mainWindow->findChild<DolphinTabWidget*>("tabWidget");
QVERIFY(tabWidget);
// Show search box on first tab.
tabWidget->currentTabPage()->activeViewContainer()->setSearchModeEnabled(true);
tabWidget->openNewActivatedTab(QUrl::fromLocalFile(QDir::homePath()));
QCOMPARE(tabWidget->count(), 2);
// Triggers the crash in bug #379135.
tabWidget->closeTab();
QCOMPARE(tabWidget->count(), 1);
}
QTEST_MAIN(DolphinMainWindowTest)
#include "dolphinmainwindowtest.moc"