QmlProject: Fix skipping some nodes with QDS prefix

This patch also contains the test data and updated test code for the
converters to test QDS prefixed version of .qmlproject file.

Task-number: QDS-10503
Change-Id: I496ba6f3d4d3cf90e75c2959c4196f4607677ea1
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Aleksei German <aleksei.german@qt.io>
(cherry picked from commit d39efd465c93d2c45687f19bf885679f52919ad3)
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Burak Hancerli
2023-09-25 11:53:11 +02:00
committed by Thomas Hartmann
parent bc1d590482
commit a8a58c1747
6 changed files with 402 additions and 6 deletions

View File

@@ -272,7 +272,7 @@ QJsonObject qmlProjectTojson(const Utils::FilePath &projectFile)
if (childNode->name().contains("files", Qt::CaseInsensitive)) {
PropsPair propsPair;
FileProps fileProps;
const QString childNodeName = childNode->name().toLower();
const QString childNodeName = childNode->name().toLower().remove("qds.");
const QmlJS::SimpleReaderNode::Property childNodeFilter = childNode->property("filter");
const QmlJS::SimpleReaderNode::Property childNodeDirectory = childNode->property(
"directory");

View File

@@ -10,7 +10,7 @@
namespace {
constexpr QLatin1String localTestDataDir{UNITTEST_DIR "/qmlprojectmanager/data"};
class DataSet : public testing::TestWithParam<QString>
class QmlProjectConverter : public testing::TestWithParam<QString>
{
public:
void setDataSource(const QString &dataSetName)
@@ -64,10 +64,12 @@ private:
};
INSTANTIATE_TEST_SUITE_P(QmlProjectItem,
DataSet,
::testing::Values(QString("test-set-1"), QString("test-set-2")));
QmlProjectConverter,
::testing::Values(QString("test-set-1"),
QString("test-set-2"),
QString("test-set-3")));
TEST_P(DataSet, qml_project_to_json)
TEST_P(QmlProjectConverter, qml_project_to_json)
{
// GIVEN
setDataSource(GetParam());
@@ -82,7 +84,7 @@ TEST_P(DataSet, qml_project_to_json)
ASSERT_THAT(convertedContent, Eq(targetContent));
}
TEST_P(DataSet, json_to_qml_project)
TEST_P(QmlProjectConverter, json_to_qml_project)
{
// GIVEN
setDataSource(GetParam());

View File

@@ -25,6 +25,12 @@ Test functions iterate over the "test-set-*" folders and run the tests by using
* **purpose**: testing fileselectors
* **origin**: file selectors example from playground
### test-set-3
* **purpose**: testing `QDS.` prefixes
* **origin**: copy of test-set-1
## File Filters test data
Test data contains an example project folders that file filters will be initialized and tested.

View File

@@ -0,0 +1,98 @@
// prop: json-converted
// prop: auto-generated
import QmlProject
Project {
mainFile: "content/App.qml"
mainUiFile: "content/Screen01.ui.qml"
targetDirectory: "/opt/UntitledProject13"
widgetApp: true
importPaths: [ "imports","asset_imports" ]
qdsVersion: "4.0"
quickVersion: "6.2"
qt6Project: true
qtForMCUs: true
multilanguageSupport: true
primaryLanguage: "en"
supportedLanguages: [ "en" ]
Environment {
QML_COMPAT_RESOLVE_URLS_ON_ASSIGNMENT: "1"
QT_AUTO_SCREEN_SCALE_FACTOR: "1"
QT_ENABLE_HIGHDPI_SCALING: "0"
QT_LOGGING_RULES: "qt.qml.connections=false"
QT_QUICK_CONTROLS_CONF: "qtquickcontrols2.conf"
}
ShaderTool {
args: "-s --glsl \"100 es,120,150\" --hlsl 50 --msl 12"
files: [ "content/shaders/*" ]
}
QmlFiles {
directory: "content"
}
QmlFiles {
directory: "imports"
}
QmlFiles {
directory: "asset_imports"
}
JavaScriptFiles {
directory: "content"
}
JavaScriptFiles {
directory: "imports"
}
ImageFiles {
directory: "content"
}
ImageFiles {
directory: "asset_imports"
}
Files {
directory: "."
filters: "*.conf"
files: [ "qtquickcontrols2.conf" ]
}
Files {
directory: "."
filters: "*.ttf;*.otf;*.ctf"
}
Files {
directory: "asset_imports"
filters: "*.mesh"
}
Files {
directory: "."
filters: "qmldir"
}
Files {
directory: "."
filters: "*.glsl;*.glslv;*.glslf;*.vsh;*.fsh;*.vert;*.frag;*.trag"
}
Files {
directory: "."
filters: "*.mp3;*.wav"
}
Files {
directory: "."
filters: "*.mp4"
}
}

View File

@@ -0,0 +1,112 @@
import QmlProject
Project {
QDS.mainFile: "content/App.qml"
QDS.mainUiFile: "content/Screen01.ui.qml"
/* Include .qml, .js, and image files from current directory and subdirectories */
QDS.QmlFiles {
directory: "content"
}
QDS.QmlFiles {
directory: "imports"
}
QDS.JavaScriptFiles {
directory: "content"
}
QDS.JavaScriptFiles {
directory: "imports"
}
QDS.ImageFiles {
directory: "content"
}
QDS.ImageFiles {
directory: "asset_imports"
}
QDS.Files {
filter: "*.conf"
files: ["qtquickcontrols2.conf"]
}
QDS.Files {
filter: "qmldir"
directory: "."
}
QDS.Files {
filter: "*.ttf;*.otf;*.ctf"
}
QDS.Files {
filter: "*.wav;*.mp3"
}
QDS.Files {
filter: "*.mp4"
}
QDS.Files {
filter: "*.glsl;*.glslv;*.glslf;*.vsh;*.fsh;*.vert;*.frag;*.trag"
}
QDS.Files {
filter: "*.mesh"
directory: "asset_imports"
}
QDS.Files {
filter: "*.qml"
directory: "asset_imports"
}
QDS.Environment {
QT_QUICK_CONTROLS_CONF: "qtquickcontrols2.conf"
QT_AUTO_SCREEN_SCALE_FACTOR: "1"
QML_COMPAT_RESOLVE_URLS_ON_ASSIGNMENT: "1"
QT_LOGGING_RULES: "qt.qml.connections=false"
QT_ENABLE_HIGHDPI_SCALING: "0"
/* Useful for debugging
QSG_VISUALIZE=batches
QSG_VISUALIZE=clip
QSG_VISUALIZE=changes
QSG_VISUALIZE=overdraw
*/
}
QDS.qt6Project: true
/* List of plugin directories passed to QML runtime */
QDS.importPaths: [ "imports", "asset_imports" ]
/* Required for deployment */
QDS.targetDirectory: "/opt/UntitledProject13"
QDS.qdsVersion: "4.0"
QDS.quickVersion: "6.2"
QDS.qtForMCUs: true
/* If any modules the project imports require widgets (e.g. QtCharts), widgetApp must be true */
QDS.widgetApp: true
/* args: Specifies command line arguments for qsb tool to generate shaders.
files: Specifies target files for qsb tool. If path is included, it must be relative to this file.
Wildcard '*' can be used in the file name part of the path.
e.g. files: [ "content/shaders/*.vert", "*.frag" ] */
QDS.ShaderTool {
args: "-s --glsl \"100 es,120,150\" --hlsl 50 --msl 12"
files: [ "content/shaders/*" ]
}
QDS.multilanguageSupport: true
QDS.supportedLanguages: ["en"]
QDS.primaryLanguage: "en"
}

View File

@@ -0,0 +1,178 @@
{
"deployment": {
"targetDirectory": "/opt/UntitledProject13"
},
"environment": {
"QML_COMPAT_RESOLVE_URLS_ON_ASSIGNMENT": "1",
"QT_AUTO_SCREEN_SCALE_FACTOR": "1",
"QT_ENABLE_HIGHDPI_SCALING": "0",
"QT_LOGGING_RULES": "qt.qml.connections=false",
"QT_QUICK_CONTROLS_CONF": "qtquickcontrols2.conf"
},
"fileGroups": {
"config": {
"directories": [
"."
],
"files": [
{
"name": "qtquickcontrols2.conf"
}
],
"filters": [
"*.conf"
]
},
"font": {
"directories": [
"."
],
"files": [
],
"filters": [
"*.ttf",
"*.otf",
"*.ctf"
]
},
"image": {
"directories": [
"content",
"asset_imports"
],
"files": [
],
"filters": [
"*.jpeg",
"*.jpg",
"*.png",
"*.svg",
"*.hdr",
".ktx"
]
},
"javaScript": {
"directories": [
"content",
"imports"
],
"files": [
],
"filters": [
"*.js",
"*.ts"
]
},
"meshes": {
"directories": [
"asset_imports"
],
"files": [
],
"filters": [
"*.mesh"
]
},
"qml": {
"directories": [
"content",
"imports",
"asset_imports"
],
"files": [
],
"filters": [
"*.qml"
]
},
"qmldir": {
"directories": [
"."
],
"files": [
],
"filters": [
"qmldir"
]
},
"shader": {
"directories": [
"."
],
"files": [
],
"filters": [
"*.glsl",
"*.glslv",
"*.glslf",
"*.vsh",
"*.fsh",
"*.vert",
"*.frag",
"*.trag"
]
},
"sound": {
"directories": [
"."
],
"files": [
],
"filters": [
"*.mp3",
"*.wav"
]
},
"video": {
"directories": [
"."
],
"files": [
],
"filters": [
"*.mp4"
]
}
},
"fileVersion": 1,
"importPaths": [
"imports",
"asset_imports"
],
"language": {
"multiLanguageSupport": true,
"primaryLanguage": "en",
"supportedLanguages": [
"en"
]
},
"mcuConfig": {
"mcuEnabled": true
},
"runConfig": {
"fileSelectors": [
],
"mainFile": "content/App.qml",
"mainUiFile": "content/Screen01.ui.qml",
"widgetApp": true
},
"shaderTool": {
"args": [
"-s",
"--glsl",
"\"100 es,120,150\"",
"--hlsl",
"50",
"--msl",
"12"
],
"files": [
"content/shaders/*"
]
},
"versions": {
"designStudio": "4.0",
"qt": "6",
"qtQuick": "6.2"
}
}