forked from qt-creator/qt-creator
SdkTool: Don't destroy :// parts in qmake paths
Change-Id: I1b8fef656550b7d2e59e6a606728d0f3e85d5af2 Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -252,6 +252,15 @@ void AddQtOperation::unittest()
|
||||
QCOMPARE(version1.value(QLatin1String(QMAKE)).toString(), QLatin1String("/tmp/test/qmake2"));
|
||||
QVERIFY(version1.contains(QLatin1String("extraData")));
|
||||
QCOMPARE(version1.value(QLatin1String("extraData")).toString(), QLatin1String("extraValue"));
|
||||
|
||||
// Docker paths
|
||||
qtData.m_id = "testId3";
|
||||
qtData.m_qmake = "docker://image///path/to//some/qmake";
|
||||
|
||||
map = qtData.addQt(map);
|
||||
QVariantMap version2 = map.value(QLatin1String("QtVersion.2")).toMap();
|
||||
QVERIFY(version2.contains(QLatin1String(QMAKE)));
|
||||
QCOMPARE(version2.value(QLatin1String(QMAKE)).toString(), QLatin1String("docker://image/path/to/some/qmake"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -279,7 +288,7 @@ QVariantMap AddQtData::addQt(const QVariantMap &map) const
|
||||
const QString qt = QString::fromLatin1(PREFIX) + QString::number(versionCount);
|
||||
|
||||
// Sanitize qmake path:
|
||||
QString saneQmake = QDir::cleanPath(m_qmake);
|
||||
const QString saneQmake = cleanPath(m_qmake);
|
||||
|
||||
// insert data:
|
||||
KeyValuePairList data;
|
||||
|
@@ -84,7 +84,7 @@ bool Operation::save(const QVariantMap &map, const QString &file) const
|
||||
return false;
|
||||
}
|
||||
|
||||
QString dirName = QDir::cleanPath(path + "/..");
|
||||
QString dirName = cleanPath(path + "/..");
|
||||
QDir dir(dirName);
|
||||
if (!dir.exists() && !dir.mkpath(QLatin1String("."))) {
|
||||
std::cerr << "Error: Could not create directory " << qPrintable(dirName)
|
||||
@@ -108,3 +108,12 @@ bool Operation::save(const QVariantMap &map, const QString &file) const
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
QString cleanPath(const QString &orig)
|
||||
{
|
||||
// QDir::cleanPath() destroys "//", one of which might be needed.
|
||||
const int pos = orig.indexOf("://");
|
||||
if (pos == -1)
|
||||
return QDir::cleanPath(orig);
|
||||
return orig.left(pos) + "://" + QDir::cleanPath(orig.mid(pos + 3));
|
||||
}
|
||||
|
@@ -22,6 +22,8 @@ using KeyValuePairList = QList<KeyValuePair>;
|
||||
|
||||
QVariant valueFromString(const QString &v);
|
||||
|
||||
QString cleanPath(const QString &orig);
|
||||
|
||||
class Operation
|
||||
{
|
||||
public:
|
||||
|
@@ -3,6 +3,8 @@
|
||||
|
||||
#include "sdkpersistentsettings.h"
|
||||
|
||||
#include "operation.h" // for cleanPath()
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QDataStream>
|
||||
#include <QDateTime>
|
||||
@@ -826,7 +828,7 @@ void SdkPersistentSettingsWriter::setContents(const QVariantMap &data)
|
||||
|
||||
bool SdkPersistentSettingsWriter::write(const QVariantMap &data, QString *errorString) const
|
||||
{
|
||||
const QString parentDir = QDir::cleanPath(m_fileName + "/..");
|
||||
const QString parentDir = cleanPath(m_fileName + "/..");
|
||||
|
||||
const QFileInfo fi(parentDir);
|
||||
if (!(fi.exists() && fi.isDir() && fi.isWritable())) {
|
||||
|
Reference in New Issue
Block a user