forked from qt-creator/qt-creator
... with recent (namespaced) Qt dev.
[...]tests/unit/unittest/3rdparty/googletest/googletest/include/gtest/gtest-matchers.h:184:14: error: invalid conversion from 'const char*' to 'ushort' {aka 'short unsigned int'} [-fpermissive]
In file included from /data/dev/qt-6-ns/qtbase/include/QtCore/qstring.h:1,
from /data/dev/qt-6-ns/qtbase/include/QtCore/QString:1,
from /data/dev/creator-out/src/libs/utils/smallstringview.h:9,
from /data/dev/creator-out/src/libs/utils/smallstringliteral.h:8,
from /data/dev/creator-out/src/libs/utils/smallstring.h:8,
from /data/dev/creator-out/src/libs/utils/smallstringvector.h:8,
from /data/dev/creator-out/src/libs/utils/smallstringio.h:6,
from /data/dev/creator-out/tests/unit/unittest/gtest-creator-printing.h:7,
from /data/dev/creator-out/tests/unit/unittest/googletest.h:17,
from /data/dev/creator-out/tests/unit/unittest/externaldependenciesmock.h:6,
from /data/dev/creator-out/tests/unit/unittest/modulescanner-test.cpp:4:
a/dev/qt-6-ns/qtbase/src/corelib/text/qstring.h:1006:61: note: initializing argument 2 of 'bool Ns::operator==(const Ns::QString&, Ns::QChar)'
[104/1218] Building CXX object src/plugins/coreplugin/CMakeFiles/Core.dir/locator/executefilter.cpp.o^C
Change-Id: Id8d4533b9e53d7aa81edc64a99df31dd1d6ac5bf
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
540 lines
14 KiB
C++
540 lines
14 KiB
C++
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
|
|
#include "googletest.h" // IWYU pragma: keep
|
|
#include "google-using-declarations.h"
|
|
|
|
#include <qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.h>
|
|
|
|
#include <utils/algorithm.h>
|
|
namespace {
|
|
|
|
constexpr QLatin1String localTestDataDir{UNITTEST_DIR "/qmlprojectmanager/data"};
|
|
|
|
class QmlProjectItem : public testing::Test
|
|
{
|
|
protected:
|
|
static void SetUpTestSuite()
|
|
{
|
|
projectItemEmpty = std::make_unique<const QmlProjectManager::QmlProjectItem>(
|
|
Utils::FilePath::fromString(localTestDataDir + "/getter-setter/empty.qmlproject"), true);
|
|
|
|
projectItemNotEmpty = std::make_unique<const QmlProjectManager::QmlProjectItem>(
|
|
Utils::FilePath::fromString(localTestDataDir + "/getter-setter/notEmpty.qmlproject"),
|
|
true);
|
|
|
|
projectItemFileFilters = std::make_unique<const QmlProjectManager::QmlProjectItem>(
|
|
Utils::FilePath::fromString(localTestDataDir + "/file-filters/MaterialBundle.qmlproject"),
|
|
true);
|
|
}
|
|
|
|
static void TearDownTestSuite()
|
|
{
|
|
projectItemEmpty.reset();
|
|
projectItemNotEmpty.reset();
|
|
projectItemFileFilters.reset();
|
|
}
|
|
|
|
protected:
|
|
static inline std::unique_ptr<const QmlProjectManager::QmlProjectItem> projectItemEmpty;
|
|
static inline std::unique_ptr<const QmlProjectManager::QmlProjectItem> projectItemNotEmpty;
|
|
std::unique_ptr<QmlProjectManager::QmlProjectItem>
|
|
projectItemSetters = std::make_unique<QmlProjectManager::QmlProjectItem>(
|
|
Utils::FilePath::fromString(localTestDataDir + "/getter-setter/empty.qmlproject"), true);
|
|
static inline std::unique_ptr<const QmlProjectManager::QmlProjectItem> projectItemFileFilters;
|
|
};
|
|
|
|
auto createAbsoluteFilePaths(const QStringList &fileList)
|
|
{
|
|
return Utils::transform(fileList, [](const QString &fileName) {
|
|
return Utils::FilePath::fromString(localTestDataDir + "/file-filters").pathAppended(fileName);
|
|
});
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyMainFileProject)
|
|
{
|
|
auto mainFile = projectItemNotEmpty->mainFile();
|
|
|
|
ASSERT_THAT(mainFile, Eq(u"content/App.qml"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyMainUIFileProject)
|
|
{
|
|
auto mainUiFile = projectItemNotEmpty->mainUiFile();
|
|
|
|
ASSERT_THAT(mainUiFile, Eq(u"Screen01.ui.qml"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyMcuProject)
|
|
{
|
|
auto isMcuProject = projectItemNotEmpty->isQt4McuProject();
|
|
|
|
ASSERT_TRUE(isMcuProject);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyQtVersion)
|
|
{
|
|
auto qtVersion = projectItemNotEmpty->versionQt();
|
|
|
|
ASSERT_THAT(qtVersion, Eq(u"6"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyQtQuickVersion)
|
|
{
|
|
auto qtQuickVersion = projectItemNotEmpty->versionQtQuick();
|
|
|
|
ASSERT_THAT(qtQuickVersion, Eq(u"6.2"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyDesignStudioVersion)
|
|
{
|
|
auto designStudioVersion = projectItemNotEmpty->versionDesignStudio();
|
|
|
|
ASSERT_THAT(designStudioVersion, Eq(u"3.9"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptySourceDirectory)
|
|
{
|
|
auto sourceDirectory = projectItemNotEmpty->sourceDirectory().path();
|
|
|
|
auto expectedSourceDir = localTestDataDir + "/getter-setter";
|
|
|
|
ASSERT_THAT(sourceDirectory, Eq(expectedSourceDir));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyTarGetNotEmptyDirectory)
|
|
{
|
|
auto targetDirectory = projectItemNotEmpty->targetDirectory();
|
|
|
|
ASSERT_THAT(targetDirectory, Eq(u"/opt/targetDirectory"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyImportPaths)
|
|
{
|
|
auto importPaths = projectItemNotEmpty->importPaths();
|
|
|
|
ASSERT_THAT(importPaths, UnorderedElementsAre(u"imports", u"asset_imports"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyFileSelectors)
|
|
{
|
|
auto fileSelectors = projectItemNotEmpty->fileSelectors();
|
|
|
|
ASSERT_THAT(fileSelectors, UnorderedElementsAre(u"WXGA", u"darkTheme", u"ShowIndicator"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyMultiLanguageSupport)
|
|
{
|
|
auto multilanguageSupport = projectItemNotEmpty->multilanguageSupport();
|
|
|
|
ASSERT_TRUE(multilanguageSupport);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptySupportedLanguages)
|
|
{
|
|
auto supportedLanguages = projectItemNotEmpty->supportedLanguages();
|
|
|
|
ASSERT_THAT(supportedLanguages, UnorderedElementsAre(u"en", u"fr"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyPrimaryLanguage)
|
|
{
|
|
auto primaryLanguage = projectItemNotEmpty->primaryLanguage();
|
|
;
|
|
|
|
ASSERT_THAT(primaryLanguage, Eq(u"en"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyWidgetApp)
|
|
{
|
|
auto widgetApp = projectItemNotEmpty->widgetApp();
|
|
|
|
ASSERT_TRUE(widgetApp);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyFileList)
|
|
{
|
|
QStringList fileList;
|
|
for (const auto &file : projectItemNotEmpty->files()) {
|
|
fileList.append(file.path());
|
|
}
|
|
|
|
auto expectedFileList = localTestDataDir + "/getter-setter/qtquickcontrols2.conf";
|
|
|
|
ASSERT_THAT(fileList, UnorderedElementsAre(expectedFileList));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyShaderToolArgs)
|
|
{
|
|
auto shaderToolArgs = projectItemNotEmpty->shaderToolArgs();
|
|
|
|
ASSERT_THAT(shaderToolArgs,
|
|
UnorderedElementsAre(u"-s", u"--glsl", u"\"100 es,120,150\"", u"--hlsl", u"50", u"--msl", u"12"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyShaderToolFiles)
|
|
{
|
|
auto shaderToolFiles = projectItemNotEmpty->shaderToolFiles();
|
|
|
|
ASSERT_THAT(shaderToolFiles, UnorderedElementsAre(u"content/shaders/*"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyEnvironment)
|
|
{
|
|
auto env = projectItemNotEmpty->environment();
|
|
|
|
ASSERT_THAT(env,
|
|
UnorderedElementsAre(
|
|
Utils::EnvironmentItem("QT_QUICK_CONTROLS_CONF", "qtquickcontrols2.conf")));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetNotEmptyForceFreeType)
|
|
{
|
|
auto forceFreeType = projectItemNotEmpty->forceFreeType();
|
|
|
|
ASSERT_TRUE(forceFreeType);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyMainFileProject)
|
|
{
|
|
auto mainFile = projectItemEmpty->mainFile();
|
|
|
|
ASSERT_THAT(mainFile, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyMainUIFileProject)
|
|
{
|
|
auto mainUiFile = projectItemEmpty->mainUiFile();
|
|
|
|
ASSERT_THAT(mainUiFile, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyMcuProject)
|
|
{
|
|
auto isMcuProject = projectItemEmpty->isQt4McuProject();
|
|
|
|
ASSERT_FALSE(isMcuProject);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyQtVersion)
|
|
{
|
|
auto qtVersion = projectItemEmpty->versionQt();
|
|
|
|
// default Qt Version is "5" for Design Studio projects
|
|
ASSERT_THAT(qtVersion, Eq(u"5"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyQtQuickVersion)
|
|
{
|
|
auto qtQuickVersion = projectItemEmpty->versionQtQuick();
|
|
|
|
ASSERT_THAT(projectItemEmpty->versionQtQuick(), IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyDesignStudioVersion)
|
|
{
|
|
auto designStudioVersion = projectItemEmpty->versionDesignStudio();
|
|
|
|
ASSERT_THAT(projectItemEmpty->versionDesignStudio(), IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptySourceDirectory)
|
|
{
|
|
auto sourceDirectory = projectItemEmpty->sourceDirectory().path();
|
|
|
|
auto expectedSourceDir = localTestDataDir + "/getter-setter";
|
|
|
|
// default source directory is the project directory
|
|
ASSERT_THAT(sourceDirectory, Eq(expectedSourceDir));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyTarGetEmptyDirectory)
|
|
{
|
|
auto targetDirectory = projectItemEmpty->targetDirectory();
|
|
|
|
ASSERT_THAT(targetDirectory, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyImportPaths)
|
|
{
|
|
auto importPaths = projectItemEmpty->importPaths();
|
|
|
|
ASSERT_THAT(importPaths, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyFileSelectors)
|
|
{
|
|
auto fileSelectors = projectItemEmpty->fileSelectors();
|
|
|
|
ASSERT_THAT(fileSelectors, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyMultiLanguageSupport)
|
|
{
|
|
auto multilanguageSupport = projectItemEmpty->multilanguageSupport();
|
|
|
|
ASSERT_FALSE(multilanguageSupport);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptySupportedLanguages)
|
|
{
|
|
auto supportedLanguages = projectItemEmpty->supportedLanguages();
|
|
|
|
ASSERT_THAT(supportedLanguages, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyPrimaryLanguage)
|
|
{
|
|
auto primaryLanguage = projectItemEmpty->primaryLanguage();
|
|
|
|
ASSERT_THAT(primaryLanguage, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyWidgetApp)
|
|
{
|
|
auto widgetApp = projectItemEmpty->widgetApp();
|
|
|
|
ASSERT_FALSE(widgetApp);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyFileList)
|
|
{
|
|
auto fileList = projectItemEmpty->files();
|
|
|
|
ASSERT_THAT(fileList, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyShaderToolArgs)
|
|
{
|
|
auto shaderToolArgs = projectItemEmpty->shaderToolArgs();
|
|
|
|
ASSERT_THAT(shaderToolArgs, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyShaderToolFiles)
|
|
{
|
|
auto shaderToolFiles = projectItemEmpty->shaderToolFiles();
|
|
|
|
ASSERT_THAT(shaderToolFiles, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyEnvironment)
|
|
{
|
|
auto env = projectItemEmpty->environment();
|
|
|
|
ASSERT_THAT(env, IsEmpty());
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, GetEmptyForceFreeType)
|
|
{
|
|
auto forceFreeType = projectItemEmpty->forceFreeType();
|
|
|
|
ASSERT_FALSE(forceFreeType);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetMainFileProject)
|
|
{
|
|
projectItemSetters->setMainFile("testing");
|
|
|
|
auto mainFile = projectItemSetters->mainFile();
|
|
|
|
ASSERT_THAT(mainFile, Eq(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetMainUIFileProject)
|
|
{
|
|
projectItemSetters->setMainUiFile("testing");
|
|
|
|
auto mainUiFile = projectItemSetters->mainUiFile();
|
|
|
|
ASSERT_THAT(mainUiFile, Eq(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetImportPaths)
|
|
{
|
|
projectItemSetters->setImportPaths({"testing"});
|
|
|
|
auto importPaths = projectItemSetters->importPaths();
|
|
|
|
ASSERT_THAT(importPaths, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, AddImportPaths)
|
|
{
|
|
projectItemSetters->setImportPaths({});
|
|
projectItemSetters->addImportPath("testing");
|
|
|
|
auto importPaths = projectItemSetters->importPaths();
|
|
|
|
ASSERT_THAT(importPaths, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetFileSelectors)
|
|
{
|
|
projectItemSetters->setFileSelectors({"testing"});
|
|
|
|
auto fileSelectors = projectItemSetters->fileSelectors();
|
|
|
|
ASSERT_THAT(fileSelectors, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, AddFileSelectors)
|
|
{
|
|
projectItemSetters->setFileSelectors({});
|
|
projectItemSetters->addFileSelector("testing");
|
|
|
|
auto fileSelectors = projectItemSetters->fileSelectors();
|
|
|
|
ASSERT_THAT(fileSelectors, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetMultiLanguageSupport)
|
|
{
|
|
projectItemSetters->setMultilanguageSupport(true);
|
|
|
|
auto multilanguageSupport = projectItemSetters->multilanguageSupport();
|
|
|
|
ASSERT_TRUE(multilanguageSupport);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetSupportedLanguages)
|
|
{
|
|
projectItemSetters->setSupportedLanguages({"testing"});
|
|
|
|
auto supportedLanguages = projectItemSetters->supportedLanguages();
|
|
|
|
ASSERT_THAT(supportedLanguages, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, AddSupportedLanguages)
|
|
{
|
|
projectItemSetters->setSupportedLanguages({});
|
|
projectItemSetters->addSupportedLanguage("testing");
|
|
|
|
auto supportedLanguages = projectItemSetters->supportedLanguages();
|
|
|
|
ASSERT_THAT(supportedLanguages, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetPrimaryLanguage)
|
|
{
|
|
projectItemSetters->setPrimaryLanguage("testing");
|
|
|
|
auto primaryLanguage = projectItemSetters->primaryLanguage();
|
|
;
|
|
|
|
ASSERT_THAT(primaryLanguage, Eq(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetWidgetApp)
|
|
{
|
|
projectItemSetters->setWidgetApp(true);
|
|
|
|
auto widgetApp = projectItemSetters->widgetApp();
|
|
|
|
ASSERT_TRUE(widgetApp);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetShaderToolArgs)
|
|
{
|
|
projectItemSetters->setShaderToolArgs({"testing"});
|
|
|
|
auto shaderToolArgs = projectItemSetters->shaderToolArgs();
|
|
|
|
ASSERT_THAT(shaderToolArgs, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, AddShaderToolArgs)
|
|
{
|
|
projectItemSetters->setShaderToolArgs({});
|
|
projectItemSetters->addShaderToolArg("testing");
|
|
|
|
auto shaderToolArgs = projectItemSetters->shaderToolArgs();
|
|
|
|
ASSERT_THAT(shaderToolArgs, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetShaderToolFiles)
|
|
{
|
|
projectItemSetters->setShaderToolFiles({"testing"});
|
|
|
|
auto shaderToolFiles = projectItemSetters->shaderToolFiles();
|
|
|
|
ASSERT_THAT(shaderToolFiles, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, AddShaderToolFiles)
|
|
{
|
|
projectItemSetters->setShaderToolFiles({});
|
|
projectItemSetters->addShaderToolFile("testing");
|
|
|
|
auto shaderToolFiles = projectItemSetters->shaderToolFiles();
|
|
|
|
ASSERT_THAT(shaderToolFiles, UnorderedElementsAre(u"testing"));
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, AddEnvironment)
|
|
{
|
|
projectItemSetters->addToEnviroment("testing", "testing");
|
|
auto envs = projectItemSetters->environment();
|
|
|
|
Utils::EnvironmentItems expectedEnvs;
|
|
expectedEnvs.push_back({"testing", "testing"});
|
|
|
|
ASSERT_EQ(envs, expectedEnvs);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetForceFreeTypeTrue)
|
|
{
|
|
projectItemSetters->setForceFreeType(true);
|
|
|
|
ASSERT_EQ(projectItemSetters->forceFreeType(), true);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetForceFreeTypeFalse)
|
|
{
|
|
projectItemSetters->setForceFreeType(false);
|
|
|
|
ASSERT_EQ(projectItemSetters->forceFreeType(), false);
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetQtVersion)
|
|
{
|
|
projectItemSetters->setVersionQt("6");
|
|
|
|
ASSERT_EQ(projectItemSetters->versionQt().toStdString(), "6");
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetQtQuickVersion)
|
|
{
|
|
projectItemSetters->setVersionQtQuick("6");
|
|
|
|
ASSERT_EQ(projectItemSetters->versionQtQuick(), "6");
|
|
}
|
|
|
|
TEST_F(QmlProjectItem, SetDesignStudioVersion)
|
|
{
|
|
projectItemSetters->setVersionDesignStudio("6");
|
|
|
|
ASSERT_EQ(projectItemSetters->versionDesignStudio(), "6");
|
|
}
|
|
|
|
// TODO: We should move this one into the integration tests
|
|
TEST_F(QmlProjectItem, TestFileFilters)
|
|
{
|
|
// GIVEN
|
|
auto fileListPath = Utils::FilePath::fromString(localTestDataDir + "/file-filters/filelist.txt");
|
|
QStringList fileNameList = QString::fromUtf8(fileListPath.fileContents().value())
|
|
.replace("\r\n", "\n")
|
|
.split("\n");
|
|
auto expectedAbsoluteFilePaths = createAbsoluteFilePaths(fileNameList);
|
|
|
|
// WHEN
|
|
auto filePaths = projectItemFileFilters->files();
|
|
|
|
// THEN
|
|
ASSERT_THAT(filePaths, UnorderedElementsAreArray(expectedAbsoluteFilePaths));
|
|
}
|
|
|
|
} // namespace
|