aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <ABBAPOH@gmail.com>2019-04-18 18:55:25 +0200
committerIvan Komissarov <ABBAPOH@gmail.com>2019-04-23 18:53:43 +0000
commit21968aed886e45c0514a2b770bc678c07a204d89 (patch)
tree1b40482172ac70dcadc914f7baab15a51022c957
parentb8724729191957066ce19786d6de9ee9ccf045e8 (diff)
Fix tests on non-latin systems
Qt Creator uses non-latin letters in path to the build directory in case of ru_RU.UTF-8 $LANG on Linux. Now QBS does handle that correctly. Change-Id: Ifc727b120a5f0ee60972c5e3ed24067426db8df2 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--share/qbs/modules/cpp/GenericGCC.qbs3
-rw-r--r--src/lib/corelib/jsextensions/utilitiesextension.cpp4
-rw-r--r--tests/auto/blackbox/testdata/linkerscripts/linkerscripts.qbs2
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp5
4 files changed, 10 insertions, 4 deletions
diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs
index b4e755a3e..f9537884e 100644
--- a/share/qbs/modules/cpp/GenericGCC.qbs
+++ b/share/qbs/modules/cpp/GenericGCC.qbs
@@ -729,6 +729,9 @@ CppModule {
match = regexp.exec(linkerScript.readLine());
if(match) {
var additionalPath = match[1];
+ // path can be quoted to use non-latin letters, remove quotes if present
+ if (additionalPath.startsWith("\"") && additionalPath.endsWith("\""))
+ additionalPath = additionalPath.slice(1, additionalPath.length - 1);
retval.push(additionalPath);
}
}
diff --git a/src/lib/corelib/jsextensions/utilitiesextension.cpp b/src/lib/corelib/jsextensions/utilitiesextension.cpp
index 62778665c..b425bb4a2 100644
--- a/src/lib/corelib/jsextensions/utilitiesextension.cpp
+++ b/src/lib/corelib/jsextensions/utilitiesextension.cpp
@@ -236,7 +236,7 @@ static inline QString escapedString(const Char *begin, int length, bool isUnicod
// Surrogate characters are category Cs (Other_Surrogate), so isPrintable = false for them
int runLength = 0;
while (p + runLength != end &&
- isPrintable(p[runLength]) && p[runLength] != '\\' && p[runLength] != '"')
+ QChar::isPrint(p[runLength]) && p[runLength] != '\\' && p[runLength] != '"')
++runLength;
if (runLength) {
out += QString(reinterpret_cast<const QChar *>(p), runLength);
@@ -288,7 +288,7 @@ static inline QString escapedString(const Char *begin, int length, bool isUnicod
if ((p + 1) != end && QChar::isLowSurrogate(p[1])) {
// properly-paired surrogates
uint ucs4 = QChar::surrogateToUcs4(*p, p[1]);
- if (isPrintable(ucs4)) {
+ if (QChar::isPrint(ucs4)) {
buf[0] = *p;
buf[1] = p[1];
buflen = 2;
diff --git a/tests/auto/blackbox/testdata/linkerscripts/linkerscripts.qbs b/tests/auto/blackbox/testdata/linkerscripts/linkerscripts.qbs
index 9dd7bf5b2..0b4de0ab9 100644
--- a/tests/auto/blackbox/testdata/linkerscripts/linkerscripts.qbs
+++ b/tests/auto/blackbox/testdata/linkerscripts/linkerscripts.qbs
@@ -44,7 +44,7 @@ DynamicLibrary {
cmd.sourceCode = function() {
var file = new TextFile(buildPath + "/linkerscript_with_includes",
TextFile.WriteOnly);
- file.write("SEARCH_DIR(" + sourcePath + "/scripts)\n" +
+ file.write("SEARCH_DIR(\"" + sourcePath + "/scripts\")\n" +
"INCLUDE linkerscript_to_include\n" +
"INCLUDE linkerscript_in_directory\n");
file.close();
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 219a473e0..399a49b21 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -2537,6 +2537,9 @@ void TestBlackbox::smartRelinking_data()
static QString soName(const QString &readElfPath, const QString &libFilePath)
{
QProcess readElf;
+ auto env = QProcessEnvironment::systemEnvironment();
+ env.insert(QStringLiteral("LC_ALL"), QStringLiteral("C")); // force readelf to use US encoding
+ readElf.setProcessEnvironment(env);
readElf.start(readElfPath, QStringList() << "-a" << libFilePath);
if (!readElf.waitForStarted() || !readElf.waitForFinished() || readElf.exitCode() != 0) {
qDebug() << readElf.errorString() << readElf.readAllStandardError();
@@ -2936,7 +2939,7 @@ void TestBlackbox::probeChangeTracking()
void TestBlackbox::probeProperties()
{
QDir::setCurrent(testDataDir + "/probeProperties");
- const QByteArray dir = QDir::cleanPath(testDataDir).toLatin1() + "/probeProperties";
+ const QByteArray dir = QDir::cleanPath(testDataDir).toLocal8Bit() + "/probeProperties";
QCOMPARE(runQbs(), 0);
QVERIFY2(m_qbsStdout.contains("probe1.fileName=bin/tool"), m_qbsStdout.constData());
QVERIFY2(m_qbsStdout.contains("probe1.path=" + dir), m_qbsStdout.constData());