Add qbs project files for autotests.

Note: Since not all autotests are able to run from an installed location,
we need to be able to start them from the build directory, which
in turn forces us to set a destination directory for libraries and plugins,
so they will be found at run-time.

Change-Id: Idcf7e1333dfa6e9dbf745391b78c035f842ccc5a
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
Christian Kandeler
2013-08-26 17:50:02 +02:00
parent fbda0ef558
commit 698144e32e
88 changed files with 1228 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
import qbs.base 1.0 import qbs.base 1.0
Project { Project {
property bool withAutotests: qbs.buildVariant === "debug"
property string ide_version_major: '2' property string ide_version_major: '2'
property string ide_version_minor: '8' property string ide_version_minor: '8'
property string ide_version_release: '81' property string ide_version_release: '81'
@@ -55,5 +56,6 @@ Project {
"lib/qtcreator/qtcomponents/qtcomponents.qbs", "lib/qtcreator/qtcomponents/qtcomponents.qbs",
"share/share.qbs", "share/share.qbs",
"share/qtcreator/translations/translations.qbs", "share/qtcreator/translations/translations.qbs",
"tests/tests.qbs"
] ]
} }

View File

@@ -9,6 +9,7 @@ DynamicLibrary {
} }
targetName: Defaults.qtLibraryName(qbs, name) targetName: Defaults.qtLibraryName(qbs, name)
destinationDirectory: project.ide_library_path
cpp.defines: project.generalDefines cpp.defines: project.generalDefines
cpp.linkerFlags: { cpp.linkerFlags: {

View File

@@ -9,6 +9,7 @@ Product {
property var pluginRecommends: [] property var pluginRecommends: []
targetName: Defaults.qtLibraryName(qbs, name) targetName: Defaults.qtLibraryName(qbs, name)
destinationDirectory: project.ide_plugin_path + '/' + provider
Depends { name: "ExtensionSystem" } Depends { name: "ExtensionSystem" }
Depends { name: "pluginspec" } Depends { name: "pluginspec" }

View File

@@ -0,0 +1,8 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "Aggregation autotest"
Depends { name: "Aggregation" }
files: "tst_aggregate.cpp"
}

26
tests/auto/auto.qbs Normal file
View File

@@ -0,0 +1,26 @@
import qbs
Project {
name: "Autotests"
condition: project.withAutotests
references: [
"aggregation/aggregation.qbs",
"changeset/changeset.qbs",
"cplusplus/cplusplus.qbs",
"debugger/debugger.qbs",
"diff/diff.qbs",
"environment/environment.qbs",
"extensionsystem/extensionsystem.qbs",
"externaltool/externaltool.qbs",
"filesearch/filesearch.qbs",
"generichighlighter/generichighlighter.qbs",
"ioutils/ioutils.qbs",
"profilewriter/profilewriter.qbs",
"qml/qml.qbs",
"qtcprocess/qtcprocess.qbs",
"treeviewfind/treeviewfind.qbs",
"utils/utils.qbs",
"utils_stringutils/utils_stringutils.qbs",
"valgrind/valgrind.qbs"
]
}

30
tests/auto/autotest.qbs Normal file
View File

@@ -0,0 +1,30 @@
import qbs
import qbs.FileInfo
CppApplication {
type: "application"
Depends { name: "Qt.test" }
targetName: "tst_" + name.split(' ').join("")
// This needs to be absolute, because it is passed to one of the source files.
destinationDirectory: buildDirectory + '/'
+ FileInfo.relativePath(project.ide_source_tree, sourceDirectory)
cpp.rpaths: [
buildDirectory + '/' + project.ide_library_path,
buildDirectory + '/' + project.ide_library_path + "/..", // OSX
buildDirectory + '/' + project.ide_plugin_path + "/QtProject"
]
// The following would be conceptually right, but does not work currently as some autotests
// (e.g. extensionsystem) do not work when installed, because they want hardcoded
// absolute paths to resources in the build directory.
// cpp.rpaths: qbs.targetOS.contains("osx")
// ? ["@executable_path/.."]
// : ["$ORIGIN/../lib/qtcreator", "$ORIGIN/../lib/qtcreator/plugins/QtProject"]
// Group {
// fileTagsFilter: product.type
// qbs.install: true
// qbs.installDir: project.ide_bin_path
// }
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "ChangeSet autotest"
Depends { name: "Utils" }
Depends { name: "Qt.gui" } // TODO: Remove once qbs bug is fixed.
files: "tst_changeset.cpp"
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus AST autotest"
files: "tst_ast.cpp"
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus check symbols autotest"
files: "tst_checksymbols.cpp"
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus code formatter autotest"
files: "tst_codeformatter.cpp"
}

View File

@@ -0,0 +1,19 @@
import qbs
Project {
name: "CPlusPlus autotests"
references: [
"ast/ast.qbs",
"checksymbols/checksymbols.qbs",
"codeformatter/codeformatter.qbs",
"cxx11/cxx11.qbs",
"findusages/findusages.qbs",
"lexer/lexer.qbs",
"lookup/lookup.qbs",
"misc/misc.qbs",
"preprocessor/preprocessor.qbs",
"semantic/semantic.qbs",
"simplifytypes/simplifytypes.qbs",
"typeprettyprinter/typeprettyprinter.qbs"
]
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
Depends { name: "CppTools" }
Depends { name: "TextEditor" }
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // For QTextDocument & friends
}

View File

@@ -0,0 +1,26 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "Cxx11 autotest"
Group {
name: "Source Files"
files: "tst_cxx11.cpp"
}
Group {
name: "Data Files"
prefix: "data/"
fileTags: ["data"]
files: [
"inlineNamespace.1.cpp",
"inlineNamespace.1.errors.txt",
"staticAssert.1.cpp",
"staticAssert.1.errors.txt",
"noExcept.1.cpp",
"noExcept.1.errors.txt"
]
}
cpp.defines: base.concat(['SRCDIR="' + path + '"'])
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus find usages autotest"
files: "tst_findusages.cpp"
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus lexer autotest"
files: "tst_lexer.cpp"
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus lookup autotest"
files: "tst_lookup.cpp"
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus miscellaneous autotest"
files: "tst_misc.cpp"
}

View File

@@ -0,0 +1,36 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus preprocessor autotest"
Group {
name: "Source Files"
files: "tst_preprocessor.cpp"
}
Group {
name: "Data files"
prefix: "data/"
fileTags: ["data"]
files: [
"empty-macro.cpp", "empty-macro.out.cpp",
"empty-macro.2.cpp", "empty-macro.2.out.cpp",
"identifier-expansion.1.cpp", "identifier-expansion.1.out.cpp",
"identifier-expansion.2.cpp", "identifier-expansion.2.out.cpp",
"identifier-expansion.3.cpp", "identifier-expansion.3.out.cpp",
"identifier-expansion.4.cpp", "identifier-expansion.4.out.cpp",
"identifier-expansion.5.cpp", "identifier-expansion.5.out.cpp",
"macro_expand.c", "macro_expand.out.c",
"macro_expand_1.cpp", "macro_expand_1.out.cpp",
"macro-test.cpp", "macro-test.out.cpp",
"macro_pounder_fn.c",
"noPP.1.cpp",
"noPP.2.cpp",
"poundpound.1.cpp", "poundpound.1.out.cpp",
"recursive.1.cpp", "recursive.1.out.cpp",
"reserved.1.cpp", "reserved.1.out.cpp",
]
}
cpp.defines: base.concat(['SRCDIR="' + path + '"'])
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus semantic autotest"
files: "tst_semantic.cpp"
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus simplify types autotest"
files: "tst_simplifytypestest.cpp"
}

View File

@@ -0,0 +1,7 @@
import qbs
import "../cplusplusautotest.qbs" as CPlusPlusAutotest
CPlusPlusAutotest {
name: "CPlusPlus pretty printer autotest"
files: "tst_typeprettyprinter.cpp"
}

View File

@@ -0,0 +1,11 @@
import qbs
Project {
name: "Debugger autotests"
property path debuggerDir: project.ide_source_tree + "/src/plugins/debugger/"
references: [
"dumpers.qbs",
"gdb.qbs",
"namedemangler.qbs"
]
}

View File

@@ -0,0 +1,35 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "Debugger dumpers autotest"
Depends { name: "CPlusPlus" }
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // For QTextDocument
Depends { name: "Qt.network" } // For QHostAddress
Group {
name: "Sources from Debugger plugin"
prefix: project.debuggerDir
files: [
"debuggerprotocol.h", "debuggerprotocol.cpp",
"watchdata.h", "watchdata.cpp",
"watchutils.h", "watchutils.cpp"
]
}
Group {
name: "Test sources"
files: [
"temporarydir.h",
"tst_dumpers.cpp"
]
}
cpp.defines: base.concat([
'CDBEXT_PATH="' + buildDirectory + '\\\\lib"',
'DUMPERDIR="' + path + '/../../../share/qtcreator/dumper"',
'QT_NO_CAST_FROM_ASCII',
'QT_DISABLE_DEPRECATED_BEFORE=0x040900'
])
cpp.includePaths: base.concat([project.debuggerDir])
}

View File

@@ -0,0 +1,17 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "gdb autotest"
Depends { name: "Qt.network" } // For QHostAddress
Group {
name: "Sources from Debugger plugin"
prefix: project.debuggerDir
files: "debuggerprotocol.cpp"
}
Group {
name: "Test sources"
files: "tst_gdb.cpp"
}
cpp.includePaths: base.concat([project.debuggerDir])
}

View File

@@ -0,0 +1,16 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "Name demangler autotest"
Group {
name: "Sources from Debugger plugin"
prefix: project.debuggerDir + "namedemangler/"
files: ["*.h", "*.cpp"]
}
Group {
name: "Test sources"
files: "tst_namedemangler.cpp"
}
cpp.includePaths: base.concat([project.debuggerDir])
}

6
tests/auto/diff/diff.qbs Normal file
View File

@@ -0,0 +1,6 @@
import qbs
Project {
name: "Diff autotests"
references: ["differ/differ.qbs"]
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "Differ autotest"
Depends { name: "DiffEditor" }
Depends { name: "Qt.widgets" } // For QTextDocument
files: "tst_differ.cpp"
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "Environment autotest"
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // TODO: qbs bug, remove when fixed
files: "tst_environment.cpp"
}

View File

@@ -0,0 +1,26 @@
import qbs
import qbs.File
import qbs.FileInfo
Transformer {
property pathList sourceFiles
property path targetDirectory
inputs: sourceFiles
Artifact { fileName: targetDirectory }
prepare: {
var commands = []
for (var tag in inputs) {
for (var index in inputs[tag]) {
var artifact = inputs[tag][index];
var cmd = new JavaScriptCommand();
cmd.sourceFile = artifact.fileName;
cmd.description = "Copying '" + cmd.sourceFile + "' to '" + output.fileName + "/'.";
cmd.highlight = "codegen";
cmd.targetFilePath = output.fileName + '/' + FileInfo.fileName(cmd.sourceFile);
cmd.sourceCode = function() { File.copy(sourceFile, targetFilePath); }
commands.push(cmd);
}
}
return commands;
}
}

View File

@@ -0,0 +1,9 @@
import qbs
Project {
name: "ExtensionSystem autotests"
references: [
"pluginmanager/pluginmanager.qbs",
"pluginspec/pluginspec.qbs"
]
}

View File

@@ -0,0 +1,24 @@
import qbs
import qbs.File
import qbs.FileInfo
import "./copytransformer.qbs" as CopyTransformer
import "../../../qbs/defaults.js" as Defaults
DynamicLibrary {
Depends { name: "Aggregation" }
Depends { name: "ExtensionSystem" }
Depends { name: "cpp" }
Depends { name: "Qt.core" }
targetName: Defaults.qtLibraryName(qbs, name.split('_')[1])
destinationDirectory: FileInfo.relativePath(project.ide_source_tree, sourceDirectory)
cpp.rpaths: [
buildDirectory + "/lib/qtcreator",
buildDirectory + "/lib/qtcreator/plugins/QtProject"
].concat(additionalRPaths)
property pathList filesToCopy
property pathList additionalRPaths: []
CopyTransformer {
sourceFiles: product.filesToCopy
targetDirectory: product.destinationDirectory
}
}

View File

@@ -0,0 +1,10 @@
import qbs
Project {
name: "ExtensionSystem cirular plugins autotests"
references: [
"plugin1/plugin1.qbs",
"plugin2/plugin2.qbs",
"plugin3/plugin3.qbs"
]
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../../../plugin.qbs" as Plugin
Plugin {
name: "circular_plugin1"
filesToCopy: "plugin.xml"
files: ["plugin1.h", "plugin1.cpp"].concat(filesToCopy)
cpp.defines: base.concat(["PLUGIN1_LIBRARY"])
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../../../plugin.qbs" as Plugin
Plugin {
name: "circular_plugin2"
filesToCopy: "plugin.xml"
files: ["plugin2.h", "plugin2.cpp"].concat(filesToCopy)
cpp.defines: base.concat(["PLUGIN2_LIBRARY"])
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../../../plugin.qbs" as Plugin
Plugin {
name: "circular_plugin3"
filesToCopy: "plugin.xml"
files: ["plugin3.h", "plugin3.cpp"].concat(filesToCopy)
cpp.defines: base.concat(["PLUGIN3_LIBRARY"])
}

View File

@@ -0,0 +1,10 @@
import qbs
Project {
name: "ExtensionSystem correct plugins autotests"
references: [
"plugin1/plugin1.qbs",
"plugin2/plugin2.qbs",
"plugin3/plugin3.qbs"
]
}

View File

@@ -0,0 +1,15 @@
import qbs
import "../../../plugin.qbs" as Plugin
Plugin {
name: "correct_plugin1"
Depends { name: "correct_plugin2" }
Depends { name: "correct_plugin3" }
filesToCopy: "plugin.spec"
additionalRPaths: [
destinationDirectory + "/../plugin2",
destinationDirectory + "/../plugin3"
]
files: ["plugin1.h", "plugin1.cpp"].concat(filesToCopy)
cpp.defines: base.concat(["PLUGIN1_LIBRARY"])
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../../../plugin.qbs" as Plugin
Plugin {
name: "correct_plugin2"
filesToCopy: "plugin.spec"
files: ["plugin2.h", "plugin2.cpp"].concat(filesToCopy)
cpp.defines: base.concat(["PLUGIN2_LIBRARY"])
}

View File

@@ -0,0 +1,11 @@
import qbs
import "../../../plugin.qbs" as Plugin
Plugin {
name: "correct_plugin3"
Depends { name: "correct_plugin2" }
filesToCopy: "plugin.spec"
additionalRPaths: [destinationDirectory + "/../plugin2"]
files: ["plugin3.h", "plugin3.cpp"].concat(filesToCopy)
cpp.defines: base.concat(["PLUGIN3_LIBRARY"])
}

View File

@@ -0,0 +1,10 @@
import qbs
Project {
name: "PluginManager autotests"
references: [
"circularplugins/circularplugins.qbs",
"correctplugins1/correctplugins1.qbs",
"test.qbs"
]
}

View File

@@ -0,0 +1,34 @@
import qbs
import qbs.File
import qbs.FileInfo
import "../../autotest.qbs" as Autotest
import "../copytransformer.qbs" as CopyTransformer
Autotest {
name: "PluginManager autotest"
Depends { name: "Aggregation" }
Depends { name: "ExtensionSystem" }
Depends { name: "circular_plugin1" }
Depends { name: "circular_plugin2" }
Depends { name: "circular_plugin3" }
Depends { name: "correct_plugin1" }
Depends { name: "correct_plugin2" }
Depends { name: "correct_plugin3" }
Group {
id: pluginGroup
name: "plugins"
files: [
"plugins/otherplugin.xml",
"plugins/plugin1.xml",
"plugins/myplug/myplug.xml"
]
}
CopyTransformer {
sourceFiles: pluginGroup.files
targetDirectory: product.destinationDirectory + "/plugins"
}
files: "tst_pluginmanager.cpp"
cpp.defines: base.concat(['PLUGINMANAGER_TESTS_DIR="' + destinationDirectory + '"'])
}

View File

@@ -0,0 +1,6 @@
import qbs
Project {
name: "ExtensionSystem pluginspec autotests"
references: ["testplugin/testplugin.qbs", "test.qbs"]
}

View File

@@ -0,0 +1,63 @@
import qbs
// TODO: Remove when import bug is fixed
import qbs.File
import qbs.FileInfo
import "../../autotest.qbs" as Autotest
import "../copytransformer.qbs" as CopyTransformer
Autotest {
name: "ExtensionSystem pluginspec autotest"
Depends { name: "Aggregation" }
Depends { name: "ExtensionSystem" }
Depends { name: "pluginspec_test" }
cpp.defines: base.concat(['PLUGINSPEC_DIR="' + destinationDirectory + '"'])
files: "tst_pluginspec.cpp"
Group {
id: testSpecsGroup
name: "test specs"
files: [
"testspecs/simplespec.xml",
"testspecs/simplespec_experimental.xml",
"testspecs/spec1.xml",
"testspecs/spec2.xml",
"testspecs/spec_wrong1.xml",
"testspecs/spec_wrong2.xml",
"testspecs/spec_wrong3.xml",
"testspecs/spec_wrong4.xml",
"testspecs/spec_wrong5.xml",
]
}
Group {
id: testDependenciesGroup
name: "test dependencies"
files: [
"testdependencies/spec1.xml",
"testdependencies/spec2.xml",
"testdependencies/spec3.xml",
"testdependencies/spec4.xml",
"testdependencies/spec5.xml",
]
}
Group {
id: specGroup
name: "spec"
files: ["testdir/spec.xml"]
}
CopyTransformer {
sourceFiles: testSpecsGroup.files
targetDirectory: product.destinationDirectory + "/testspecs"
}
CopyTransformer {
sourceFiles: testDependenciesGroup.files
targetDirectory: product.destinationDirectory + "/testdependencies"
}
CopyTransformer {
sourceFiles: specGroup.files
targetDirectory: product.destinationDirectory + "/testdir"
}
}

View File

@@ -0,0 +1,12 @@
import qbs
import "../../plugin.qbs" as Plugin
Plugin {
name: "pluginspec_test"
files: [
"testplugin.h", "testplugin.cpp",
"testplugin_global.h"
].concat(filesToCopy)
filesToCopy: "testplugin.xml"
cpp.defines: base.concat(["MYPLUGIN_LIBRARY"])
}

View File

@@ -0,0 +1,131 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "ExternalTool autotest"
property path corePluginDir: project.ide_source_tree + "/src/plugins/coreplugin"
// TODO: This should be all that is needed here: Depends { name: "Core" }
Depends { name: "app_version_header" }
Depends { name: "Aggregation" }
Depends { name: "ExtensionSystem" }
Depends { name: "Utils" }
Depends { name: "Qt"; submodules: ["help", "printsupport", "sql"]; }
Depends { name: "Qt.widgets" } // TODO: qbs bug, remove when fixed
Group {
name: "Sources from Core plugin"
prefix: product.corePluginDir + '/'
files: [
"actionmanager/*",
"dialogs/*",
"editormanager/*",
"documentmanager.h", "documentmanager.cpp",
"editortoolbar.h", "editortoolbar.cpp",
"externaltool.h", "externaltool.cpp",
"externaltoolmanager.h",
"fancyactionbar.h", "fancyactionbar.cpp",
"fancytabwidget.h", "fancytabwidget.cpp",
"featureprovider.h", "featureprovider.cpp",
"fileiconprovider.h", "fileiconprovider.cpp",
"fileutils.h", "fileutils.cpp",
"findplaceholder.h", "findplaceholder.cpp",
"generalsettings.*",
"helpmanager.h", "helpmanager.cpp",
"icontext.h", "icontext.cpp",
"icore.h", "icore.cpp",
"icorelistener.h",
"idocument.h", "idocument.cpp",
"idocumentfactory.h",
"id.h", "id.cpp",
"imode.h", "imode.cpp",
"inavigationwidgetfactory.h", "inavigationwidgetfactory.cpp",
"infobar.h", "infobar.cpp",
"ioutputpane.h",
"iversioncontrol.h", "iversioncontrol.cpp",
"mainwindow.h", "mainwindow.cpp",
"manhattanstyle.h", "manhattanstyle.cpp",
"messagemanager.h", "messagemanager.cpp",
"messageoutputwindow.h", "messageoutputwindow.cpp",
"mimedatabase.h", "mimedatabase.cpp",
"mimetypemagicdialog.*",
"mimetypesettings.h", "mimetypesettings.cpp",
"minisplitter.h", "minisplitter.cpp",
"modemanager.h", "modemanager.cpp",
"navigationsubwidget.h", "navigationsubwidget.cpp",
"navigationwidget.h", "navigationwidget.cpp",
"outputpane.h", "outputpane.cpp",
"outputpanemanager.h", "outputpanemanager.cpp",
"outputwindow.h", "outputwindow.cpp",
"plugindialog.h", "plugindialog.cpp",
"rightpane.h", "rightpane.cpp",
"settingsdatabase.h", "settingsdatabase.cpp",
"statusbarmanager.h", "statusbarmanager.cpp",
"statusbarwidget.h", "statusbarwidget.cpp",
"styleanimator.h", "styleanimator.cpp",
"toolsettings.h", "toolsettings.cpp",
"variablechooser.h", "variablechooser.cpp",
"variablemanager.h", "variablemanager.cpp",
"vcsmanager.h", "vcsmanager.cpp",
"versiondialog.h", "versiondialog.cpp",
]
}
Group {
name: "Progress Manager"
prefix: product.corePluginDir + "/progressmanager/"
files: [
"futureprogress.cpp", "futureprogress.h",
"progressbar.cpp", "progressbar.h",
"progressmanager.cpp", "progressmanager.h", "progressmanager_p.h",
"progressview.cpp", "progressview.h",
]
}
Group {
name: "ProgressManager_win"
prefix: product.corePluginDir + '/'
condition: qbs.targetOS.contains("windows")
files: [
"progressmanager/progressmanager_win.cpp",
]
}
Group {
name: "ProgressManager_mac"
prefix: product.corePluginDir + '/'
condition: qbs.targetOS.contains("osx")
files: [
"macfullscreen.h",
"macfullscreen.mm",
"progressmanager/progressmanager_mac.mm",
]
}
Group {
name: "ProgressManager_x11"
prefix: product.corePluginDir + '/'
condition: qbs.targetOS.contains("unix") && !qbs.targetOS.contains("osx")
files: [
"progressmanager/progressmanager_x11.cpp",
]
}
Group {
name: "Test sources"
files: "tst_externaltooltest.cpp"
}
cpp.defines: base.concat([
"QT_DISABLE_DEPRECATED_BEFORE=0x040900",
"CORE_LIBRARY" // Needed to compile on Windows...
])
cpp.includePaths: base.concat([
product.buildDirectory + "/GeneratedFiles/Core",
corePluginDir + "/.."
])
cpp.dynamicLibraries: {
if (qbs.targetOS.contains("windows")) return [
"ole32",
"user32"
]
}
cpp.frameworks: qbs.targetOS.contains("osx") ? ["AppKit"] : undefined
}

View File

@@ -0,0 +1,13 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "File search autotest"
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // For QTextDocument
files: [
"testfile.txt",
"tst_filesearch.cpp",
"tst_filesearch.qrc"
]
}

View File

@@ -0,0 +1,11 @@
import qbs
Project {
name: "Generic highlighter autotests"
property path genericHighlighterDir: project.ide_source_tree
+ "/src/plugins/texteditor/generichighlighter"
references: [
"highlighterengine/highlighterengine.qbs",
"specificrules/specificrules.qbs"
]
}

View File

@@ -0,0 +1,47 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "Highlighter engine autotest"
Depends { name: "Utils" }
Depends { name: "Qt.widgets" }
Group {
name: "Sources from TextEditor plugin"
prefix: project.genericHighlighterDir + '/'
files: [
"context.h", "context.cpp",
"dynamicrule.h", "dynamicrule.cpp",
"highlightdefinition.h", "highlightdefinition.cpp",
"highlighter.h", "highlighter.cpp",
"itemdata.h", "itemdata.cpp",
"keywordlist.h", "keywordlist.cpp",
"progressdata.h", "progressdata.cpp",
"rule.h", "rule.cpp",
"specificrules.h", "specificrules.cpp"
]
}
Group {
name: "Test sources"
files: [
"formats.h", "formats.cpp",
"highlightermock.h", "highlightermock.cpp",
"tst_highlighterengine.cpp"
]
}
Group {
name: "Drop-in sources for the plugin"
prefix: "texteditor/"
files: [
"basetextdocumentlayout.h",
"syntaxhighlighter.h", "syntaxhighlighter.cpp",
"tabsettings.h"
]
}
cpp.defines: base.concat(["TEXTEDITOR_LIBRARY"]) // For Windows
cpp.includePaths: base.concat([
path,
project.genericHighlighterDir,
project.genericHighlighterDir + "/../..",
path])
}

View File

@@ -0,0 +1,27 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "Generic highlighter specific rules autotest"
Depends { name: "Qt.widgets" }
Group {
name: "Sources from TextEditor plugin"
prefix: project.genericHighlighterDir + '/'
files: [
"context.cpp",
"dynamicrule.cpp",
"highlightdefinition.cpp",
"itemdata.cpp",
"keywordlist.cpp",
"progressdata.cpp",
"rule.cpp",
"specificrules.cpp",
]
}
Group {
name: "Test sources"
files: "tst_specificrules.cpp"
}
cpp.includePaths: base.concat([project.genericHighlighterDir + "/../.."])
}

View File

@@ -0,0 +1,16 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "IoUtils autotest"
Depends { name: "Qt.core" }
files: [
project.ide_source_tree + "/src/shared/proparser/ioutils.cpp",
"tst_ioutils.cpp"
]
Properties {
condition: Qt.core.versionMajor == 4
cpp.defines: base.concat(["QT_BOOTSTRAPPED"]) // For shellQuote().
}
cpp.includePaths: base.concat([project.ide_source_tree + "/src/shared"])
}

View File

@@ -0,0 +1,29 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "ProFileWriter autotest"
Depends { name: "Qt.xml" }
Group {
name: "Sources from ProParser"
id: proParserGroup
prefix: project.ide_source_tree + "/src/shared/proparser/"
files: [
"ioutils.h", "ioutils.cpp",
"profileevaluator.h", "profileevaluator.cpp",
"proitems.h", "proitems.cpp",
"prowriter.h", "prowriter.cpp",
"qmake_global.h",
"qmakebuiltins.cpp",
"qmakeevaluator.h", "qmakeevaluator_p.h", "qmakeevaluator.cpp",
"qmakeglobals.h", "qmakeglobals.cpp",
"qmakeparser.h", "qmakeparser.cpp",
"qmakevfs.h", "qmakevfs.cpp"
]
}
Group {
name: "Test sources"
files: "tst_profilewriter.cpp"
}
cpp.includePaths: base.concat([proParserGroup.prefix])
}

View File

@@ -0,0 +1,16 @@
import qbs
import "../../../autotest.qbs" as Autotest
Autotest {
name: "QML code model check autotest"
Depends { name: "LanguageUtils" }
Depends { name: "QmlJS" }
Depends { name: "Utils" }
Depends { name: "Qt.widgets" }
files: "tst_check.cpp"
cpp.defines: base.concat([
'QT_CREATOR',
'QTCREATORDIR="' + project.ide_source_tree + '"',
'TESTSRCDIR="' + path + '"'
])
}

View File

@@ -0,0 +1,6 @@
import qbs
Project {
name: "QML code model autotests"
references: ["check/check.qbs"]
}

14
tests/auto/qml/qml.qbs Normal file
View File

@@ -0,0 +1,14 @@
import qbs
Project {
name: "QML autotests"
references: [
"codemodel/codemodel.qbs",
// "qmldesigner/qmldesigner.qbs",
"qmleditor/qmleditor.qbs",
"qmljssimplereader/qmljssimplereader.qbs",
"qmlprojectmanager/qmlprojectmanager.qbs",
"qrcparser/qrcparser.qbs",
"reformatter/reformatter.qbs"
]
}

View File

@@ -0,0 +1,12 @@
import qbs
import "../../../autotest.qbs" as Autotest
Autotest {
name: "QML code formatter autotest"
Depends { name: "LanguageUtils" }
Depends { name: "QmlJS" }
Depends { name: "QmlJSTools" }
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
files: "tst_qmlcodeformatter.cpp"
}

View File

@@ -0,0 +1,6 @@
import qbs
Project {
name: "QML editor autotests"
references: ["qmlcodeformatter/qmlcodeformatter.qbs"]
}

View File

@@ -0,0 +1,11 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "QMLJS simple reader autotest"
Depends { name: "QmlJS" }
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
files: "tst_qmljssimplereader.cpp"
cpp.defines: base.concat(["QT_CREATOR"])
}

View File

@@ -0,0 +1,14 @@
import qbs
import "../../../autotest.qbs" as Autotest
Autotest {
condition: false
name: "QmlProjectManager file format autotest"
Depends { name: "QmlProjectManager" }
Depends { name: "Utils" }
Depends { name: "Qt"; submodules: ["script", "declarative"]; }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
files: "tst_fileformat.cpp"
cpp.includePaths: base.concat([project.ide_source_tree + "/src/plugins/qmlprojectmanager/fileformat"])
cpp.defines: base.concat(['SRCDIR="' + path + '"'])
}

View File

@@ -0,0 +1,7 @@
import qbs
Project {
condition: false // Known to be broken, nobody cares.
name: "QmlProjectManager autotests"
references: "fileformat/fileformat.qbs"
}

View File

@@ -0,0 +1,10 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "QML qrc parser autotest"
Depends { name: "QmlJS" }
Depends { name: "QmlJSTools" }
files: "tst_qrcparser.cpp"
cpp.defines: base.concat(['TESTSRCDIR="' + path + '"'])
}

View File

@@ -0,0 +1,15 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "QML reformatter autotest"
Depends { name: "QmlJS" }
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
files: "tst_reformatter.cpp"
cpp.defines: base.concat([
'QT_CREATOR',
'QTCREATORDIR="' + project.ide_source_tree + '"',
'TESTSRCDIR="' + path + '"'
])
}

View File

@@ -0,0 +1,13 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "QtcProcess autotest"
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // TODO: qbs bug, remove when fixed
files: "tst_qtcprocess.cpp"
Properties {
condition: qbs.targetOS === "windows"
cpp.defines: base.concat(["_CRT_SECURE_NO_WARNINGS"])
}
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "TreeViewFind autotest"
Depends { name: "Find" }
Depends { name: "Qt.widgets" } // For QTextDocument
files: "tst_treeviewfind.cpp"
}

View File

@@ -0,0 +1,13 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "FileUtils autotest"
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
Properties {
condition: qbs.toolchain.contains("gcc")
cpp.cxxFlags: base.concat(["-Wno-trigraphs"])
}
files: "tst_fileutils.cpp"
}

View File

@@ -0,0 +1,6 @@
import qbs
Project {
name: "Utils autotests"
references: ["fileutils/fileutils.qbs"]
}

View File

@@ -0,0 +1,9 @@
import qbs
import "../autotest.qbs" as Autotest
Autotest {
name: "StringUtils autotest"
Depends { name: "Utils" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
files: "tst_stringutils.cpp"
}

View File

@@ -0,0 +1,6 @@
import qbs
Project {
name: "Callgrind autotests"
references: ["callgrindparsertests.qbs"]
}

View File

@@ -0,0 +1,16 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "Callgrind parser autotest"
Depends { name: "QtcSsh" }
Depends { name: "Utils" }
Depends { name: "Valgrind" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
property path pluginDir: project.ide_source_tree + "/src/plugins/valgrind"
files: ["callgrindparsertests.h", "callgrindparsertests.cpp"]
cpp.defines: base.concat([
'CALLGRINDPARSERTESTS',
'PARSERTESTS_DATA_DIR="' + path + '/data"'
])
}

View File

@@ -0,0 +1,11 @@
import qbs
Project {
name: "Memcheck autotests"
references: [
"testapps/testapps.qbs",
"modeldemo.qbs",
"parsertests.qbs",
"testrunner.qbs"
]
}

View File

@@ -0,0 +1,17 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "Memcheck ModelDemo autotest"
Depends { name: "QtcSsh" }
Depends { name: "Utils" }
Depends { name: "Valgrind" }
Depends { name: "valgrind-fake" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
Depends { name: "Qt.network" }
files: ["modeldemo.h", "modeldemo.cpp"]
cpp.defines: base.concat([
'PARSERTESTS_DATA_DIR="' + path + '/data"',
'VALGRIND_FAKE_PATH="' + product.buildDirectory + '/' + project.ide_bin_path + '/valgrind-fake"'
])
}

View File

@@ -0,0 +1,17 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "Memcheck parser autotest"
Depends { name: "QtcSsh" }
Depends { name: "Utils" }
Depends { name: "Valgrind" }
Depends { name: "valgrind-fake" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
Depends { name: "Qt.network" }
files: ["parsertests.h", "parsertests.cpp"]
cpp.defines: base.concat([
'PARSERTESTS_DATA_DIR="' + path + '/data"',
'VALGRIND_FAKE_PATH="' + product.buildDirectory + '/' + project.ide_bin_path + '/valgrind-fake"'
])
}

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "free1" }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "free2" }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "invalidjump" }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "leak1" }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "leak2" }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "leak3" }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "leak4" }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "overlap"; cpp.cxxFlags: base.concat(["-O0", "-fno-builtin"]); }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "syscall"; cpp.cxxFlags: base.concat(["-O0"]); }

View File

@@ -0,0 +1,9 @@
import qbs
import "../../../autotest.qbs" as Autotest
Autotest {
name: "Memcheck " + testName + " autotest"
targetName: testName // Test runner hardcodes the names of the executables
destinationDirectory: buildDirectory + '/' + project.ide_bin_path + '/testapps/' + testName
files: "main.cpp"
}

View File

@@ -0,0 +1,19 @@
import qbs
Project {
name: "Memcheck test apps"
references: [
"free1/free1.qbs",
"free2/free2.qbs",
"invalidjump/invalidjump.qbs",
"leak1/leak1.qbs",
"leak2/leak2.qbs",
"leak3/leak3.qbs",
"leak4/leak4.qbs",
"overlap/overlap.qbs",
"syscall/syscall.qbs",
"uninit1/uninit1.qbs",
"uninit2/uninit2.qbs",
"uninit3/uninit3.qbs"
]
}

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "uninit1"; cpp.cxxFlags: base.concat(["-O0"]); }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "uninit2"; cpp.cxxFlags: base.concat(["-O0"]); }

View File

@@ -0,0 +1,4 @@
import qbs
import "../testapp.qbs" as TestApp
TestApp { testName: "uninit3"; cpp.cxxFlags: base.concat(["-O0"]); }

View File

@@ -0,0 +1,28 @@
import qbs
import "../../autotest.qbs" as Autotest
Autotest {
name: "Memcheck test runner"
Depends { name: "Memcheck free1 autotest" }
Depends { name: "Memcheck free2 autotest" }
Depends { name: "Memcheck invalidjump autotest" }
Depends { name: "Memcheck leak1 autotest" }
Depends { name: "Memcheck leak2 autotest" }
Depends { name: "Memcheck leak3 autotest" }
Depends { name: "Memcheck leak4 autotest" }
Depends { name: "Memcheck overlap autotest" }
Depends { name: "Memcheck syscall autotest" }
Depends { name: "Memcheck uninit1 autotest" }
Depends { name: "Memcheck uninit2 autotest" }
Depends { name: "Memcheck uninit3 autotest" }
Depends { name: "QtcSsh" }
Depends { name: "Utils" }
Depends { name: "Valgrind" }
Depends { name: "Qt.widgets" } // TODO: Remove when qbs bug is fixed
files: ["testrunner.h", "testrunner.cpp"]
destinationDirectory: project.ide_bin_path
cpp.defines: base.concat([
'TESTRUNNER_SRC_DIR="' + path + '/testapps"',
'TESTRUNNER_APP_DIR="' + product.buildDirectory + '/' + destinationDirectory + '/testapps"'
])
}

View File

@@ -0,0 +1,10 @@
import qbs
Project {
name: "Valgrind autotests"
condition: qbs.targetOS.contains("unix")
references: [
"callgrind/callgrind.qbs",
"memcheck/memcheck.qbs"
]
}

6
tests/tests.qbs Normal file
View File

@@ -0,0 +1,6 @@
import qbs
Project {
name: "Tests"
references: ["auto/auto.qbs"]
}