Commit 5b936897 authored by Christian Stenger's avatar Christian Stenger
Browse files

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: default avatarDavid Schulz <david.schulz@theqtcompany.com>
parent fa28f1cb
......@@ -34,6 +34,12 @@
namespace Autotest {
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 ***************************/
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)
{
const CPlusPlus::Overview o;
......@@ -177,13 +178,21 @@ bool TestQmlVisitor::visit(QmlJS::AST::UiScriptBinding *ast)
bool TestQmlVisitor::visit(QmlJS::AST::FunctionDeclaration *ast)
{
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();
TestCodeLocationAndType locationAndType;
locationAndType.m_fileName = m_currentDoc->fileName();
locationAndType.m_line = sourceLocation.startLine;
locationAndType.m_column = sourceLocation.startColumn - 1;
locationAndType.m_type = TestTreeItem::TEST_FUNCTION;
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;
m_testFunctions.insert(name.toString(), locationAndType);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment