Commit eeb1a8fe authored by Christian Stenger's avatar Christian Stenger
Browse files

AutoTest: Use json based wizard



Change-Id: I75693037542ef64bcc094e092086dea65d77872c
Reviewed-by: Tobias Hunger's avatarTobias Hunger <tobias.hunger@qt.io>
parent b9bd611e
TEMPLATE = subdirs
SUBDIRS += %TestCaseName:l%
SUBDIRS += %{JS: '%{TestCaseName}'.toLowerCase()}
@if "%RequireGUI%" == "true"
#include <QApplication>
%{Cpp:LicenseTemplate}\
@if "%{RequireGUI}" == "true"
%{JS: QtSupport.qtIncludes([ 'QtGui/QApplication' ],
[ 'QtWidgets/QApplication' ]) }\
@else
#include <QCoreApplication>
%{JS: QtSupport.qtIncludes([ 'QtCore/QCoreApplication' ],
[ 'QtCore/QCoreApplication' ]) }\
@endif
// add necessary includes here
int main(int argc, char *argv[])
{
@if "%RequireGUI%" == "true"
@if "%{RequireGUI}" == "true"
QApplication a(argc, argv);
@else
QCoreApplication a(argc, argv);
......
@if "%RequireGUI%" == "true"
@if "%{RequireGUI}" == "true"
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@else
......@@ -8,6 +8,6 @@ CONFIG -= app_bundle
@endif
TEMPLATE = app
TARGET = %ProjectName%
TARGET = %{ProjectName}
SOURCES += main.%CppSourceSuffix%
SOURCES += %{MainCppName}
TEMPLATE = subdirs
@if "%BuildTests%" == "always"
@if "%{BuildTests}" == "always"
SUBDIRS += src \
tests
@else
......
QT += testlib
@if "%RequireGUI%" == "false"
@if "%{RequireGUI}" == "false"
QT -= gui
CONFIG += qt console warn_on depend_includepath testcase
......@@ -11,4 +11,4 @@ CONFIG += qt warn_on depend_includepath testcase
TEMPLATE = app
SOURCES += tst_%TestCaseName:l%.%CppSourceSuffix%
SOURCES += %{TestCaseFileWithCppSuffix}
%{Cpp:LicenseTemplate}\
#include <QtTest>
@if "%RequireApplication%" == "true"
#include <QCoreApplication>
@if "%{RequireApplication}" == "true"
%{JS: QtSupport.qtIncludes([ 'QtCore/QCoreApplication' ],
[ 'QtCore/QCoreApplication' ]) }\
@endif
// add necessary includes here
class %TestCaseName% : public QObject
class %{TestCaseName} : public QObject
{
Q_OBJECT
public:
%TestCaseName%();
~%TestCaseName%();
%{TestCaseName}();
~%{TestCaseName}();
private slots:
@if "%GenerateInitAndCleanup%" == "true"
@if "%{GenerateInitAndCleanup}" == "true"
void initTestCase();
void cleanupTestCase();
@endif
......@@ -22,37 +24,37 @@ private slots:
};
%TestCaseName%::%TestCaseName%()
%{TestCaseName}::%{TestCaseName}()
{
}
%TestCaseName%::~%TestCaseName%()
%{TestCaseName}::~%{TestCaseName}()
{
}
@if "%GenerateInitAndCleanup%" == "true"
void %TestCaseName%::initTestCase()
@if "%{GenerateInitAndCleanup}" == "true"
void %{TestCaseName}::initTestCase()
{
}
void %TestCaseName%::cleanupTestCase()
void %{TestCaseName}::cleanupTestCase()
{
}
@endif
void %TestCaseName%::test_case1()
void %{TestCaseName}::test_case1()
{
}
@if "%RequireApplication%" == "true"
QTEST_MAIN(%TestCaseName%)
@if "%{RequireApplication}" == "true"
QTEST_MAIN(%{TestCaseName})
@else
QTEST_APPLESS_MAIN(%TestCaseName%)
QTEST_APPLESS_MAIN(%{TestCaseName})
@endif
#include "tst_%TestCaseName:l%.moc"
#include "%{JS: 'tst_%{TestCaseName}.moc'.toLowerCase() }"
{
"version": 1,
"supportedProjectTypes": [ "Qt4ProjectManager.Qt4Project" ],
"id": "R.AutoTest2",
"category": "H.Project",
"trDescription": "Creates a new project including auto test skeleton.",
"trDisplayName": "Qt Test project",
"trDisplayCategory": "Other Project",
"icon": "autotest_24.png",
"featuresRequired": [ "QtSupport.Wizards.FeatureQt", "QtSupport.Wizards.FeatureDesktop" ],
"enabled": "%{JS: [ %{Plugins} ].indexOf('AutoTest') >= 0}",
"options":
[
{ "key": "ProFileName",
"value": "%{JS: Util.fileName('%{ProjectDirectory}/%{ProjectName}', 'pro')}"
},
{ "key": "IsTopLevelProject",
"value": "%{JS: !'%{Exists:ProjectExplorer.Profile.Ids}' }"
},
{ "key": "MainCppName",
"value": "%{JS: 'main.' + Util.preferredSuffix('text/x-c++src') }"
},
{
"key": "TestCaseFileWithCppSuffix",
"value": "%{JS: 'tst_%{TestCaseName}.'.toLowerCase() + Util.preferredSuffix('text/x-c++src') }"
}
],
"pages":
[
{
"trDisplayName": "Project Location",
"trShortTitle": "Location",
"typeId": "Project",
"data":
{
"trDescription": "This wizard creates a simple Qmake based Qt project with additional auto test skeleton."
}
},
{
"trDisplayName": "Project and Test Information",
"trShortTitle": "Details",
"typeId": "Fields",
"data":
[
{
"name": "RequireGUI",
"trDisplayName": "GUI Application",
"type": "CheckBox",
"data": {
"checked": false,
"checkedValue": "true",
"uncheckedValue": "false"
}
},
{
"name": "TestCaseName",
"trDisplayName": "Test Case Name:",
"mandatory": true,
"type": "LineEdit",
"data": { "validator": "^[a-zA-Z_0-9]+$" }
},
{
"name": "RequireApplication",
"trDisplayName": "Requires QApplication",
"type": "CheckBox",
"data": {
"checked": false,
"checkedValue": "true",
"uncheckedValue": "false"
}
},
{
"name": "GenerateInitAndCleanup",
"trDisplayName": "Generate initialization and cleanup code",
"type": "CheckBox",
"data": {
"checked": false,
"checkedValue": "true",
"uncheckedValue": "false"
}
},
{
"name": "BuildAutoTests",
"trDisplayName": "Build auto tests",
"type": "ComboBox",
"data":
{
"index": 0,
"items":
[
{
"trKey": "always",
"value": "always"
},
{
"trKey": "debug only",
"value": "debug"
}
]
}
}
]
},
{
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
"enabled": "%{IsTopLevelProject}",
"data": { "projectFilePath": "%{ProFileName}" }
},
{
"trDisplayName": "Project Management",
"trShortTitle": "Summary",
"typeId": "Summary"
}
],
"generators":
[
{
"typeId": "File",
"data":
[
{
"source": "tmp.pro",
"target": "%{ProFileName}",
"openAsProject": true
},
{
"source": "src.pro",
"target": "src/src.pro",
"openInEditor": false
},
{
"source": "main.cpp",
"target": "src/%{MainCppName}",
"openInEditor": true
},
{
"source": "tests.pro",
"target": "tests/tests.pro",
"openInEditor": false
},
{
"source": "auto.pro",
"target": "tests/auto/auto.pro",
"openInEditor": false
},
{
"source": "tst.pro",
"target": "%{JS: 'tests/auto/' + '%{TestCaseName}/%{TestCaseName}'.toLowerCase() + '.pro' }",
"openInEditor": false
},
{
"source": "tst_src.cpp",
"target": "%{JS: 'tests/auto/' + '%{TestCaseName}/'.toLowerCase() + '%{TestCaseFileWithCppSuffix}' }",
"openInEditor": true
},
{
"source": "../projects/git.ignore",
"target": ".gitignore",
"condition": "%{JS: ( %{IsTopLevelProject} && '%{VersionControl}' === 'G.Git' )}"
}
]
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
-->
<wizard version="1" kind="project"
class="qmakeproject" firstpage="10"
id="R.AutoTest" category="H.Project"
featuresRequired="QtSupport.Wizards.FeatureQt,QtSupport.Wizards.FeatureDesktop">
<!-- "Plugin.AutotestGenerator" as required feature would disable the template if the
plugin is disabled, but it fails on the kit selection page for having no valid kit -->
<icon>autotest_24.png</icon>
<description>Creates a new project including auto test skeleton.</description>
<displayname>Auto Test</displayname>;
<displaycategory>Other Project</displaycategory>
<files>
<file source="src.pro" target="src/src.pro" />
<file source="tests.pro" target="tests/tests.pro" />
<file source="auto.pro" target="tests/auto/auto.pro"/>
<file source="tst.pro" target="tests/auto/%TestCaseName:l%/%TestCaseName:l%.pro" />
<file source="tst_src.cpp"
target="tests/auto/%TestCaseName:l%/tst_%TestCaseName:l%.%CppSourceSuffix%"
openeditor="true"/>
<file source="main.cpp" target="src/main.%CppSourceSuffix%" openeditor="true" />
<file source="tmp.pro" target="%ProjectName:l%.pro" openproject="true" />
</files>
<!-- Create a 2nd wizard page with parameters -->
<fieldpagetitle>Project and Test Information</fieldpagetitle>
<fields>
<field name="RequireGUI">
<fieldcontrol class="QCheckBox" />
<fielddescription>GUI Application</fielddescription>
</field>
<field mandatory="true" name="TestCaseName">
<fieldcontrol class="QLineEdit" validator="^[a-zA-Z_0-9]+$"
/><!-- defaulttext="" /> -->
<fielddescription>Test Case Name:</fielddescription>
</field>
<field name="RequireApplication">
<fieldcontrol class="QCheckBox" />
<fielddescription>Requires QApplication</fielddescription>
</field>
<field name="GenerateInitAndCleanup">
<fieldcontrol class="QCheckBox" />
<fielddescription>Generate initialization and cleanup code</fielddescription>
</field>
<field name="BuildAutoTests">
<fieldcontrol class="QComboBox" defaultindex="0" >
<comboentries>
<comboentry value="always" >
<comboentrytext>always</comboentrytext>
</comboentry>
<comboentry value="debug" >
<comboentrytext>debug only</comboentrytext>
</comboentry>
</comboentries>
</fieldcontrol>
<fielddescription>Build auto tests</fielddescription>
</field>
</fields>
</wizard>
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