forked from qt-creator/qt-creator
Detect special functions for Quick Tests
Quick Tests are capable of having benchmarks, data driven tests and special functions (init/cleanup/...) as well. Change-Id: Ieb9b6b1f842f1211a9d3192b486f789c987fa27b Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
@@ -34,6 +34,12 @@
|
|||||||
namespace Autotest {
|
namespace Autotest {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
// names of special functions (applies for QTest as well as Quick Tests)
|
||||||
|
static QList<QString> specialFunctions = QList<QString>() << QLatin1String("initTestCase")
|
||||||
|
<< QLatin1String("cleanupTestCase")
|
||||||
|
<< QLatin1String("init")
|
||||||
|
<< QLatin1String("cleanup");
|
||||||
|
|
||||||
/************************** Cpp Test Symbol Visitor ***************************/
|
/************************** Cpp Test Symbol Visitor ***************************/
|
||||||
|
|
||||||
TestVisitor::TestVisitor(const QString &fullQualifiedClassName)
|
TestVisitor::TestVisitor(const QString &fullQualifiedClassName)
|
||||||
@@ -45,11 +51,6 @@ TestVisitor::~TestVisitor()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static QList<QString> specialFunctions = QList<QString>() << QLatin1String("initTestCase")
|
|
||||||
<< QLatin1String("cleanupTestCase")
|
|
||||||
<< QLatin1String("init")
|
|
||||||
<< QLatin1String("cleanup");
|
|
||||||
|
|
||||||
bool TestVisitor::visit(CPlusPlus::Class *symbol)
|
bool TestVisitor::visit(CPlusPlus::Class *symbol)
|
||||||
{
|
{
|
||||||
const CPlusPlus::Overview o;
|
const CPlusPlus::Overview o;
|
||||||
@@ -177,12 +178,20 @@ bool TestQmlVisitor::visit(QmlJS::AST::UiScriptBinding *ast)
|
|||||||
bool TestQmlVisitor::visit(QmlJS::AST::FunctionDeclaration *ast)
|
bool TestQmlVisitor::visit(QmlJS::AST::FunctionDeclaration *ast)
|
||||||
{
|
{
|
||||||
const QStringRef name = ast->name;
|
const QStringRef name = ast->name;
|
||||||
if (name.startsWith(QLatin1String("test_"))) {
|
if (name.startsWith(QLatin1String("test_"))
|
||||||
|
|| name.startsWith(QLatin1String("benchmark_"))
|
||||||
|
|| name.endsWith(QLatin1String("_data"))
|
||||||
|
|| specialFunctions.contains(name.toString())) {
|
||||||
const auto sourceLocation = ast->firstSourceLocation();
|
const auto sourceLocation = ast->firstSourceLocation();
|
||||||
TestCodeLocationAndType locationAndType;
|
TestCodeLocationAndType locationAndType;
|
||||||
locationAndType.m_fileName = m_currentDoc->fileName();
|
locationAndType.m_fileName = m_currentDoc->fileName();
|
||||||
locationAndType.m_line = sourceLocation.startLine;
|
locationAndType.m_line = sourceLocation.startLine;
|
||||||
locationAndType.m_column = sourceLocation.startColumn - 1;
|
locationAndType.m_column = sourceLocation.startColumn - 1;
|
||||||
|
if (specialFunctions.contains(name.toString()))
|
||||||
|
locationAndType.m_type = TestTreeItem::TEST_SPECIALFUNCTION;
|
||||||
|
else if (name.endsWith(QLatin1String("_data")))
|
||||||
|
locationAndType.m_type = TestTreeItem::TEST_DATAFUNCTION;
|
||||||
|
else
|
||||||
locationAndType.m_type = TestTreeItem::TEST_FUNCTION;
|
locationAndType.m_type = TestTreeItem::TEST_FUNCTION;
|
||||||
|
|
||||||
m_testFunctions.insert(name.toString(), locationAndType);
|
m_testFunctions.insert(name.toString(), locationAndType);
|
||||||
|
Reference in New Issue
Block a user