mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-07-16 16:27:27 +00:00
nlohmann-json: Add ptest support
* Backport 2 patches [1] [2] to fix the build failure under tests dir.
* Fetch the test data during do_fetch phase to avoid internet access
during test as some tests need test data.
# ./run-ptest
PASS: test-algorithms_cpp11
PASS: test-allocator_cpp11
PASS: test-alt-string_cpp11
PASS: test-assert_macro_cpp11
PASS: test-binary_formats_cpp11
[snip]
PASS: test-unicode5_cpp11
PASS: test-user_defined_input_cpp11
PASS: test-windows_h_cpp11
PASS: test-wstring_cpp11
[1] https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee
[2] https://github.com/nlohmann/json/commit/660d0b58565073975d6f5d94365d6cbf150a4cf8
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
(cherry picked from commit 013b4d5043)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
This commit is contained in:
+61
@@ -0,0 +1,61 @@
|
|||||||
|
From 6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sergei Trofimovich <slyich@gmail.com>
|
||||||
|
Date: Wed, 8 Mar 2023 11:31:56 +0000
|
||||||
|
Subject: [PATCH] custom allocators: define missing 'rebind' type (#3895)
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee]
|
||||||
|
|
||||||
|
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
|
||||||
|
---
|
||||||
|
tests/src/unit-allocator.cpp | 9 +++++++++
|
||||||
|
tests/src/unit-regression2.cpp | 9 +++++++++
|
||||||
|
2 files changed, 18 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tests/src/unit-allocator.cpp b/tests/src/unit-allocator.cpp
|
||||||
|
index 76e3b03f..f2e63552 100644
|
||||||
|
--- a/tests/src/unit-allocator.cpp
|
||||||
|
+++ b/tests/src/unit-allocator.cpp
|
||||||
|
@@ -20,11 +20,20 @@ struct bad_allocator : std::allocator<T>
|
||||||
|
{
|
||||||
|
using std::allocator<T>::allocator;
|
||||||
|
|
||||||
|
+ bad_allocator() = default;
|
||||||
|
+ template<class U> bad_allocator(const bad_allocator<U>& /*unused*/) { }
|
||||||
|
+
|
||||||
|
template<class... Args>
|
||||||
|
void construct(T* /*unused*/, Args&& ... /*unused*/)
|
||||||
|
{
|
||||||
|
throw std::bad_alloc();
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ template <class U>
|
||||||
|
+ struct rebind
|
||||||
|
+ {
|
||||||
|
+ using other = bad_allocator<U>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
diff --git a/tests/src/unit-regression2.cpp b/tests/src/unit-regression2.cpp
|
||||||
|
index 2bb9b32e..dbafb436 100644
|
||||||
|
--- a/tests/src/unit-regression2.cpp
|
||||||
|
+++ b/tests/src/unit-regression2.cpp
|
||||||
|
@@ -189,6 +189,15 @@ class my_allocator : public std::allocator<T>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using std::allocator<T>::allocator;
|
||||||
|
+
|
||||||
|
+ my_allocator() = default;
|
||||||
|
+ template<class U> my_allocator(const my_allocator<U>& /*unused*/) { }
|
||||||
|
+
|
||||||
|
+ template <class U>
|
||||||
|
+ struct rebind
|
||||||
|
+ {
|
||||||
|
+ using other = my_allocator<U>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
From 660d0b58565073975d6f5d94365d6cbf150a4cf8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
|
||||||
|
Date: Sun, 5 Mar 2023 14:11:22 +0100
|
||||||
|
Subject: [PATCH] tests/unit-iterators2: use std::ranges::equals for range
|
||||||
|
comparisons (#3950)
|
||||||
|
|
||||||
|
Closes https://github.com/nlohmann/json/issues/3927
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/nlohmann/json/commit/660d0b58565073975d6f5d94365d6cbf150a4cf8]
|
||||||
|
|
||||||
|
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
|
||||||
|
---
|
||||||
|
tests/src/unit-iterators2.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/tests/src/unit-iterators2.cpp b/tests/src/unit-iterators2.cpp
|
||||||
|
index 27926084..72a5d9dc 100644
|
||||||
|
--- a/tests/src/unit-iterators2.cpp
|
||||||
|
+++ b/tests/src/unit-iterators2.cpp
|
||||||
|
@@ -943,7 +943,7 @@ TEST_CASE("iterators 2")
|
||||||
|
json j_expected{5, 4, 3, 2, 1};
|
||||||
|
|
||||||
|
auto reversed = j | std::views::reverse;
|
||||||
|
- CHECK(reversed == j_expected);
|
||||||
|
+ CHECK(std::ranges::equal(reversed, j_expected));
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("transform")
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cd tests
|
||||||
|
for atest in test-* ; do
|
||||||
|
rm -rf tests.log
|
||||||
|
./${atest} > tests.log 2>&1
|
||||||
|
if [ $? = 0 ] ; then
|
||||||
|
echo "PASS: ${atest}"
|
||||||
|
else
|
||||||
|
echo "FAIL: ${atest}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
@@ -7,22 +7,38 @@ LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=f969127d7b7ed0a8a63c2bbeae002588"
|
|||||||
CVE_PRODUCT = "json-for-modern-cpp"
|
CVE_PRODUCT = "json-for-modern-cpp"
|
||||||
|
|
||||||
SRC_URI = "git://github.com/nlohmann/json.git;branch=develop;protocol=https \
|
SRC_URI = "git://github.com/nlohmann/json.git;branch=develop;protocol=https \
|
||||||
"
|
git://github.com/nlohmann/json_test_data.git;destsuffix=git/json_test_data;name=json-test-data;branch=master;protocol=https \
|
||||||
|
file://0001-custom-allocators-define-missing-rebind-type-3895.patch \
|
||||||
|
file://0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch \
|
||||||
|
file://run-ptest \
|
||||||
|
"
|
||||||
|
|
||||||
SRCREV = "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d"
|
SRCREV = "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d"
|
||||||
|
SRCREV_json-test-data = "a1375cea09d27cc1c4cadb8d00470375b421ac37"
|
||||||
|
|
||||||
|
SRCREV_FORMAT = "json-test-data"
|
||||||
|
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
inherit cmake
|
inherit cmake ptest
|
||||||
|
|
||||||
EXTRA_OECMAKE += "-DJSON_BuildTests=OFF"
|
EXTRA_OECMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', '-DJSON_BuildTests=ON -DJSON_TestDataDirectory=${PTEST_PATH}/json_test_data', '-DJSON_BuildTests=OFF', d)}"
|
||||||
|
|
||||||
# nlohmann-json is a header only C++ library, so the main package will be empty.
|
# nlohmann-json is a header only C++ library, so the main package will be empty.
|
||||||
ALLOW_EMPTY:${PN} = "1"
|
ALLOW_EMPTY:${PN} = "1"
|
||||||
RDEPENDS:${PN}-dev = ""
|
RDEPENDS:${PN}-dev = ""
|
||||||
|
RDEPENDS:${PN}-ptest = "perl"
|
||||||
|
|
||||||
BBCLASSEXTEND = "native nativesdk"
|
BBCLASSEXTEND = "native nativesdk"
|
||||||
|
|
||||||
|
|
||||||
|
do_install_ptest () {
|
||||||
|
install -d ${D}${PTEST_PATH}/tests
|
||||||
|
cp -r ${S}/json_test_data/ ${D}${PTEST_PATH}/
|
||||||
|
cp -r ${B}/tests/test-* ${D}${PTEST_PATH}/tests
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# other packages commonly reference the file directly as "json.hpp"
|
# other packages commonly reference the file directly as "json.hpp"
|
||||||
# create symlink to allow this usage
|
# create symlink to allow this usage
|
||||||
do_install:append() {
|
do_install:append() {
|
||||||
|
|||||||
Reference in New Issue
Block a user