overte/tools/nitpick/src/TestRailInterface.h
2019-01-15 15:21:48 -08:00

132 lines
No EOL
4.2 KiB
C++

//
// TestRailInterface.h
//
// Created by Nissim Hadar on 6 Jul 2018.
// Copyright 2013 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
#ifndef hifi_test_testrail_interface_h
#define hifi_test_testrail_interface_h
#include "BusyWindow.h"
#include "TestRailTestCasesSelectorWindow.h"
#include "TestRailRunSelectorWindow.h"
#include "TestRailResultsSelectorWindow.h"
#include <QDirIterator>
#include <QtXml/QDomDocument>
#include <QProcess>
#include <QString>
#include "PythonInterface.h"
class TestRailInterface : public QObject {
Q_OBJECT
public:
TestRailInterface();
void createTestSuiteXML(const QString& testDirectory,
const QString& outputDirectory,
const QString& userGitHub,
const QString& branchGitHub);
void createTestSuitePython(const QString& testDirectory,
const QString& outputDirectory,
const QString& userGitHub,
const QString& branchGitHub);
QDomElement processDirectoryXML(const QString& directory,
const QString& useGitHubr,
const QString& branchGitHub,
const QDomElement& element);
QDomElement processTestXML(const QString& fullDirectory,
const QString& test,
const QString& userGitHub,
const QString& branchGitHub,
const QDomElement& element);
void processTestPython(const QString& fullDirectory,
QTextStream& stream,
const QString& userGitHub,
const QString& branchGitHub);
void getReleasesFromTestRail();
void getTestSectionsFromTestRail();
void getRunsFromTestRail();
void createTestRailDotPyScript();
void createStackDotPyScript();
bool requestTestRailTestCasesDataFromUser();
bool requestTestRailRunDataFromUser();
bool requestTestRailResultsDataFromUser();
void createAddTestCasesPythonScript(const QString& testDirectory, const QString& userGitHub, const QString& branchGitHub);
void processDirectoryPython(const QString& directory,
QTextStream& stream,
const QString& userGitHub,
const QString& branchGitHub);
bool isAValidTestDirectory(const QString& directory);
QString getObject(const QString& path);
void updateReleasesComboData(int exitCode, QProcess::ExitStatus exitStatus);
void updateSectionsComboData(int exitCode, QProcess::ExitStatus exitStatus);
void updateRunsComboData(int exitCode, QProcess::ExitStatus exitStatus);
void createTestRailRun(const QString& outputDirectory);
void updateTestRailRunResults(const QString& testResults, const QString& tempDirectory);
void addRun();
void updateRunWithResults();
void extractTestFailuresFromZippedFolder(const QString& testResults, const QString& tempDirectory);
private:
// HighFidelity Interface project ID in TestRail
const int INTERFACE_AUTOMATION_PROJECT_ID{ 26 };
// Rendering suite ID
const int INTERFACE_SUITE_ID{ 1312 };
QDomDocument _document;
BusyWindow _busyWindow;
TestRailTestCasesSelectorWindow _testRailTestCasesSelectorWindow;
TestRailRunSelectorWindow _testRailRunSelectorWindow;
TestRailResultsSelectorWindow _testRailResultsSelectorWindow;
QString _url;
QString _user;
QString _password;
QString _projectID;
QString _suiteID;
QString _testDirectory;
QString _testResults;
QString _outputDirectory;
QString _userGitHub;
QString _branchGitHub;
QStringList _releaseNames;
QStringList _sectionNames;
std::vector<int> _sectionIDs;
QStringList _runNames;
std::vector<int> _runIDs;
QString TEMP_NAME{ "fgadhcUDHSFaidsfh3478JJJFSDFIUSOEIrf" };
PythonInterface* _pythonInterface;
QString _pythonCommand;
};
#endif