QuickTestUtils: Make 'data' subdir configurable

tst_ecmascripttests wants to call it "test262".

Task-number: QTBUG-100242
Change-Id: I978171a85fe6ade1cc40129db42ef9a5177fe90f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
This commit is contained in:
Ulf Hermann 2022-09-02 12:55:39 +02:00
parent 7778028f99
commit 5cda89ce03
2 changed files with 22 additions and 15 deletions

View File

@ -12,18 +12,19 @@ QT_BEGIN_NAMESPACE
QQmlDataTest *QQmlDataTest::m_instance = nullptr; QQmlDataTest *QQmlDataTest::m_instance = nullptr;
QQmlDataTest::QQmlDataTest(const char *qmlTestDataDir, FailOnWarningsPolicy failOnWarningsPolicy) : QQmlDataTest::QQmlDataTest(
m_qmlTestDataDir(qmlTestDataDir), const char *qmlTestDataDir, FailOnWarningsPolicy failOnWarningsPolicy,
const char *dataSubDir)
: m_qmlTestDataDir(qmlTestDataDir)
#ifdef QT_TESTCASE_BUILDDIR #ifdef QT_TESTCASE_BUILDDIR
m_dataDirectory(QTest::qFindTestData("data", m_qmlTestDataDir, 0, QT_TESTCASE_BUILDDIR)), , m_dataDirectory(QTest::qFindTestData(dataSubDir, m_qmlTestDataDir, 0, QT_TESTCASE_BUILDDIR))
#else #else
m_dataDirectory(QTest::qFindTestData("data", m_qmlTestDataDir, 0)), , m_dataDirectory(QTest::qFindTestData(dataSubDir, m_qmlTestDataDir, 0))
#endif #endif
, m_dataDirectoryUrl(m_dataDirectory.startsWith(QLatin1Char(':'))
m_dataDirectoryUrl(m_dataDirectory.startsWith(QLatin1Char(':')) ? QUrl(QLatin1String("qrc") + m_dataDirectory + QLatin1Char('/'))
? QUrl(QLatin1String("qrc") + m_dataDirectory + QLatin1Char('/')) : QUrl::fromLocalFile(m_dataDirectory + QLatin1Char('/')))
: QUrl::fromLocalFile(m_dataDirectory + QLatin1Char('/'))), , m_failOnWarningsPolicy(failOnWarningsPolicy)
m_failOnWarningsPolicy(failOnWarningsPolicy)
{ {
m_instance = this; m_instance = this;
if (m_cacheDir.isValid() && !qEnvironmentVariableIsSet("QML_DISK_CACHE_PATH")) { if (m_cacheDir.isValid() && !qEnvironmentVariableIsSet("QML_DISK_CACHE_PATH")) {
@ -41,8 +42,10 @@ QQmlDataTest::~QQmlDataTest()
void QQmlDataTest::initTestCase() void QQmlDataTest::initTestCase()
{ {
QVERIFY2(!m_dataDirectory.isEmpty(), qPrintable(QLatin1String( QVERIFY2(!m_dataDirectory.isEmpty(), qPrintable(
"'data' directory not found in ") + QFileInfo(QString::fromUtf8(m_qmlTestDataDir)).absolutePath())); QLatin1String("'%1' directory not found in %2").arg(
QString::fromUtf8(m_dataSubDir),
QFileInfo(QString::fromUtf8(m_qmlTestDataDir)).absolutePath())));
m_directory = QFileInfo(m_dataDirectory).absolutePath(); m_directory = QFileInfo(m_dataDirectory).absolutePath();
if (m_dataDirectoryUrl.scheme() != QLatin1String("qrc")) if (m_dataDirectoryUrl.scheme() != QLatin1String("qrc"))
QVERIFY2(QDir::setCurrent(m_directory), qPrintable(QLatin1String("Could not chdir to ") + m_directory)); QVERIFY2(QDir::setCurrent(m_directory), qPrintable(QLatin1String("Could not chdir to ") + m_directory));

View File

@ -36,8 +36,10 @@ public:
FailOnWarnings FailOnWarnings
}; };
QQmlDataTest(const char *qmlTestDataDir, QQmlDataTest(
FailOnWarningsPolicy failOnWarningsPolicy = FailOnWarningsPolicy::DoNotFailOnWarnings); const char *qmlTestDataDir,
FailOnWarningsPolicy failOnWarningsPolicy = FailOnWarningsPolicy::DoNotFailOnWarnings,
const char *dataSubdir = "data");
virtual ~QQmlDataTest(); virtual ~QQmlDataTest();
QString testFile(const QString &fileName) const; QString testFile(const QString &fileName) const;
@ -68,9 +70,11 @@ public Q_SLOTS:
private: private:
static QQmlDataTest *m_instance; static QQmlDataTest *m_instance;
// The directory in which to search for the "data" directory. // The directory in which to search for m_dataSubDir.
const char *m_qmlTestDataDir = nullptr; const char *m_qmlTestDataDir = nullptr;
// The path to the "data" directory, if found. // The subdirectory containing the actual data. Typically "data"
const char *m_dataSubDir = nullptr;
// The path to m_dataSubDir, if found.
const QString m_dataDirectory; const QString m_dataDirectory;
const QUrl m_dataDirectoryUrl; const QUrl m_dataDirectoryUrl;
QTemporaryDir m_cacheDir; QTemporaryDir m_cacheDir;