forked from qt-creator/qt-creator
		
	Change-Id: If02fedb7c191492ddfaf2eb34e74fcdb7a007c94 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
		
			
				
	
	
		
			124 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/****************************************************************************
 | 
						|
**
 | 
						|
** Copyright (C) 2015 The Qt Company Ltd
 | 
						|
** All rights reserved.
 | 
						|
** For any questions to The Qt Company, please use contact form at
 | 
						|
** http://www.qt.io/contact-us
 | 
						|
**
 | 
						|
** 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 The Qt Company.
 | 
						|
**
 | 
						|
** If you have questions regarding the use of this file, please use
 | 
						|
** contact form at http://www.qt.io/contact-us
 | 
						|
**
 | 
						|
****************************************************************************/
 | 
						|
 | 
						|
#ifndef TESTCODEPARSER_H
 | 
						|
#define TESTCODEPARSER_H
 | 
						|
 | 
						|
#include "testtreeitem.h"
 | 
						|
#include "testtreemodel.h"
 | 
						|
 | 
						|
#include <cplusplus/CppDocument.h>
 | 
						|
 | 
						|
#include <qmljs/qmljsdocument.h>
 | 
						|
 | 
						|
#include <QObject>
 | 
						|
#include <QMap>
 | 
						|
 | 
						|
namespace Core {
 | 
						|
class Id;
 | 
						|
}
 | 
						|
 | 
						|
namespace Autotest {
 | 
						|
namespace Internal {
 | 
						|
 | 
						|
struct TestCodeLocationAndType;
 | 
						|
class TestInfo;
 | 
						|
class UnnamedQuickTestInfo;
 | 
						|
 | 
						|
class TestCodeParser : public QObject
 | 
						|
{
 | 
						|
    Q_OBJECT
 | 
						|
public:
 | 
						|
    enum State {
 | 
						|
        Idle,
 | 
						|
        PartialParse,
 | 
						|
        FullParse,
 | 
						|
        Disabled
 | 
						|
    };
 | 
						|
 | 
						|
    explicit TestCodeParser(TestTreeModel *parent = 0);
 | 
						|
    virtual ~TestCodeParser();
 | 
						|
    void setState(State state);
 | 
						|
 | 
						|
#ifdef WITH_TESTS
 | 
						|
    int autoTestsCount() const;
 | 
						|
    int namedQuickTestsCount() const;
 | 
						|
    int unnamedQuickTestsCount() const;
 | 
						|
#endif
 | 
						|
 | 
						|
signals:
 | 
						|
    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);
 | 
						|
    void parsingStarted();
 | 
						|
    void parsingFinished();
 | 
						|
    void partialParsingFinished();
 | 
						|
 | 
						|
public slots:
 | 
						|
    void emitUpdateTestTree();
 | 
						|
    void updateTestTree();
 | 
						|
    void checkDocumentForTestCode(CPlusPlus::Document::Ptr document);
 | 
						|
    void handleQtQuickTest(CPlusPlus::Document::Ptr document);
 | 
						|
 | 
						|
    void onCppDocumentUpdated(const CPlusPlus::Document::Ptr &document);
 | 
						|
    void onQmlDocumentUpdated(const QmlJS::Document::Ptr &document);
 | 
						|
    void removeFiles(const QStringList &files);
 | 
						|
    void onProFileEvaluated();
 | 
						|
 | 
						|
private:
 | 
						|
    bool postponed(const QStringList &fileList);
 | 
						|
    void scanForTests(const QStringList &fileList = QStringList());
 | 
						|
    void clearCache();
 | 
						|
    void removeTestsIfNecessary(const QString &fileName);
 | 
						|
    void removeTestsIfNecessaryByProFile(const QString &proFile);
 | 
						|
 | 
						|
    void onTaskStarted(Core::Id type);
 | 
						|
    void onAllTasksFinished(Core::Id type);
 | 
						|
    void onFinished();
 | 
						|
    void onPartialParsingFinished();
 | 
						|
    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);
 | 
						|
    void removeUnnamedQuickTestsByName(const QString &fileName);
 | 
						|
 | 
						|
    TestTreeModel *m_model;
 | 
						|
    QMap<QString, TestInfo> m_cppDocMap;
 | 
						|
    QMap<QString, TestInfo> m_quickDocMap;
 | 
						|
    QList<UnnamedQuickTestInfo> m_unnamedQuickDocList;
 | 
						|
    bool m_parserEnabled;
 | 
						|
    bool m_pendingUpdate;
 | 
						|
    bool m_fullUpdatePostPoned;
 | 
						|
    bool m_partialUpdatePostPoned;
 | 
						|
    QSet<QString> m_postPonedFiles;
 | 
						|
    State m_parserState;
 | 
						|
};
 | 
						|
 | 
						|
} // namespace Internal
 | 
						|
} // Autotest
 | 
						|
 | 
						|
#endif // TESTCODEPARSER_H
 |