CI: Enable tests under corelib/serialization for Wasm platform

Add more tests on WebAssembly platform for better tests coverage.

Change-Id: Iaaaa824ae6058a9ae5dba4c4038a7f687bfc17e0
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
This commit is contained in:
Piotr Wierciński 2023-07-25 10:11:37 +02:00
parent 8eca7fffa3
commit 592f8630c6
12 changed files with 52 additions and 35 deletions

View File

@ -24,7 +24,29 @@
#include <QtTest>
static float myNaNf()
struct NegativeInteger { quint64 abs; };
Q_DECLARE_METATYPE(NegativeInteger)
struct SimpleType { uint8_t type; };
Q_DECLARE_METATYPE(SimpleType)
struct Float16Standin { uint16_t val; };
Q_DECLARE_METATYPE(Float16Standin)
struct Tag { CborTag tag; QVariant tagged; };
Q_DECLARE_METATYPE(Tag)
typedef QVector<QPair<QVariant, QVariant>> Map;
Q_DECLARE_METATYPE(Map)
struct IndeterminateLengthArray : QVariantList { using QVariantList::QVariantList; };
struct IndeterminateLengthMap : Map { using Map::Map; };
Q_DECLARE_METATYPE(IndeterminateLengthArray)
Q_DECLARE_METATYPE(IndeterminateLengthMap)
namespace {
float myNaNf()
{
uint32_t v = 0x7fc00000;
float f;
@ -33,7 +55,7 @@ static float myNaNf()
return f;
}
static float myInff()
float myInff()
{
uint32_t v = 0x7f800000;
float f;
@ -42,7 +64,7 @@ static float myInff()
return f;
}
static float myNInff()
float myNInff()
{
uint32_t v = 0xff800000;
float f;
@ -51,7 +73,7 @@ static float myNInff()
return f;
}
static double myNaN()
double myNaN()
{
uint64_t v = UINT64_C(0x7ff8000000000000);
double f;
@ -60,7 +82,7 @@ static double myNaN()
return f;
}
static double myInf()
double myInf()
{
uint64_t v = UINT64_C(0x7ff0000000000000);
double f;
@ -69,7 +91,7 @@ static double myInf()
return f;
}
static double myNInf()
double myNInf()
{
uint64_t v = UINT64_C(0xfff0000000000000);
double f;
@ -83,36 +105,17 @@ template <size_t N> QByteArray raw(const char (&data)[N])
return QByteArray::fromRawData(data, N - 1);
}
struct NegativeInteger { quint64 abs; };
Q_DECLARE_METATYPE(NegativeInteger)
struct SimpleType { uint8_t type; };
Q_DECLARE_METATYPE(SimpleType)
struct Float16Standin { uint16_t val; };
Q_DECLARE_METATYPE(Float16Standin)
struct Tag { CborTag tag; QVariant tagged; };
Q_DECLARE_METATYPE(Tag)
template <typename... Args>
QVariant make_list(const Args &... args)
{
return QVariantList{args...};
}
typedef QVector<QPair<QVariant, QVariant>> Map;
Q_DECLARE_METATYPE(Map)
QVariant make_map(const std::initializer_list<QPair<QVariant, QVariant>> &list)
{
return QVariant::fromValue(Map(list));
}
struct IndeterminateLengthArray : QVariantList { using QVariantList::QVariantList; };
struct IndeterminateLengthMap : Map { using Map::Map; };
Q_DECLARE_METATYPE(IndeterminateLengthArray)
Q_DECLARE_METATYPE(IndeterminateLengthMap)
QVariant make_ilarray(const std::initializer_list<QVariant> &list)
{
return QVariant::fromValue(IndeterminateLengthArray(list));
@ -343,4 +346,4 @@ void addArraysAndMaps()
QTest::newRow("array-1(map)") << raw("\x81\xc1\xa0") << make_list(QVariant::fromValue(Tag{1, make_map({})}));
QTest::newRow("map-1(2):3(4)") << raw("\xa1\xc1\2\xc3\4") << make_map({{QVariant::fromValue(Tag{1, 2}), QVariant::fromValue(Tag{3, 4})}});
}
} // namespace

View File

@ -28,6 +28,8 @@
Q_DECLARE_METATYPE(CborError)
namespace {
template <size_t N> QByteArray raw(const char (&data)[N])
{
return QByteArray::fromRawData(data, N - 1);
@ -605,3 +607,4 @@ void addValidationData(size_t minInvalid = ~size_t(0))
// This test technically tests the dumper, not the parser.
QTest::newRow("string-utf8-chunk-split") << raw("\x81\x7f\x61\xc2\x61\xa0\xff") << 0 << CborErrorInvalidUtf8TextString;
}
} // namespace

View File

@ -34,6 +34,7 @@ if(QT_BUILD_MINIMAL_ANDROID_MULTI_ABI_TESTS)
endif()
if(WASM)
add_subdirectory(corelib/serialization)
add_subdirectory(corelib/text)
return()
endif()

View File

@ -13,6 +13,6 @@ endif()
if(TARGET Qt::Network)
add_subdirectory(qtextstream)
endif()
if(TARGET Qt::Gui AND TARGET Qt::Network AND TARGET Qt::Xml AND NOT INTEGRITY AND NOT QNX)
if(TARGET Qt::Gui AND TARGET Qt::Network AND TARGET Qt::Xml AND NOT INTEGRITY AND NOT QNX AND NOT WASM)
add_subdirectory(qxmlstream)
endif()

View File

@ -26,7 +26,6 @@ protected:
qint64 readData(char *data, qint64 maxlen) override;
qint64 writeData(const char *, qint64) override { return -1; }
};
};
qint64 LargeIODevice::readData(char *data, qint64 maxlen)
{
@ -118,3 +117,4 @@ void addValidationHugeDevice(qsizetype byteArrayInvalid, qsizetype stringInvalid
addSize("4GB", quint64(1) << 32);
addSize("max", std::numeric_limits<qint64>::max() - sizeof(buf));
}
} // namespace

View File

@ -16,7 +16,7 @@ qt_internal_add_test(tst_qcborstreamreader
tst_qcborstreamreader.cpp
INCLUDE_DIRECTORIES
../../../../../src/3rdparty/tinycbor/src
../../../../../src/3rdparty/tinycbor/tests/parser
../../../../../src/3rdparty/tinycbor/tests
LIBRARIES
Qt::CorePrivate
)

View File

@ -88,7 +88,7 @@ template<> char *toString<QCborStreamReader::Type>(const QCborStreamReader::Type
QT_END_NAMESPACE
// Get the data from TinyCBOR (see src/3rdparty/tinycbor/tests/parser/data.cpp)
#include "data.cpp"
#include "parser/data.cpp"
void tst_QCborStreamReader::initTestCase_data()
{
@ -927,6 +927,10 @@ void tst_QCborStreamReader::hugeDeviceValidation()
QSKIP("This test tries to allocate a huge memory buffer,"
" which Address Sanitizer flags as a problem");
#endif
#if defined(Q_OS_WASM)
QSKIP("This test tries to allocate a huge memory buffer,"
" causes problem on WebAssembly platform which has limited resources.");
#endif // Q_OS_WASM
QFETCH(QSharedPointer<QIODevice>, device);
QFETCH(CborError, expectedError);

View File

@ -15,5 +15,5 @@ qt_internal_add_test(tst_qcborstreamwriter
SOURCES
tst_qcborstreamwriter.cpp
INCLUDE_DIRECTORIES
../../../../../src/3rdparty/tinycbor/tests/encoder
../../../../../src/3rdparty/tinycbor/tests
)

View File

@ -29,7 +29,7 @@ private Q_SLOTS:
// Get the data from TinyCBOR (see src/3rdparty/tinycbor/tests/encoder/data.cpp)
typedef quint64 CborTag;
#include "data.cpp"
#include "encoder/data.cpp"
void encodeVariant(QCborStreamWriter &writer, const QVariant &v)
{

View File

@ -2399,6 +2399,11 @@ void tst_QCborValue::hugeDeviceValidation_data()
void tst_QCborValue::hugeDeviceValidation()
{
#if defined(Q_OS_WASM)
QSKIP("This test tries to allocate a huge memory buffer,"
" causes problem on WebAssembly platform which has limited resources.");
#endif // Q_OS_WASM
QFETCH(QSharedPointer<QIODevice>, device);
QFETCH(CborError, expectedError);
QCborError error = { QCborError::Code(expectedError) };

View File

@ -3895,5 +3895,6 @@ void tst_QDataStream::typedefQt5Compat()
}
QTEST_MAIN(tst_QDataStream)
#include "tst_qdatastream.moc"

View File

@ -5,7 +5,7 @@
#include <QtGui/QPixmap>
#include <QtGui/QImage>
class tst_QDataStream : public QObject
class tst_QDataStreamPixmap : public QObject
{
Q_OBJECT
@ -13,7 +13,7 @@ private slots:
void stream_with_pixmap();
};
void tst_QDataStream::stream_with_pixmap()
void tst_QDataStreamPixmap::stream_with_pixmap()
{
// This is a QVariantMap with a 3x3 red QPixmap and two strings inside
const QByteArray ba = QByteArray::fromBase64(
@ -37,6 +37,6 @@ void tst_QDataStream::stream_with_pixmap()
QCOMPARE(map["z"].toString(), QString("there"));
}
QTEST_GUILESS_MAIN(tst_QDataStream)
QTEST_GUILESS_MAIN(tst_QDataStreamPixmap)
#include "tst_qdatastream_core_pixmap.moc"