aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvetlana Abramenkova <sabramenkova@luxoft.com>2019-08-14 18:57:18 +0300
committerSvetlana Abramenkova <sabramenkova@luxoft.com>2019-10-03 17:11:01 +0300
commit75fdf3a9d4f6af8b86bb7ec8628038a3e424a875 (patch)
tree4e1695e377fda47a3220107e6874b889ff8628f6
parentee3277bf453502f0864e591740b1da785c4cc614 (diff)
fix resolving paths policy
Change-Id: I26a075a4fdbacbcd82ad47a44e913b1e475aa23e Fixes: AUTOSUITE-1112 Reviewed-by: Nikolay Zamotaev <nzamotaev@luxoft.com>
-rw-r--r--src/projectmanager.cpp43
1 files changed, 35 insertions, 8 deletions
diff --git a/src/projectmanager.cpp b/src/projectmanager.cpp
index fd6cad9..07659da 100644
--- a/src/projectmanager.cpp
+++ b/src/projectmanager.cpp
@@ -75,18 +75,45 @@ bool ProjectManager::read(const QString &path)
qWarning() << "Document must be a JSON object";
return false;
}
+
QJsonObject root = document.object();
- if (root.contains(MainKey))
- m_mainDocument = root.value(MainKey).toString();
if (root.contains(WorkspaceKey))
{
- m_workspace = root.value(WorkspaceKey).toString();
- }
- if (root.contains(ImportsKey) && root.value(ImportsKey).isArray()) {
- QJsonArray imports = root.value(ImportsKey).toArray();
- for (QJsonValue value : imports)
- m_imports.append(value.toString());
+ QString workspacestr = root.value(WorkspaceKey).toString();
+ QDir prjdir(m_projectLocation);
+
+ if (prjdir.exists(workspacestr)) {
+ m_workspace = QDir::cleanPath(prjdir.absoluteFilePath(workspacestr));
+ QDir workspacedir(m_workspace);
+
+ if (root.contains(MainKey)) {
+ if (workspacedir.exists(root.value(MainKey).toString())) {
+ m_mainDocument = workspacedir.relativeFilePath(root.value(MainKey).toString());
+ } else {
+ qWarning() << "File " + root.value(MainKey).toString() + " doesn't exist at " + m_workspace;
+ }
+ }
+
+ if (root.contains(ImportsKey) && root.value(ImportsKey).isArray()) {
+ QJsonArray imports = root.value(ImportsKey).toArray();
+ for (QJsonValue value : imports) {
+ if (workspacedir.exists(value.toString())) {
+ m_imports.append(workspacedir.relativeFilePath(value.toString()));
+ } else {
+ qWarning() << "Import path " + value.toString() + " doesn't exist at " + m_workspace;
+ }
+ }
+ }
+ } else {
+ qCritical() << "Workspace path " + workspacestr + " doesn't exist at " + m_projectLocation;
+ return false;
+ }
+
+ } else {
+ qCritical() << "Document must contain a workspace path";
+ return false;
}
+
return true;
}