summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMingli Yu <mingli.yu@windriver.com>2023-11-10 19:52:40 +0800
committerArmin Kuster <akuster808@gmail.com>2023-11-16 21:49:15 -0500
commitaa5e8edabbc414d8ec1b2ad63c8743c7baf99626 (patch)
tree5b4e15bc15057208c514dea9f0978bf206add3a9
parent3265d38e8344081d9780a43d27bc26f748b4187c (diff)
downloadmeta-openembedded-aa5e8edabbc414d8ec1b2ad63c8743c7baf99626.tar.gz
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 013b4d50432a3eba08a9cb54b9edf6b25a6378a8) Signed-off-by: Armin Kuster <akuster808@gmail.com>
-rw-r--r--meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch61
-rw-r--r--meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch31
-rwxr-xr-xmeta-oe/recipes-devtools/nlohmann-json/files/run-ptest12
-rw-r--r--meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb22
4 files changed, 123 insertions, 3 deletions
diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch b/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch
new file mode 100644
index 000000000..d964586c1
--- /dev/null
+++ b/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch
@@ -0,0 +1,61 @@
1From 6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee Mon Sep 17 00:00:00 2001
2From: Sergei Trofimovich <slyich@gmail.com>
3Date: Wed, 8 Mar 2023 11:31:56 +0000
4Subject: [PATCH] custom allocators: define missing 'rebind' type (#3895)
5
6Upstream-Status: Backport [https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee]
7
8Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
9---
10 tests/src/unit-allocator.cpp | 9 +++++++++
11 tests/src/unit-regression2.cpp | 9 +++++++++
12 2 files changed, 18 insertions(+)
13
14diff --git a/tests/src/unit-allocator.cpp b/tests/src/unit-allocator.cpp
15index 76e3b03f..f2e63552 100644
16--- a/tests/src/unit-allocator.cpp
17+++ b/tests/src/unit-allocator.cpp
18@@ -20,11 +20,20 @@ struct bad_allocator : std::allocator<T>
19 {
20 using std::allocator<T>::allocator;
21
22+ bad_allocator() = default;
23+ template<class U> bad_allocator(const bad_allocator<U>& /*unused*/) { }
24+
25 template<class... Args>
26 void construct(T* /*unused*/, Args&& ... /*unused*/)
27 {
28 throw std::bad_alloc();
29 }
30+
31+ template <class U>
32+ struct rebind
33+ {
34+ using other = bad_allocator<U>;
35+ };
36 };
37 } // namespace
38
39diff --git a/tests/src/unit-regression2.cpp b/tests/src/unit-regression2.cpp
40index 2bb9b32e..dbafb436 100644
41--- a/tests/src/unit-regression2.cpp
42+++ b/tests/src/unit-regression2.cpp
43@@ -189,6 +189,15 @@ class my_allocator : public std::allocator<T>
44 {
45 public:
46 using std::allocator<T>::allocator;
47+
48+ my_allocator() = default;
49+ template<class U> my_allocator(const my_allocator<U>& /*unused*/) { }
50+
51+ template <class U>
52+ struct rebind
53+ {
54+ using other = my_allocator<U>;
55+ };
56 };
57
58 /////////////////////////////////////////////////////////////////////
59--
602.25.1
61
diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch b/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch
new file mode 100644
index 000000000..463912e4b
--- /dev/null
+++ b/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch
@@ -0,0 +1,31 @@
1From 660d0b58565073975d6f5d94365d6cbf150a4cf8 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
3Date: Sun, 5 Mar 2023 14:11:22 +0100
4Subject: [PATCH] tests/unit-iterators2: use std::ranges::equals for range
5 comparisons (#3950)
6
7Closes https://github.com/nlohmann/json/issues/3927
8
9Upstream-Status: Backport [https://github.com/nlohmann/json/commit/660d0b58565073975d6f5d94365d6cbf150a4cf8]
10
11Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
12---
13 tests/src/unit-iterators2.cpp | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/tests/src/unit-iterators2.cpp b/tests/src/unit-iterators2.cpp
17index 27926084..72a5d9dc 100644
18--- a/tests/src/unit-iterators2.cpp
19+++ b/tests/src/unit-iterators2.cpp
20@@ -943,7 +943,7 @@ TEST_CASE("iterators 2")
21 json j_expected{5, 4, 3, 2, 1};
22
23 auto reversed = j | std::views::reverse;
24- CHECK(reversed == j_expected);
25+ CHECK(std::ranges::equal(reversed, j_expected));
26 }
27
28 SECTION("transform")
29--
302.25.1
31
diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest b/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest
new file mode 100755
index 000000000..2f00267d5
--- /dev/null
+++ b/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest
@@ -0,0 +1,12 @@
1#!/bin/sh
2
3cd tests
4for atest in test-* ; do
5 rm -rf tests.log
6 ./${atest} > tests.log 2>&1
7 if [ $? = 0 ] ; then
8 echo "PASS: ${atest}"
9 else
10 echo "FAIL: ${atest}"
11 fi
12done
diff --git a/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb b/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
index 74e40942a..694d632cb 100644
--- a/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
+++ b/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
@@ -7,22 +7,38 @@ LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=f969127d7b7ed0a8a63c2bbeae002588"
7CVE_PRODUCT = "json-for-modern-cpp" 7CVE_PRODUCT = "json-for-modern-cpp"
8 8
9SRC_URI = "git://github.com/nlohmann/json.git;branch=develop;protocol=https \ 9SRC_URI = "git://github.com/nlohmann/json.git;branch=develop;protocol=https \
10 " 10 git://github.com/nlohmann/json_test_data.git;destsuffix=git/json_test_data;name=json-test-data;branch=master;protocol=https \
11 file://0001-custom-allocators-define-missing-rebind-type-3895.patch \
12 file://0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch \
13 file://run-ptest \
14"
11 15
12SRCREV = "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d" 16SRCREV = "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d"
17SRCREV_json-test-data = "a1375cea09d27cc1c4cadb8d00470375b421ac37"
18
19SRCREV_FORMAT = "json-test-data"
13 20
14S = "${WORKDIR}/git" 21S = "${WORKDIR}/git"
15 22
16inherit cmake 23inherit cmake ptest
17 24
18EXTRA_OECMAKE += "-DJSON_BuildTests=OFF" 25EXTRA_OECMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', '-DJSON_BuildTests=ON -DJSON_TestDataDirectory=${PTEST_PATH}/json_test_data', '-DJSON_BuildTests=OFF', d)}"
19 26
20# nlohmann-json is a header only C++ library, so the main package will be empty. 27# nlohmann-json is a header only C++ library, so the main package will be empty.
21ALLOW_EMPTY:${PN} = "1" 28ALLOW_EMPTY:${PN} = "1"
22RDEPENDS:${PN}-dev = "" 29RDEPENDS:${PN}-dev = ""
30RDEPENDS:${PN}-ptest = "perl"
23 31
24BBCLASSEXTEND = "native nativesdk" 32BBCLASSEXTEND = "native nativesdk"
25 33
34
35do_install_ptest () {
36 install -d ${D}${PTEST_PATH}/tests
37 cp -r ${S}/json_test_data/ ${D}${PTEST_PATH}/
38 cp -r ${B}/tests/test-* ${D}${PTEST_PATH}/tests
39}
40
41
26# other packages commonly reference the file directly as "json.hpp" 42# other packages commonly reference the file directly as "json.hpp"
27# create symlink to allow this usage 43# create symlink to allow this usage
28do_install:append() { 44do_install:append() {