diff options
author | Mingli Yu <mingli.yu@windriver.com> | 2023-11-10 19:52:40 +0800 |
---|---|---|
committer | Armin Kuster <akuster808@gmail.com> | 2023-11-16 21:49:15 -0500 |
commit | aa5e8edabbc414d8ec1b2ad63c8743c7baf99626 (patch) | |
tree | 5b4e15bc15057208c514dea9f0978bf206add3a9 | |
parent | 3265d38e8344081d9780a43d27bc26f748b4187c (diff) | |
download | meta-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>
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 @@ | |||
1 | From 6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee Mon Sep 17 00:00:00 2001 | ||
2 | From: Sergei Trofimovich <slyich@gmail.com> | ||
3 | Date: Wed, 8 Mar 2023 11:31:56 +0000 | ||
4 | Subject: [PATCH] custom allocators: define missing 'rebind' type (#3895) | ||
5 | |||
6 | Upstream-Status: Backport [https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee] | ||
7 | |||
8 | Signed-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 | |||
14 | diff --git a/tests/src/unit-allocator.cpp b/tests/src/unit-allocator.cpp | ||
15 | index 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 | |||
39 | diff --git a/tests/src/unit-regression2.cpp b/tests/src/unit-regression2.cpp | ||
40 | index 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 | -- | ||
60 | 2.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 @@ | |||
1 | From 660d0b58565073975d6f5d94365d6cbf150a4cf8 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me> | ||
3 | Date: Sun, 5 Mar 2023 14:11:22 +0100 | ||
4 | Subject: [PATCH] tests/unit-iterators2: use std::ranges::equals for range | ||
5 | comparisons (#3950) | ||
6 | |||
7 | Closes https://github.com/nlohmann/json/issues/3927 | ||
8 | |||
9 | Upstream-Status: Backport [https://github.com/nlohmann/json/commit/660d0b58565073975d6f5d94365d6cbf150a4cf8] | ||
10 | |||
11 | Signed-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 | |||
16 | diff --git a/tests/src/unit-iterators2.cpp b/tests/src/unit-iterators2.cpp | ||
17 | index 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 | -- | ||
30 | 2.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 | |||
3 | cd tests | ||
4 | for 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 | ||
12 | done | ||
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" | |||
7 | CVE_PRODUCT = "json-for-modern-cpp" | 7 | CVE_PRODUCT = "json-for-modern-cpp" |
8 | 8 | ||
9 | SRC_URI = "git://github.com/nlohmann/json.git;branch=develop;protocol=https \ | 9 | SRC_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 | ||
12 | SRCREV = "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d" | 16 | SRCREV = "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d" |
17 | SRCREV_json-test-data = "a1375cea09d27cc1c4cadb8d00470375b421ac37" | ||
18 | |||
19 | SRCREV_FORMAT = "json-test-data" | ||
13 | 20 | ||
14 | S = "${WORKDIR}/git" | 21 | S = "${WORKDIR}/git" |
15 | 22 | ||
16 | inherit cmake | 23 | inherit cmake ptest |
17 | 24 | ||
18 | EXTRA_OECMAKE += "-DJSON_BuildTests=OFF" | 25 | EXTRA_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. |
21 | ALLOW_EMPTY:${PN} = "1" | 28 | ALLOW_EMPTY:${PN} = "1" |
22 | RDEPENDS:${PN}-dev = "" | 29 | RDEPENDS:${PN}-dev = "" |
30 | RDEPENDS:${PN}-ptest = "perl" | ||
23 | 31 | ||
24 | BBCLASSEXTEND = "native nativesdk" | 32 | BBCLASSEXTEND = "native nativesdk" |
25 | 33 | ||
34 | |||
35 | do_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 |
28 | do_install:append() { | 44 | do_install:append() { |