summaryrefslogtreecommitdiffstats
path: root/tests/auto/tools/uic/tst_uic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/tools/uic/tst_uic.cpp')
-rw-r--r--tests/auto/tools/uic/tst_uic.cpp73
1 files changed, 52 insertions, 21 deletions
diff --git a/tests/auto/tools/uic/tst_uic.cpp b/tests/auto/tools/uic/tst_uic.cpp
index 5b2f1f008b..4c0a4bbe26 100644
--- a/tests/auto/tools/uic/tst_uic.cpp
+++ b/tests/auto/tools/uic/tst_uic.cpp
@@ -45,11 +45,23 @@ static const char diffToStderrEnvVar[] = "UIC_STDERR_DIFF";
struct TestEntry
{
+ enum Flag
+ {
+ IdBasedTranslation = 0x1,
+ Python = 0x2, // Python baseline is present
+ DontTestPythonCompile = 0x4 // Do not test Python compilation
+ };
+ Q_DECLARE_FLAGS(Flags, Flag)
+
QByteArray name;
- QString baselineBaseName;
+ QString uiFileName;
+ QString baseLineFileName;
QString generatedFileName;
+ Flags flags;
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(TestEntry::Flags)
+
class tst_uic : public QObject
{
Q_OBJECT
@@ -73,8 +85,8 @@ private Q_SLOTS:
void compare();
void compare_data() const;
- void python();
- void python_data() const;
+ void pythonCompile();
+ void pythonCompile_data() const;
void runCompare();
@@ -89,9 +101,12 @@ private:
QString m_python;
};
+static const char versionRegexp[] =
+ R"([*#][*#] Created by: Qt User Interface Compiler version \d{1,2}\.\d{1,2}\.\d{1,2})";
+
tst_uic::tst_uic()
: m_command(QLibraryInfo::location(QLibraryInfo::BinariesPath) + QLatin1String("/uic"))
- , m_versionRegexp(QLatin1String(R"(\*\* Created by: Qt User Interface Compiler version \d{1,2}\.\d{1,2}\.\d{1,2})"))
+ , m_versionRegexp(QLatin1String(versionRegexp))
{
}
@@ -165,10 +180,27 @@ void tst_uic::populateTestEntries()
m_testEntries.reserve(baselineFiles.size());
for (const QFileInfo &baselineFile : baselineFiles) {
const QString baseName = baselineFile.baseName();
- const QString baselineBaseName = baseLinePrefix + baseName;
- const QString generatedFile = generatedPrefix + baselineFile.fileName()
- + QLatin1String(".h");
- m_testEntries.append(TestEntry{baseName.toLocal8Bit(), baselineBaseName, generatedFile});
+ TestEntry entry;
+ // qprintsettingsoutput: variable named 'from' clashes with Python
+ if (baseName == QLatin1String("qprintsettingsoutput"))
+ entry.flags.setFlag(TestEntry::DontTestPythonCompile);
+ else if (baseName == QLatin1String("qttrid"))
+ entry.flags.setFlag(TestEntry::IdBasedTranslation);
+ entry.name = baseName.toLocal8Bit();
+ entry.uiFileName = baselineFile.absoluteFilePath();
+ entry.baseLineFileName = entry.uiFileName + QLatin1String(".h");
+ const QString generatedFilePrefix = generatedPrefix + baselineFile.fileName();
+ entry.generatedFileName = generatedFilePrefix + QLatin1String(".h");
+ m_testEntries.append(entry);
+ // Check for a Python baseline
+ entry.baseLineFileName = entry.uiFileName + QLatin1String(".py");
+ if (QFileInfo::exists(entry.baseLineFileName)) {
+ entry.name.append(QByteArrayLiteral("-python"));
+ entry.flags.setFlag(TestEntry::DontTestPythonCompile);
+ entry.flags.setFlag(TestEntry::Python);
+ entry.generatedFileName = generatedFilePrefix + QLatin1String(".py");
+ m_testEntries.append(entry);
+ }
}
}
@@ -237,9 +269,11 @@ void tst_uic::run_data() const
for (const TestEntry &te : m_testEntries) {
QStringList options;
- if (te.name == QByteArrayLiteral("qttrid"))
- options << QStringList(QLatin1String("-idbased"));
- QTest::newRow(te.name.constData()) << (te.baselineBaseName + QLatin1String(".ui"))
+ if (te.flags.testFlag(TestEntry::IdBasedTranslation))
+ options.append(QLatin1String("-idbased"));
+ if (te.flags.testFlag(TestEntry::Python))
+ options << QLatin1String("-g") << QLatin1String("python");
+ QTest::newRow(te.name.constData()) << te.uiFileName
<< te.generatedFileName << options;
}
}
@@ -319,7 +353,7 @@ void tst_uic::compare_data() const
QTest::addColumn<QString>("generatedFile");
for (const TestEntry &te : m_testEntries) {
- QTest::newRow(te.name.constData()) << (te.baselineBaseName + QLatin1String(".ui.h"))
+ QTest::newRow(te.name.constData()) << te.baseLineFileName
<< te.generatedFileName;
}
}
@@ -396,7 +430,8 @@ static inline QByteArray msgCompilePythonFailed(const QByteArray &error)
return lines.join('\n');
}
-void tst_uic::python_data() const
+// Test Python code generation by compiling the file
+void tst_uic::pythonCompile_data() const
{
QTest::addColumn<QString>("originalFile");
QTest::addColumn<QString>("generatedFile");
@@ -405,19 +440,15 @@ void tst_uic::python_data() const
? qMin(1, m_testEntries.size()) : m_testEntries.size();
for (int i = 0; i < size; ++i) {
const TestEntry &te = m_testEntries.at(i);
- // qprintsettingsoutput: variable named 'from' clashes with Python
- if (!te.baselineBaseName.endsWith(QLatin1String("/qprintsettingsoutput"))) {
- QString generatedFile = te.generatedFileName;
- generatedFile.chop(1); // foo.h -> foo.py
- generatedFile.append(QLatin1String("py"));
+ if (!te.flags.testFlag(TestEntry::DontTestPythonCompile)) {
QTest::newRow(te.name.constData())
- << (te.baselineBaseName + QLatin1String(".ui"))
- << generatedFile;
+ << te.uiFileName
+ << te.generatedFileName;
}
}
}
-void tst_uic::python()
+void tst_uic::pythonCompile()
{
QFETCH(QString, originalFile);
QFETCH(QString, generatedFile);