forked from qt-creator/qt-creator
AutoTest: Test execution from result output pane
Enable test execution via context menu in the result output pane. At the moment only gtest is supported. Task-number: QTCREATORBUG-16695 Change-Id: Ib39164c3cb44d249647b11e25dc51c9ac5db89c5 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -144,7 +144,7 @@ TestResultsPane::TestResultsPane(QObject *parent) :
|
||||
connect(m_treeView, &Utils::TreeView::customContextMenuRequested,
|
||||
this, &TestResultsPane::onCustomContextMenuRequested);
|
||||
connect(m_treeView, &ResultsTreeView::copyShortcutTriggered, [this] () {
|
||||
onCopyItemTriggered(m_treeView->currentIndex());
|
||||
onCopyItemTriggered(getTestResult(m_treeView->currentIndex()));
|
||||
});
|
||||
connect(m_model, &TestResultModel::requestExpansion, [this] (QModelIndex idx) {
|
||||
m_treeView->expand(m_filterModel->mapFromSource(idx));
|
||||
@@ -562,11 +562,12 @@ void TestResultsPane::onCustomContextMenuRequested(const QPoint &pos)
|
||||
{
|
||||
const bool resultsAvailable = m_filterModel->hasResults();
|
||||
const bool enabled = !m_testRunning && resultsAvailable;
|
||||
const QModelIndex clicked = m_treeView->indexAt(pos);
|
||||
const TestResult *clicked = getTestResult(m_treeView->indexAt(pos));
|
||||
QMenu menu;
|
||||
|
||||
QAction *action = new QAction(tr("Copy"), &menu);
|
||||
action->setShortcut(QKeySequence(QKeySequence::Copy));
|
||||
action->setEnabled(resultsAvailable);
|
||||
action->setEnabled(resultsAvailable && clicked);
|
||||
connect(action, &QAction::triggered, [this, clicked] () {
|
||||
onCopyItemTriggered(clicked);
|
||||
});
|
||||
@@ -582,14 +583,36 @@ void TestResultsPane::onCustomContextMenuRequested(const QPoint &pos)
|
||||
connect(action, &QAction::triggered, this, &TestResultsPane::onSaveWholeTriggered);
|
||||
menu.addAction(action);
|
||||
|
||||
action = new QAction(tr("Run This Test"), &menu);
|
||||
action->setEnabled(clicked && clicked->findTestTreeItem());
|
||||
connect(action, &QAction::triggered, this, [this, clicked] {
|
||||
onRunThisTestTriggered(TestRunMode::Run, clicked);
|
||||
});
|
||||
menu.addAction(action);
|
||||
|
||||
action = new QAction(tr("Debug This Test"), &menu);
|
||||
action->setEnabled(clicked && clicked->findTestTreeItem());
|
||||
connect(action, &QAction::triggered, this, [this, clicked] {
|
||||
onRunThisTestTriggered(TestRunMode::Debug, clicked);
|
||||
});
|
||||
menu.addAction(action);
|
||||
|
||||
menu.exec(m_treeView->mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void TestResultsPane::onCopyItemTriggered(const QModelIndex &idx)
|
||||
const TestResult *TestResultsPane::getTestResult(const QModelIndex &idx)
|
||||
{
|
||||
if (!idx.isValid())
|
||||
return;
|
||||
return nullptr;
|
||||
|
||||
const TestResult *result = m_filterModel->testResult(idx);
|
||||
QTC_CHECK(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void TestResultsPane::onCopyItemTriggered(const TestResult *result)
|
||||
{
|
||||
QTC_ASSERT(result, return);
|
||||
QApplication::clipboard()->setText(result->outputString(true));
|
||||
}
|
||||
@@ -614,6 +637,16 @@ void TestResultsPane::onSaveWholeTriggered()
|
||||
}
|
||||
}
|
||||
|
||||
void TestResultsPane::onRunThisTestTriggered(TestRunMode runMode, const TestResult *result)
|
||||
{
|
||||
QTC_ASSERT(result, return);
|
||||
|
||||
const TestTreeItem *item = result->findTestTreeItem();
|
||||
|
||||
if (item)
|
||||
TestRunner::instance()->runTest(runMode, item);
|
||||
}
|
||||
|
||||
void TestResultsPane::toggleOutputStyle()
|
||||
{
|
||||
const bool displayText = m_outputWidget->currentIndex() == 0;
|
||||
|
||||
Reference in New Issue
Block a user