Renaming auto-tester ==> nitpick

This commit is contained in:
NissimHadar 2018-11-08 15:07:32 -08:00
parent f0dd07294e
commit 9b60103f47
56 changed files with 126 additions and 127 deletions

View file

@ -33,6 +33,6 @@ if (BUILD_TOOLS)
add_subdirectory(oven) add_subdirectory(oven)
set_target_properties(oven PROPERTIES FOLDER "Tools") set_target_properties(oven PROPERTIES FOLDER "Tools")
add_subdirectory(auto-tester) add_subdirectory(nitpick)
set_target_properties(auto-tester PROPERTIES FOLDER "Tools") set_target_properties(nitpick PROPERTIES FOLDER "Tools")
endif() endif()

View file

@ -1,4 +1,4 @@
set (TARGET_NAME auto-tester) set (TARGET_NAME nitpick)
project(${TARGET_NAME}) project(${TARGET_NAME})
# Automatically run UIC and MOC. This replaces the older WRAP macros # Automatically run UIC and MOC. This replaces the older WRAP macros
@ -22,7 +22,7 @@ set (QT_LIBRARIES Qt5::Core Qt5::Widgets QT::Gui Qt5::Xml)
if (WIN32) if (WIN32)
# Do not show Console # Do not show Console
set_property (TARGET auto-tester PROPERTY WIN32_EXECUTABLE true) set_property (TARGET nitpick PROPERTY WIN32_EXECUTABLE true)
endif() endif()
target_zlib() target_zlib()

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -1,11 +1,11 @@
# Auto Tester # nitpick
The auto-tester is a stand alone application that provides a mechanism for regression testing. The general idea is simple: Nitpick is a stand alone application that provides a mechanism for regression testing. The general idea is simple:
* Each test folder has a script that produces a set of snapshots. * Each test folder has a script that produces a set of snapshots.
* The snapshots are compared to a 'canonical' set of images that have been produced beforehand. * The snapshots are compared to a 'canonical' set of images that have been produced beforehand.
* The result, if any test failed, is a zipped folder describing the failure. * The result, if any test failed, is a zipped folder describing the failure.
Auto-tester has 5 functions, separated into 4 tabs: Nitpick has 5 functions, separated into 4 tabs:
1. Creating tests, MD files and recursive scripts 1. Creating tests, MD files and recursive scripts
1. Windows task bar utility (Windows only) 1. Windows task bar utility (Windows only)
1. Running tests 1. Running tests
@ -14,12 +14,12 @@ Auto-tester has 5 functions, separated into 4 tabs:
## Installation ## Installation
### Executable ### Executable
1. On Windows: download the installer by browsing to [here](<https://hifi-content.s3.amazonaws.com/nissim/autoTester/AutoTester-Installer-v6.6.exe>). 1. On Windows: download the installer by browsing to [here](<https://hifi-content.s3.amazonaws.com/nissim/nitpick/Nitpick-Installer-v6.6.exe>).
2. Double click on the installer and install to a convenient location 2. Double click on the installer and install to a convenient location
![](./setup_7z.PNG) ![](./setup_7z.PNG)
3. To run the auto-tester, double click **auto-tester.exe**. 3. To run nitpick, double click **nitpick.exe**.
### Python ### Python
The TestRail interface requires Python 3 to be installed. Auto-Tester has been tested with Python 3.7.0 but should work with newer versions. The TestRail interface requires Python 3 to be installed. Nitpick has been tested with Python 3.7.0 but should work with newer versions.
Python 3 can be downloaded from: Python 3 can be downloaded from:
1. Windows installer <https://www.python.org/downloads/> 1. Windows installer <https://www.python.org/downloads/>
@ -41,7 +41,6 @@ Verify that `/usr/local/bin/python3` exists.
1. Enter the AWS account number 1. Enter the AWS account number
1. Enter the secret key 1. Enter the secret key
1. Leave region name and ouput format as default [None] 1. Leave region name and ouput format as default [None]
1. Install the latest release of Boto3 via pip: 1. Install the latest release of Boto3 via pip:
pip install boto3 pip install boto3
#### Mac #### Mac
@ -78,7 +77,7 @@ This function creates an MD file in the (user-selected) tests root folder. The
This function creates a file named `test.md` from a `test.js` script. The user will be asked for the folder containing the test script: This function creates a file named `test.md` from a `test.js` script. The user will be asked for the folder containing the test script:
### Details ### Details
The process to produce the MD file is a simplistic parse of the test script. The process to produce the MD file is a simplistic parse of the test script.
- The string in the `autoTester.perform(...)` function call will be the title of the file - The string in the `nitpick.perform(...)` function call will be the title of the file
- Instructions to run the script are then provided: - Instructions to run the script are then provided:
@ -110,26 +109,26 @@ The various scripts are called in alphabetical order.
An example of a recursive script is as follows: An example of a recursive script is as follows:
``` ```
// This is an automatically generated file, created by auto-tester on Jul 5 2018, 10:19 // This is an automatically generated file, created by nitpick on Jul 5 2018, 10:19
PATH_TO_THE_REPO_PATH_UTILS_FILE = "https://raw.githubusercontent.com/highfidelity/hifi_tests/master/tests/utils/branchUtils.js"; PATH_TO_THE_REPO_PATH_UTILS_FILE = "https://raw.githubusercontent.com/highfidelity/hifi_tests/master/tests/utils/branchUtils.js";
Script.include(PATH_TO_THE_REPO_PATH_UTILS_FILE); Script.include(PATH_TO_THE_REPO_PATH_UTILS_FILE);
var autoTester = createAutoTester(Script.resolvePath(".")); var nitpick = createNitpick(Script.resolvePath("."));
var testsRootPath = autoTester.getTestsRootPath(); var testsRootPath = nitpick.getTestsRootPath();
if (typeof Test !== 'undefined') { if (typeof Test !== 'undefined') {
Test.wait(10000); Test.wait(10000);
}; };
autoTester.enableRecursive(); nitpick.enableRecursive();
autoTester.enableAuto(); nitpick.enableAuto();
Script.include(testsRootPath + "content/overlay/layer/drawInFront/shape/test.js"); Script.include(testsRootPath + "content/overlay/layer/drawInFront/shape/test.js");
Script.include(testsRootPath + "content/overlay/layer/drawInFront/model/test.js"); Script.include(testsRootPath + "content/overlay/layer/drawInFront/model/test.js");
Script.include(testsRootPath + "content/overlay/layer/drawHUDLayer/test.js"); Script.include(testsRootPath + "content/overlay/layer/drawHUDLayer/test.js");
autoTester.runRecursive(); nitpick.runRecursive();
``` ```
## Create all Recursive Scripts ## Create all Recursive Scripts
### Usage ### Usage
@ -186,7 +185,7 @@ Evaluation proceeds in a number of steps:
1. The images are then pair-wise compared, using the SSIM algorithm. A fixed threshold is used to define a mismatch. 1. The images are then pair-wise compared, using the SSIM algorithm. A fixed threshold is used to define a mismatch.
1. In interactive mode - a window is opened showing the expected image, actual image, difference image and error: 1. In interactive mode - a window is opened showing the expected image, actual image, difference image and error:
![](./autoTesterMismatchExample.PNG) ![](./nitpickMismatchExample.PNG)
1. If not in interactive mode, or the user has defined the results as an error, an error is written into the error folder. The error itself is a folder with the 3 images and a small text file containing details. 1. If not in interactive mode, or the user has defined the results as an error, an error is written into the error folder. The error itself is a folder with the 3 images and a small text file containing details.

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 476 KiB

After

Width:  |  Height:  |  Size: 476 KiB

View file

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4 KiB

View file

@ -19,8 +19,8 @@
#include <quazip5/quazip.h> #include <quazip5/quazip.h>
#include <quazip5/JlCompress.h> #include <quazip5/JlCompress.h>
#include "ui/AutoTester.h" #include "ui/Nitpick.h"
extern AutoTester* autoTester; extern Nitpick* nitpick;
#include <math.h> #include <math.h>
@ -30,9 +30,9 @@ Test::Test(QProgressBar* progressBar, QCheckBox* checkBoxInteractiveMode) {
_mismatchWindow.setModal(true); _mismatchWindow.setModal(true);
if (autoTester) { if (nitpick) {
autoTester->setUserText(GIT_HUB_DEFAULT_USER); nitpick->setUserText(GIT_HUB_DEFAULT_USER);
autoTester->setBranchText(GIT_HUB_DEFAULT_BRANCH); nitpick->setBranchText(GIT_HUB_DEFAULT_BRANCH);
} }
} }
@ -240,8 +240,8 @@ void Test::startTestsEvaluation(const bool isRunningFromCommandLine,
_expectedImagesFilenames.clear(); _expectedImagesFilenames.clear();
_expectedImagesFullFilenames.clear(); _expectedImagesFullFilenames.clear();
QString branch = (branchFromCommandLine.isNull()) ? autoTester->getSelectedBranch() : branchFromCommandLine; QString branch = (branchFromCommandLine.isNull()) ? nitpick->getSelectedBranch() : branchFromCommandLine;
QString user = (userFromCommandLine.isNull()) ? autoTester->getSelectedUser() : userFromCommandLine; QString user = (userFromCommandLine.isNull()) ? nitpick->getSelectedUser() : userFromCommandLine;
foreach(QString currentFilename, sortedTestResultsFilenames) { foreach(QString currentFilename, sortedTestResultsFilenames) {
QString fullCurrentFilename = _snapshotDirectory + "/" + currentFilename; QString fullCurrentFilename = _snapshotDirectory + "/" + currentFilename;
@ -268,7 +268,7 @@ void Test::startTestsEvaluation(const bool isRunningFromCommandLine,
} }
} }
autoTester->downloadFiles(expectedImagesURLs, _snapshotDirectory, _expectedImagesFilenames, (void *)this); nitpick->downloadFiles(expectedImagesURLs, _snapshotDirectory, _expectedImagesFilenames, (void *)this);
} }
void Test::finishTestsEvaluation() { void Test::finishTestsEvaluation() {
int numberOfFailures = compareImageLists(); int numberOfFailures = compareImageLists();
@ -288,7 +288,7 @@ void Test::finishTestsEvaluation() {
} }
if (_isRunningInAutomaticTestRun) { if (_isRunningInAutomaticTestRun) {
autoTester->automaticTestRunEvaluationComplete(zippedFolderName, numberOfFailures); nitpick->automaticTestRunEvaluationComplete(zippedFolderName, numberOfFailures);
} }
} }
@ -429,22 +429,22 @@ ExtractedText Test::getTestScriptLines(QString testFileName) {
QString line = stream.readLine(); QString line = stream.readLine();
// Name of test is the string in the following line: // Name of test is the string in the following line:
// autoTester.perform("Apply Material Entities to Avatars", Script.resolvePath("."), function(testType) {... // nitpick.perform("Apply Material Entities to Avatars", Script.resolvePath("."), function(testType) {...
const QString ws("\\h*"); //white-space character const QString ws("\\h*"); //white-space character
const QString functionPerformName(ws + "autoTester" + ws + "\\." + ws + "perform"); const QString functionPerformName(ws + "nitpick" + ws + "\\." + ws + "perform");
const QString quotedString("\\\".+\\\""); const QString quotedString("\\\".+\\\"");
QString regexTestTitle(ws + functionPerformName + "\\(" + quotedString); QString regexTestTitle(ws + functionPerformName + "\\(" + quotedString);
QRegularExpression lineContainingTitle = QRegularExpression(regexTestTitle); QRegularExpression lineContainingTitle = QRegularExpression(regexTestTitle);
// Each step is either of the following forms: // Each step is either of the following forms:
// autoTester.addStepSnapshot("Take snapshot"... // nitpick.addStepSnapshot("Take snapshot"...
// autoTester.addStep("Clean up after test"... // nitpick.addStep("Clean up after test"...
const QString functionAddStepSnapshotName(ws + "autoTester" + ws + "\\." + ws + "addStepSnapshot"); const QString functionAddStepSnapshotName(ws + "nitpick" + ws + "\\." + ws + "addStepSnapshot");
const QString regexStepSnapshot(ws + functionAddStepSnapshotName + ws + "\\(" + ws + quotedString + ".*"); const QString regexStepSnapshot(ws + functionAddStepSnapshotName + ws + "\\(" + ws + quotedString + ".*");
const QRegularExpression lineStepSnapshot = QRegularExpression(regexStepSnapshot); const QRegularExpression lineStepSnapshot = QRegularExpression(regexStepSnapshot);
const QString functionAddStepName(ws + "autoTester" + ws + "\\." + ws + "addStep"); const QString functionAddStepName(ws + "nitpick" + ws + "\\." + ws + "addStep");
const QString regexStep(ws + functionAddStepName + ws + "\\(" + ws + quotedString + ".*"); const QString regexStep(ws + functionAddStepName + ws + "\\(" + ws + quotedString + ".*");
const QRegularExpression lineStep = QRegularExpression(regexStep); const QRegularExpression lineStep = QRegularExpression(regexStep);
@ -620,7 +620,7 @@ void Test::createTestAutoScript() {
} }
if (createTestAutoScript(_testDirectory)) { if (createTestAutoScript(_testDirectory)) {
QMessageBox::information(0, "Success", "'autoTester.js` script has been created"); QMessageBox::information(0, "Success", "'nitpick.js` script has been created");
} }
} }
@ -653,7 +653,7 @@ void Test::createAllTestAutoScripts() {
} }
} }
QMessageBox::information(0, "Success", "'autoTester.js' scripts have been created"); QMessageBox::information(0, "Success", "'nitpick.js' scripts have been created");
} }
bool Test::createTestAutoScript(const QString& directory) { bool Test::createTestAutoScript(const QString& directory) {
@ -677,8 +677,8 @@ bool Test::createTestAutoScript(const QString& directory) {
stream << "if (typeof PATH_TO_THE_REPO_PATH_UTILS_FILE === 'undefined') PATH_TO_THE_REPO_PATH_UTILS_FILE = 'https://raw.githubusercontent.com/highfidelity/hifi_tests/master/tests/utils/branchUtils.js';\n"; stream << "if (typeof PATH_TO_THE_REPO_PATH_UTILS_FILE === 'undefined') PATH_TO_THE_REPO_PATH_UTILS_FILE = 'https://raw.githubusercontent.com/highfidelity/hifi_tests/master/tests/utils/branchUtils.js';\n";
stream << "Script.include(PATH_TO_THE_REPO_PATH_UTILS_FILE);\n"; stream << "Script.include(PATH_TO_THE_REPO_PATH_UTILS_FILE);\n";
stream << "var autoTester = createAutoTester(Script.resolvePath('.'));\n\n"; stream << "var nitpick = createAutoTester(Script.resolvePath('.'));\n\n";
stream << "autoTester.enableAuto();\n\n"; stream << "nitpick.enableAuto();\n\n";
stream << "Script.include('./test.js?raw=true');\n"; stream << "Script.include('./test.js?raw=true');\n";
testAutoScriptFile.close(); testAutoScriptFile.close();
@ -751,29 +751,29 @@ void Test::createRecursiveScript(const QString& topLevelDirectory, bool interact
textStream << "// This is an automatically generated file, created by auto-tester" << endl; textStream << "// This is an automatically generated file, created by auto-tester" << endl;
// Include 'autoTest.js' // Include 'autoTest.js'
QString branch = autoTester->getSelectedBranch(); QString branch = nitpick->getSelectedBranch();
QString user = autoTester->getSelectedUser(); QString user = nitpick->getSelectedUser();
textStream << "PATH_TO_THE_REPO_PATH_UTILS_FILE = \"https://raw.githubusercontent.com/" + user + "/hifi_tests/" + branch + textStream << "PATH_TO_THE_REPO_PATH_UTILS_FILE = \"https://raw.githubusercontent.com/" + user + "/hifi_tests/" + branch +
"/tests/utils/branchUtils.js\";" "/tests/utils/branchUtils.js\";"
<< endl; << endl;
textStream << "Script.include(PATH_TO_THE_REPO_PATH_UTILS_FILE);" << endl; textStream << "Script.include(PATH_TO_THE_REPO_PATH_UTILS_FILE);" << endl;
textStream << "var autoTester = createAutoTester(Script.resolvePath(\".\"));" << endl << endl; textStream << "var nitpick = createAutoTester(Script.resolvePath(\".\"));" << endl << endl;
textStream << "var testsRootPath = autoTester.getTestsRootPath();" << endl << endl; textStream << "var testsRootPath = nitpick.getTestsRootPath();" << endl << endl;
// Wait 10 seconds before starting // Wait 10 seconds before starting
textStream << "if (typeof Test !== 'undefined') {" << endl; textStream << "if (typeof Test !== 'undefined') {" << endl;
textStream << " Test.wait(10000);" << endl; textStream << " Test.wait(10000);" << endl;
textStream << "};" << endl << endl; textStream << "};" << endl << endl;
textStream << "autoTester.enableRecursive();" << endl; textStream << "nitpick.enableRecursive();" << endl;
textStream << "autoTester.enableAuto();" << endl << endl; textStream << "nitpick.enableAuto();" << endl << endl;
// This is used to verify that the recursive test contains at least one test // This is used to verify that the recursive test contains at least one test
bool testFound{ false }; bool testFound{ false };
// Directories are included in reverse order. The autoTester scripts use a stack mechanism, // Directories are included in reverse order. The nitpick scripts use a stack mechanism,
// so this ensures that the tests run in alphabetical order (a convenience when debugging) // so this ensures that the tests run in alphabetical order (a convenience when debugging)
QStringList directories; QStringList directories;
@ -819,7 +819,7 @@ void Test::createRecursiveScript(const QString& topLevelDirectory, bool interact
} }
textStream << endl; textStream << endl;
textStream << "autoTester.runRecursive();" << endl; textStream << "nitpick.runRecursive();" << endl;
allTestsFilename.close(); allTestsFilename.close();
} }
@ -881,7 +881,7 @@ void Test::createTestsOutline() {
// The directory name appears after the last slash (we are assured there is at least 1). // The directory name appears after the last slash (we are assured there is at least 1).
QString directoryName = directory.right(directory.length() - directory.lastIndexOf("/") - 1); QString directoryName = directory.right(directory.length() - directory.lastIndexOf("/") - 1);
// autoTester is run on a clone of the repository. We use relative paths, so we can use both local disk and GitHub // nitpick is run on a clone of the repository. We use relative paths, so we can use both local disk and GitHub
// For a test in "D:/GitHub/hifi_tests/tests/content/entity/zone/ambientLightInheritance" the // For a test in "D:/GitHub/hifi_tests/tests/content/entity/zone/ambientLightInheritance" the
// GitHub URL is "./content/entity/zone/ambientLightInheritance?raw=true" // GitHub URL is "./content/entity/zone/ambientLightInheritance?raw=true"
QString partialPath = directory.right(directory.length() - (directory.lastIndexOf("/tests/") + QString("/tests").length() + 1)); QString partialPath = directory.right(directory.length() - (directory.lastIndexOf("/tests/") + QString("/tests").length() + 1));
@ -937,11 +937,11 @@ void Test::createTestRailTestCases() {
} }
if (_testRailCreateMode == PYTHON) { if (_testRailCreateMode == PYTHON) {
_testRailInterface.createTestSuitePython(_testDirectory, outputDirectory, autoTester->getSelectedUser(), _testRailInterface.createTestSuitePython(_testDirectory, outputDirectory, nitpick->getSelectedUser(),
autoTester->getSelectedBranch()); nitpick->getSelectedBranch());
} else { } else {
_testRailInterface.createTestSuiteXML(_testDirectory, outputDirectory, autoTester->getSelectedUser(), _testRailInterface.createTestSuiteXML(_testDirectory, outputDirectory, nitpick->getSelectedUser(),
autoTester->getSelectedBranch()); nitpick->getSelectedBranch());
} }
} }

View file

@ -146,7 +146,7 @@ private:
const QString DATETIME_FORMAT{ "yyyy-MM-dd_hh-mm-ss" }; const QString DATETIME_FORMAT{ "yyyy-MM-dd_hh-mm-ss" };
// NOTE: these need to match the appropriate var's in autoTester.js // NOTE: these need to match the appropriate var's in nitpick.js
// var advanceKey = "n"; // var advanceKey = "n";
// var pathSeparator = "."; // var pathSeparator = ".";
const QString ADVANCE_KEY{ "n" }; const QString ADVANCE_KEY{ "n" };

View file

@ -13,8 +13,8 @@
#include <QtWidgets/QMessageBox> #include <QtWidgets/QMessageBox>
#include <QtWidgets/QFileDialog> #include <QtWidgets/QFileDialog>
#include "ui/AutoTester.h" #include "ui/Nitpick.h"
extern AutoTester* autoTester; extern Nitpick* nitpick;
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#include <windows.h> #include <windows.h>
@ -95,7 +95,7 @@ void TestRunner::setWorkingFolder() {
_logFile.setFileName(_workingFolder + "/log.txt"); _logFile.setFileName(_workingFolder + "/log.txt");
autoTester->enableRunTabControls(); nitpick->enableRunTabControls();
_workingFolderLabel->setText(QDir::toNativeSeparators(_workingFolder)); _workingFolderLabel->setText(QDir::toNativeSeparators(_workingFolder));
_timer = new QTimer(this); _timer = new QTimer(this);
@ -203,8 +203,8 @@ void TestRunner::run() {
_automatedTestIsRunning = true; _automatedTestIsRunning = true;
// Initial setup // Initial setup
_branch = autoTester->getSelectedBranch(); _branch = nitpick->getSelectedBranch();
_user = autoTester->getSelectedUser(); _user = nitpick->getSelectedUser();
// This will be restored at the end of the tests // This will be restored at the end of the tests
saveExistingHighFidelityAppDataFolder(); saveExistingHighFidelityAppDataFolder();
@ -221,7 +221,7 @@ void TestRunner::run() {
updateStatusLabel("Downloading Build XML"); updateStatusLabel("Downloading Build XML");
buildXMLDownloaded = false; buildXMLDownloaded = false;
autoTester->downloadFiles(urls, _workingFolder, filenames, (void*)this); nitpick->downloadFiles(urls, _workingFolder, filenames, (void*)this);
// `downloadComplete` will run after download has completed // `downloadComplete` will run after download has completed
} }
@ -250,7 +250,7 @@ void TestRunner::downloadComplete() {
updateStatusLabel("Downloading installer"); updateStatusLabel("Downloading installer");
autoTester->downloadFiles(urls, _workingFolder, filenames, (void*)this); nitpick->downloadFiles(urls, _workingFolder, filenames, (void*)this);
// `downloadComplete` will run again after download has completed // `downloadComplete` will run again after download has completed
@ -505,7 +505,7 @@ void TestRunner::interfaceExecutionComplete() {
void TestRunner::evaluateResults() { void TestRunner::evaluateResults() {
updateStatusLabel("Evaluating results"); updateStatusLabel("Evaluating results");
autoTester->startTestsEvaluation(false, true, _snapshotFolder, _branch, _user); nitpick->startTestsEvaluation(false, true, _snapshotFolder, _branch, _user);
} }
void TestRunner::automaticTestRunEvaluationComplete(QString zippedFolder, int numberOfFailures) { void TestRunner::automaticTestRunEvaluationComplete(QString zippedFolder, int numberOfFailures) {
@ -618,7 +618,7 @@ void TestRunner::checkTime() {
} }
void TestRunner::updateStatusLabel(const QString& message) { void TestRunner::updateStatusLabel(const QString& message) {
autoTester->updateStatusLabel(message); nitpick->updateStatusLabel(message);
} }
void TestRunner::appendLog(const QString& message) { void TestRunner::appendLog(const QString& message) {
@ -632,7 +632,7 @@ void TestRunner::appendLog(const QString& message) {
_logFile.write("\n"); _logFile.write("\n");
_logFile.close(); _logFile.close();
autoTester->appendLogWindow(message); nitpick->appendLogWindow(message);
} }
QString TestRunner::getInstallerNameFromURL(const QString& url) { QString TestRunner::getInstallerNameFromURL(const QString& url) {

View file

@ -8,11 +8,11 @@
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// //
#include <QtWidgets/QApplication> #include <QtWidgets/QApplication>
#include "ui/AutoTester.h" #include "ui/Nitpick.h"
#include <iostream> #include <iostream>
AutoTester* autoTester; Nitpick* nitpick;
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
// If no parameters then run in interactive mode // If no parameters then run in interactive mode
@ -62,13 +62,13 @@ int main(int argc, char *argv[]) {
QApplication application(argc, argv); QApplication application(argc, argv);
autoTester = new AutoTester(); nitpick = new Nitpick();
autoTester->setup(); nitpick->setup();
if (!testFolder.isNull()) { if (!testFolder.isNull()) {
autoTester->startTestsEvaluation(true ,false, testFolder, branch, user); nitpick->startTestsEvaluation(true ,false, testFolder, branch, user);
} else { } else {
autoTester->show(); nitpick->show();
} }
return application.exec(); return application.exec();

View file

@ -14,7 +14,7 @@
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>AutoTester Help</string> <string>Nitpick Help</string>
</property> </property>
<widget class="QTextEdit" name="textEdit"> <widget class="QTextEdit" name="textEdit">
<property name="geometry"> <property name="geometry">

View file

@ -1,5 +1,5 @@
// //
// AutoTester.cpp // Nitpick.cpp
// zone/ambientLightInheritence // zone/ambientLightInheritence
// //
// Created by Nissim Hadar on 2 Nov 2017. // Created by Nissim Hadar on 2 Nov 2017.
@ -8,14 +8,14 @@
// Distributed under the Apache License, Version 2.0. // Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// //
#include "AutoTester.h" #include "Nitpick.h"
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#include <windows.h> #include <windows.h>
#include <shellapi.h> #include <shellapi.h>
#endif #endif
AutoTester::AutoTester(QWidget* parent) : QMainWindow(parent) { Nitpick::Nitpick(QWidget* parent) : QMainWindow(parent) {
_ui.setupUi(this); _ui.setupUi(this);
_ui.checkBoxInteractiveMode->setChecked(true); _ui.checkBoxInteractiveMode->setChecked(true);
@ -24,9 +24,9 @@ AutoTester::AutoTester(QWidget* parent) : QMainWindow(parent) {
_signalMapper = new QSignalMapper(); _signalMapper = new QSignalMapper();
connect(_ui.actionClose, &QAction::triggered, this, &AutoTester::on_closeButton_clicked); connect(_ui.actionClose, &QAction::triggered, this, &Nitpick::on_closeButton_clicked);
connect(_ui.actionAbout, &QAction::triggered, this, &AutoTester::about); connect(_ui.actionAbout, &QAction::triggered, this, &Nitpick::about);
connect(_ui.actionContent, &QAction::triggered, this, &AutoTester::content); connect(_ui.actionContent, &QAction::triggered, this, &Nitpick::content);
// The second tab hides and shows the Windows task bar // The second tab hides and shows the Windows task bar
#ifndef Q_OS_WIN #ifndef Q_OS_WIN
@ -36,13 +36,13 @@ AutoTester::AutoTester(QWidget* parent) : QMainWindow(parent) {
_ui.statusLabel->setText(""); _ui.statusLabel->setText("");
_ui.plainTextEdit->setReadOnly(true); _ui.plainTextEdit->setReadOnly(true);
setWindowTitle("Auto Tester - v7.0"); setWindowTitle("Nitpick - v1.0");
// Coming soon to an auto-tester near you... // Coming soon to a nitpick near you...
//// _helpWindow.textBrowser->setText() //// _helpWindow.textBrowser->setText()
} }
AutoTester::~AutoTester() { Nitpick::~Nitpick() {
delete _signalMapper; delete _signalMapper;
if (_test) { if (_test) {
@ -54,7 +54,7 @@ AutoTester::~AutoTester() {
} }
} }
void AutoTester::setup() { void Nitpick::setup() {
if (_test) { if (_test) {
delete _test; delete _test;
} }
@ -87,7 +87,7 @@ void AutoTester::setup() {
_testRunner = new TestRunner(dayCheckboxes, timeEditCheckboxes, timeEdits, _ui.workingFolderLabel, _ui.checkBoxServerless, _ui.checkBoxRunLatest, _ui.urlLineEdit, _ui.runNowButton); _testRunner = new TestRunner(dayCheckboxes, timeEditCheckboxes, timeEdits, _ui.workingFolderLabel, _ui.checkBoxServerless, _ui.checkBoxRunLatest, _ui.urlLineEdit, _ui.runNowButton);
} }
void AutoTester::startTestsEvaluation(const bool isRunningFromCommandLine, void Nitpick::startTestsEvaluation(const bool isRunningFromCommandLine,
const bool isRunningInAutomaticTestRun, const bool isRunningInAutomaticTestRun,
const QString& snapshotDirectory, const QString& snapshotDirectory,
const QString& branch, const QString& branch,
@ -96,7 +96,7 @@ void AutoTester::startTestsEvaluation(const bool isRunningFromCommandLine,
_test->startTestsEvaluation(isRunningFromCommandLine, isRunningInAutomaticTestRun, snapshotDirectory, branch, user); _test->startTestsEvaluation(isRunningFromCommandLine, isRunningInAutomaticTestRun, snapshotDirectory, branch, user);
} }
void AutoTester::on_tabWidget_currentChanged(int index) { void Nitpick::on_tabWidget_currentChanged(int index) {
if (index == 0 || index == 2 || index == 3) { if (index == 0 || index == 2 || index == 3) {
_ui.userLineEdit->setDisabled(false); _ui.userLineEdit->setDisabled(false);
_ui.branchLineEdit->setDisabled(false); _ui.branchLineEdit->setDisabled(false);
@ -106,73 +106,73 @@ void AutoTester::on_tabWidget_currentChanged(int index) {
} }
} }
void AutoTester::on_evaluateTestsButton_clicked() { void Nitpick::on_evaluateTestsButton_clicked() {
_test->startTestsEvaluation(false, false); _test->startTestsEvaluation(false, false);
} }
void AutoTester::on_createRecursiveScriptButton_clicked() { void Nitpick::on_createRecursiveScriptButton_clicked() {
_test->createRecursiveScript(); _test->createRecursiveScript();
} }
void AutoTester::on_createAllRecursiveScriptsButton_clicked() { void Nitpick::on_createAllRecursiveScriptsButton_clicked() {
_test->createAllRecursiveScripts(); _test->createAllRecursiveScripts();
} }
void AutoTester::on_createTestsButton_clicked() { void Nitpick::on_createTestsButton_clicked() {
_test->createTests(); _test->createTests();
} }
void AutoTester::on_createMDFileButton_clicked() { void Nitpick::on_createMDFileButton_clicked() {
_test->createMDFile(); _test->createMDFile();
} }
void AutoTester::on_createAllMDFilesButton_clicked() { void Nitpick::on_createAllMDFilesButton_clicked() {
_test->createAllMDFiles(); _test->createAllMDFiles();
} }
void AutoTester::on_createTestAutoScriptButton_clicked() { void Nitpick::on_createTestAutoScriptButton_clicked() {
_test->createTestAutoScript(); _test->createTestAutoScript();
} }
void AutoTester::on_createAllTestAutoScriptsButton_clicked() { void Nitpick::on_createAllTestAutoScriptsButton_clicked() {
_test->createAllTestAutoScripts(); _test->createAllTestAutoScripts();
} }
void AutoTester::on_createTestsOutlineButton_clicked() { void Nitpick::on_createTestsOutlineButton_clicked() {
_test->createTestsOutline(); _test->createTestsOutline();
} }
void AutoTester::on_createTestRailTestCasesButton_clicked() { void Nitpick::on_createTestRailTestCasesButton_clicked() {
_test->createTestRailTestCases(); _test->createTestRailTestCases();
} }
void AutoTester::on_createTestRailRunButton_clicked() { void Nitpick::on_createTestRailRunButton_clicked() {
_test->createTestRailRun(); _test->createTestRailRun();
} }
void AutoTester::on_setWorkingFolderButton_clicked() { void Nitpick::on_setWorkingFolderButton_clicked() {
_testRunner->setWorkingFolder(); _testRunner->setWorkingFolder();
} }
void AutoTester::enableRunTabControls() { void Nitpick::enableRunTabControls() {
_ui.runNowButton->setEnabled(true); _ui.runNowButton->setEnabled(true);
_ui.daysGroupBox->setEnabled(true); _ui.daysGroupBox->setEnabled(true);
_ui.timesGroupBox->setEnabled(true); _ui.timesGroupBox->setEnabled(true);
} }
void AutoTester::on_runNowButton_clicked() { void Nitpick::on_runNowButton_clicked() {
_testRunner->run(); _testRunner->run();
} }
void AutoTester::on_checkBoxRunLatest_clicked() { void Nitpick::on_checkBoxRunLatest_clicked() {
_ui.urlLineEdit->setEnabled(!_ui.checkBoxRunLatest->isChecked()); _ui.urlLineEdit->setEnabled(!_ui.checkBoxRunLatest->isChecked());
} }
void AutoTester::automaticTestRunEvaluationComplete(QString zippedFolderName, int numberOfFailures) { void Nitpick::automaticTestRunEvaluationComplete(QString zippedFolderName, int numberOfFailures) {
_testRunner->automaticTestRunEvaluationComplete(zippedFolderName, numberOfFailures); _testRunner->automaticTestRunEvaluationComplete(zippedFolderName, numberOfFailures);
} }
void AutoTester::on_updateTestRailRunResultsButton_clicked() { void Nitpick::on_updateTestRailRunResultsButton_clicked() {
_test->updateTestRailRunResult(); _test->updateTestRailRunResult();
} }
@ -180,7 +180,7 @@ void AutoTester::on_updateTestRailRunResultsButton_clicked() {
// if (uState & ABS_AUTOHIDE) on_showTaskbarButton_clicked(); // if (uState & ABS_AUTOHIDE) on_showTaskbarButton_clicked();
// else on_hideTaskbarButton_clicked(); // else on_hideTaskbarButton_clicked();
// //
void AutoTester::on_hideTaskbarButton_clicked() { void Nitpick::on_hideTaskbarButton_clicked() {
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
APPBARDATA abd = { sizeof abd }; APPBARDATA abd = { sizeof abd };
UINT uState = (UINT)SHAppBarMessage(ABM_GETSTATE, &abd); UINT uState = (UINT)SHAppBarMessage(ABM_GETSTATE, &abd);
@ -190,7 +190,7 @@ void AutoTester::on_hideTaskbarButton_clicked() {
#endif #endif
} }
void AutoTester::on_showTaskbarButton_clicked() { void Nitpick::on_showTaskbarButton_clicked() {
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
APPBARDATA abd = { sizeof abd }; APPBARDATA abd = { sizeof abd };
UINT uState = (UINT)SHAppBarMessage(ABM_GETSTATE, &abd); UINT uState = (UINT)SHAppBarMessage(ABM_GETSTATE, &abd);
@ -200,23 +200,23 @@ void AutoTester::on_showTaskbarButton_clicked() {
#endif #endif
} }
void AutoTester::on_closeButton_clicked() { void Nitpick::on_closeButton_clicked() {
exit(0); exit(0);
} }
void AutoTester::on_createPythonScriptRadioButton_clicked() { void Nitpick::on_createPythonScriptRadioButton_clicked() {
_test->setTestRailCreateMode(PYTHON); _test->setTestRailCreateMode(PYTHON);
} }
void AutoTester::on_createXMLScriptRadioButton_clicked() { void Nitpick::on_createXMLScriptRadioButton_clicked() {
_test->setTestRailCreateMode(XML); _test->setTestRailCreateMode(XML);
} }
void AutoTester::on_createWebPagePushButton_clicked() { void Nitpick::on_createWebPagePushButton_clicked() {
_test->createWebPage(_ui.updateAWSCheckBox, _ui.awsURLLineEdit); _test->createWebPage(_ui.updateAWSCheckBox, _ui.awsURLLineEdit);
} }
void AutoTester::downloadFile(const QUrl& url) { void Nitpick::downloadFile(const QUrl& url) {
_downloaders.emplace_back(new Downloader(url, this)); _downloaders.emplace_back(new Downloader(url, this));
connect(_downloaders[_index], SIGNAL(downloaded()), _signalMapper, SLOT(map())); connect(_downloaders[_index], SIGNAL(downloaded()), _signalMapper, SLOT(map()));
@ -225,7 +225,7 @@ void AutoTester::downloadFile(const QUrl& url) {
++_index; ++_index;
} }
void AutoTester::downloadFiles(const QStringList& URLs, const QString& directoryName, const QStringList& filenames, void *caller) { void Nitpick::downloadFiles(const QStringList& URLs, const QString& directoryName, const QStringList& filenames, void *caller) {
connect(_signalMapper, SIGNAL(mapped(int)), this, SLOT(saveFile(int))); connect(_signalMapper, SIGNAL(mapped(int)), this, SLOT(saveFile(int)));
_directoryName = directoryName; _directoryName = directoryName;
@ -251,7 +251,7 @@ void AutoTester::downloadFiles(const QStringList& URLs, const QString& directory
} }
} }
void AutoTester::saveFile(int index) { void Nitpick::saveFile(int index) {
try { try {
QFile file(_directoryName + "/" + _filenames[index]); QFile file(_directoryName + "/" + _filenames[index]);
file.open(QIODevice::WriteOnly); file.open(QIODevice::WriteOnly);
@ -277,34 +277,34 @@ void AutoTester::saveFile(int index) {
} }
} }
void AutoTester::about() { void Nitpick::about() {
QMessageBox::information(0, "About", QString("Built ") + __DATE__ + ", " + __TIME__); QMessageBox::information(0, "About", QString("Built ") + __DATE__ + ", " + __TIME__);
} }
void AutoTester::content() { void Nitpick::content() {
_helpWindow.show(); _helpWindow.show();
} }
void AutoTester::setUserText(const QString& user) { void Nitpick::setUserText(const QString& user) {
_ui.userLineEdit->setText(user); _ui.userLineEdit->setText(user);
} }
QString AutoTester::getSelectedUser() { QString Nitpick::getSelectedUser() {
return _ui.userLineEdit->text(); return _ui.userLineEdit->text();
} }
void AutoTester::setBranchText(const QString& branch) { void Nitpick::setBranchText(const QString& branch) {
_ui.branchLineEdit->setText(branch); _ui.branchLineEdit->setText(branch);
} }
QString AutoTester::getSelectedBranch() { QString Nitpick::getSelectedBranch() {
return _ui.branchLineEdit->text(); return _ui.branchLineEdit->text();
} }
void AutoTester::updateStatusLabel(const QString& status) { void Nitpick::updateStatusLabel(const QString& status) {
_ui.statusLabel->setText(status); _ui.statusLabel->setText(status);
} }
void AutoTester::appendLogWindow(const QString& message) { void Nitpick::appendLogWindow(const QString& message) {
_ui.plainTextEdit->appendPlainText(message); _ui.plainTextEdit->appendPlainText(message);
} }

View file

@ -1,5 +1,5 @@
// //
// AutoTester.h // Nitpick.h
// //
// Created by Nissim Hadar on 2 Nov 2017. // Created by Nissim Hadar on 2 Nov 2017.
// Copyright 2013 High Fidelity, Inc. // Copyright 2013 High Fidelity, Inc.
@ -7,13 +7,13 @@
// Distributed under the Apache License, Version 2.0. // Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// //
#ifndef hifi_AutoTester_h #ifndef hifi_Nitpick_h
#define hifi_AutoTester_h #define hifi_Nitpick_h
#include <QtWidgets/QMainWindow> #include <QtWidgets/QMainWindow>
#include <QSignalMapper> #include <QSignalMapper>
#include <QTextEdit> #include <QTextEdit>
#include "ui_AutoTester.h" #include "ui_Nitpick.h"
#include "../Downloader.h" #include "../Downloader.h"
#include "../Test.h" #include "../Test.h"
@ -22,12 +22,12 @@
#include "../TestRunner.h" #include "../TestRunner.h"
#include "../AWSInterface.h" #include "../AWSInterface.h"
class AutoTester : public QMainWindow { class Nitpick : public QMainWindow {
Q_OBJECT Q_OBJECT
public: public:
AutoTester(QWidget* parent = Q_NULLPTR); Nitpick(QWidget* parent = Q_NULLPTR);
~AutoTester(); ~Nitpick();
void setup(); void setup();
@ -95,7 +95,7 @@ private slots:
void content(); void content();
private: private:
Ui::AutoTesterClass _ui; Ui::NitpickClass _ui;
Test* _test{ nullptr }; Test* _test{ nullptr };
TestRunner* _testRunner{ nullptr }; TestRunner* _testRunner{ nullptr };
@ -121,4 +121,4 @@ private:
void* _caller; void* _caller;
}; };
#endif // hifi_AutoTester_h #endif // hifi_Nitpick_h

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>AutoTesterClass</class> <class>NitpickClass</class>
<widget class="QMainWindow" name="AutoTesterClass"> <widget class="QMainWindow" name="NitpickClass">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
@ -17,7 +17,7 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>AutoTester</string> <string>Nitpick</string>
</property> </property>
<widget class="QWidget" name="centralWidget"> <widget class="QWidget" name="centralWidget">
<widget class="QPushButton" name="closeButton"> <widget class="QPushButton" name="closeButton">