File indexing completed on 2024-04-28 15:59:45
0001 /* 0002 SPDX-FileCopyrightText: 2019-2021 Volker Krause <vkrause@kde.org> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 #ifndef TESTHELPERS_H 0007 #define TESTHELPERS_H 0008 0009 #include <QFile> 0010 #include <QJsonDocument> 0011 #include <QProcess> 0012 #include <QTest> 0013 0014 namespace Test { 0015 QByteArray readFile(const QString &fn) 0016 { 0017 QFile f(fn); 0018 f.open(QFile::ReadOnly | QFile::Text); 0019 return f.readAll(); 0020 } 0021 0022 template <typename T> 0023 inline bool compareJson(const QString &refFile, const T &output, const T &ref) 0024 { 0025 if (output != ref) { 0026 QFile failFile(refFile + QLatin1String(".fail")); 0027 failFile.open(QFile::WriteOnly); 0028 failFile.write(QJsonDocument(output).toJson()); 0029 failFile.close(); 0030 0031 QProcess proc; 0032 proc.setProcessChannelMode(QProcess::ForwardedChannels); 0033 proc.start(QStringLiteral("diff"), {QStringLiteral("-u"), refFile, failFile.fileName()}); 0034 if (!proc.waitForFinished()) { 0035 // e.g. Windows CI not having diff 0036 qDebug() << "Actual:"; 0037 qDebug().noquote() << output; 0038 qDebug() << "Expected:"; 0039 qDebug().noquote() << ref; 0040 } 0041 return false; 0042 } 0043 return true; 0044 } 0045 } 0046 0047 #endif