2014-10-07 12:30:54 +02:00
|
|
|
/****************************************************************************
|
|
|
|
|
**
|
|
|
|
|
** Copyright (C) 2014 Digia Plc
|
|
|
|
|
** All rights reserved.
|
|
|
|
|
** For any questions to Digia, please use contact form at http://qt.digia.com
|
|
|
|
|
**
|
|
|
|
|
** This file is part of the Qt Creator Enterprise Auto Test Add-on.
|
|
|
|
|
**
|
|
|
|
|
** Licensees holding valid Qt Enterprise licenses may use this file in
|
|
|
|
|
** accordance with the Qt Enterprise License Agreement provided with the
|
|
|
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
|
|
|
** a written agreement between you and Digia.
|
|
|
|
|
**
|
|
|
|
|
** If you have questions regarding the use of this file, please use
|
|
|
|
|
** contact form at http://qt.digia.com
|
|
|
|
|
**
|
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
|
|
#ifndef TESTCODEPARSER_H
|
|
|
|
|
#define TESTCODEPARSER_H
|
|
|
|
|
|
2015-02-05 16:07:45 +01:00
|
|
|
#include "testtreeitem.h"
|
|
|
|
|
#include "testtreemodel.h"
|
|
|
|
|
|
2014-10-07 12:30:54 +02:00
|
|
|
#include <cplusplus/CppDocument.h>
|
|
|
|
|
|
2014-11-06 16:01:06 +01:00
|
|
|
#include <qmljs/qmljsdocument.h>
|
|
|
|
|
|
2014-10-07 12:30:54 +02:00
|
|
|
#include <QObject>
|
|
|
|
|
#include <QMap>
|
|
|
|
|
|
2014-12-10 09:41:23 +01:00
|
|
|
namespace Core {
|
|
|
|
|
class Id;
|
|
|
|
|
}
|
|
|
|
|
|
2014-10-07 12:30:54 +02:00
|
|
|
namespace Autotest {
|
|
|
|
|
namespace Internal {
|
|
|
|
|
|
2015-01-27 15:22:17 +01:00
|
|
|
struct TestCodeLocationAndType;
|
2014-10-07 12:30:54 +02:00
|
|
|
class TestInfo;
|
|
|
|
|
|
|
|
|
|
class TestCodeParser : public QObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
public:
|
2015-02-10 14:20:43 +01:00
|
|
|
enum State {
|
|
|
|
|
Idle,
|
|
|
|
|
PartialParse,
|
|
|
|
|
FullParse
|
|
|
|
|
};
|
|
|
|
|
|
2014-10-07 15:51:02 +02:00
|
|
|
explicit TestCodeParser(TestTreeModel *parent = 0);
|
2014-10-28 15:57:13 +01:00
|
|
|
virtual ~TestCodeParser();
|
2014-10-07 12:30:54 +02:00
|
|
|
|
2015-02-10 14:20:43 +01:00
|
|
|
#ifdef WITH_TESTS
|
|
|
|
|
int autoTestsCount() const;
|
|
|
|
|
int namedQuickTestsCount() const;
|
|
|
|
|
int unnamedQuickTestsCount() const;
|
|
|
|
|
#endif
|
|
|
|
|
|
2014-10-07 12:30:54 +02:00
|
|
|
signals:
|
2015-02-05 16:07:45 +01:00
|
|
|
void cacheCleared();
|
|
|
|
|
void testItemCreated(const TestTreeItem &item, TestTreeModel::Type type);
|
|
|
|
|
void testItemsCreated(const QList<TestTreeItem> &itemList, TestTreeModel::Type type);
|
|
|
|
|
void testItemModified(TestTreeItem tItem, TestTreeModel::Type type, const QString &file);
|
|
|
|
|
void testItemsRemoved(const QString &filePath, TestTreeModel::Type type);
|
|
|
|
|
void unnamedQuickTestsUpdated(const QString &filePath, const QString &mainFile,
|
|
|
|
|
const QMap<QString, TestCodeLocationAndType> &functions);
|
|
|
|
|
void unnamedQuickTestsRemoved(const QString &filePath);
|
2015-02-10 14:20:43 +01:00
|
|
|
void parsingFinished();
|
|
|
|
|
void partialParsingFinished();
|
2014-10-07 12:30:54 +02:00
|
|
|
|
|
|
|
|
public slots:
|
2014-12-10 09:41:23 +01:00
|
|
|
void emitUpdateTestTree();
|
2014-10-07 12:30:54 +02:00
|
|
|
void updateTestTree();
|
2015-01-27 15:22:17 +01:00
|
|
|
void checkDocumentForTestCode(CPlusPlus::Document::Ptr document);
|
|
|
|
|
void handleQtQuickTest(CPlusPlus::Document::Ptr document);
|
2014-10-07 12:30:54 +02:00
|
|
|
|
2015-01-27 15:22:17 +01:00
|
|
|
void onCppDocumentUpdated(const CPlusPlus::Document::Ptr &document);
|
|
|
|
|
void onQmlDocumentUpdated(const QmlJS::Document::Ptr &document);
|
2014-10-07 12:30:54 +02:00
|
|
|
void removeFiles(const QStringList &files);
|
2014-11-25 09:32:13 +01:00
|
|
|
void onProFileEvaluated();
|
2014-10-07 12:30:54 +02:00
|
|
|
|
|
|
|
|
private:
|
2015-02-10 14:20:43 +01:00
|
|
|
bool postponed(const QStringList &fileList);
|
2014-11-25 09:32:13 +01:00
|
|
|
void scanForTests(const QStringList &fileList = QStringList());
|
2014-10-28 15:57:13 +01:00
|
|
|
void clearMaps();
|
2014-11-25 09:32:13 +01:00
|
|
|
void removeTestsIfNecessary(const QString &fileName);
|
|
|
|
|
void removeTestsIfNecessaryByProFile(const QString &proFile);
|
2015-02-05 16:07:45 +01:00
|
|
|
|
2014-12-10 09:41:23 +01:00
|
|
|
void onTaskStarted(Core::Id type);
|
|
|
|
|
void onAllTasksFinished(Core::Id type);
|
2015-02-10 14:20:43 +01:00
|
|
|
void onPartialParsingFinished();
|
2015-02-05 16:07:45 +01:00
|
|
|
void updateUnnamedQuickTests(const QString &fileName, const QString &mainFile,
|
|
|
|
|
const QMap<QString, TestCodeLocationAndType> &functions);
|
|
|
|
|
void updateModelAndCppDocMap(CPlusPlus::Document::Ptr document,
|
|
|
|
|
const QString &declaringFile, TestTreeItem &testItem);
|
|
|
|
|
void updateModelAndQuickDocMap(QmlJS::Document::Ptr document,
|
|
|
|
|
const QString &referencingFile, TestTreeItem &testItem);
|
2014-10-07 12:30:54 +02:00
|
|
|
|
|
|
|
|
TestTreeModel *m_model;
|
2014-11-05 10:34:18 +01:00
|
|
|
QMap<QString, TestInfo> m_cppDocMap;
|
2014-11-06 16:01:06 +01:00
|
|
|
QMap<QString, TestInfo> m_quickDocMap;
|
2014-12-10 09:41:23 +01:00
|
|
|
bool m_parserEnabled;
|
|
|
|
|
bool m_pendingUpdate;
|
2015-02-10 14:20:43 +01:00
|
|
|
bool m_fullUpdatePostPoned;
|
|
|
|
|
bool m_partialUpdatePostPoned;
|
|
|
|
|
QSet<QString> m_postPonedFiles;
|
|
|
|
|
State m_parserState;
|
2014-10-07 12:30:54 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace Internal
|
|
|
|
|
} // Autotest
|
|
|
|
|
|
|
|
|
|
#endif // TESTCODEPARSER_H
|