Merge bitcoin/bitcoin#25617: refactor: univalue test cleanups

1f0c83f430 refactor: remove BOOST_*_TEST_ macros (fanquake)
70d807c355 refactor: integrate no_nul into univalue unitester (fanquake)
98a0ae6b24 doc: remove references to downstream (fanquake)

Pull request description:

  Remove references to "downstream" from makefiles, as they are now redundant.
  Remove `BOOST_TEST` macros in favour of just using functions.
  Add missing call to `univalue_push_throw` tests.

ACKs for top commit:
  MarcoFalke:
    ACK 1f0c83f430 🍎

Tree-SHA512: e0e1ec159a82ece9b364c656b3b49d98f72a04f2614eeb2a386825c3e37bb5a10416446a8ea22d9048227d96aca3e5c1a3dbf3264a290443add382ded073575c
This commit is contained in:
MacroFake 2022-07-18 10:29:35 +02:00
commit 4e2929e987
No known key found for this signature in database
GPG key ID: CE2B75697E69A548
8 changed files with 20 additions and 39 deletions

View file

@ -6,7 +6,7 @@
export LC_ALL=C.UTF-8 export LC_ALL=C.UTF-8
for b_name in {"${BASE_OUTDIR}/bin"/*,src/secp256k1/*tests,src/minisketch/test{,-verify},src/univalue/{no_nul,test_json,unitester,object}}; do for b_name in {"${BASE_OUTDIR}/bin"/*,src/secp256k1/*tests,src/minisketch/test{,-verify},src/univalue/{test_json,unitester,object}}; do
# shellcheck disable=SC2044 # shellcheck disable=SC2044
for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename "$b_name")"); do for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename "$b_name")"); do
echo "Wrap $b ..." echo "Wrap $b ..."

View file

@ -6,7 +6,7 @@
export LC_ALL=C.UTF-8 export LC_ALL=C.UTF-8
for b_name in {"${BASE_OUTDIR}/bin"/*,src/secp256k1/*tests,src/minisketch/test{,-verify},src/univalue/{no_nul,test_json,unitester,object}}.exe; do for b_name in {"${BASE_OUTDIR}/bin"/*,src/secp256k1/*tests,src/minisketch/test{,-verify},src/univalue/{test_json,unitester,object}}.exe; do
# shellcheck disable=SC2044 # shellcheck disable=SC2044
for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename "$b_name")"); do for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename "$b_name")"); do
if (file "$b" | grep "Windows"); then if (file "$b" | grep "Windows"); then

View file

@ -373,7 +373,7 @@ endif
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check
if ENABLE_TESTS if ENABLE_TESTS
UNIVALUE_TESTS = univalue/test/object univalue/test/unitester univalue/test/no_nul UNIVALUE_TESTS = univalue/test/object univalue/test/unitester
noinst_PROGRAMS += $(UNIVALUE_TESTS) noinst_PROGRAMS += $(UNIVALUE_TESTS)
TESTS += $(UNIVALUE_TESTS) TESTS += $(UNIVALUE_TESTS)
@ -382,11 +382,6 @@ univalue_test_unitester_LDADD = $(LIBUNIVALUE)
univalue_test_unitester_CPPFLAGS = -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) -DJSON_TEST_SRC=\"$(srcdir)/$(UNIVALUE_TEST_DATA_DIR_INT)\" univalue_test_unitester_CPPFLAGS = -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) -DJSON_TEST_SRC=\"$(srcdir)/$(UNIVALUE_TEST_DATA_DIR_INT)\"
univalue_test_unitester_LDFLAGS = -static $(LIBTOOL_APP_LDFLAGS) univalue_test_unitester_LDFLAGS = -static $(LIBTOOL_APP_LDFLAGS)
univalue_test_no_nul_SOURCES = $(UNIVALUE_TEST_NO_NUL_INT)
univalue_test_no_nul_LDADD = $(LIBUNIVALUE)
univalue_test_no_nul_CPPFLAGS = -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT)
univalue_test_no_nul_LDFLAGS = -static $(LIBTOOL_APP_LDFLAGS)
univalue_test_object_SOURCES = $(UNIVALUE_TEST_OBJECT_INT) univalue_test_object_SOURCES = $(UNIVALUE_TEST_OBJECT_INT)
univalue_test_object_LDADD = $(LIBUNIVALUE) univalue_test_object_LDADD = $(LIBUNIVALUE)
univalue_test_object_CPPFLAGS = -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) univalue_test_object_CPPFLAGS = -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT)

View file

@ -1,12 +1,8 @@
# - All variables are namespaced with UNIVALUE_ to avoid colliding with
# downstream makefiles.
# - All Variables ending in _HEADERS or _SOURCES confuse automake, so the # - All Variables ending in _HEADERS or _SOURCES confuse automake, so the
# _INT postfix is applied. # _INT postfix is applied.
# - Convenience variables, for example a UNIVALUE_TEST_DIR should not be used # - Convenience variables, for example a UNIVALUE_TEST_DIR should not be used
# as they interfere with automatic dependency generation # as they interfere with automatic dependency generation
# - The %reldir% is the relative path from the Makefile.am. This allows # - The %reldir% is the relative path from the Makefile.am.
# downstreams to use these variables without having to manually account for
# the path change.
UNIVALUE_INCLUDE_DIR_INT = %reldir%/include UNIVALUE_INCLUDE_DIR_INT = %reldir%/include
@ -29,9 +25,6 @@ UNIVALUE_TEST_UNITESTER_INT += %reldir%/test/unitester.cpp
UNIVALUE_TEST_JSON_INT = UNIVALUE_TEST_JSON_INT =
UNIVALUE_TEST_JSON_INT += %reldir%/test/test_json.cpp UNIVALUE_TEST_JSON_INT += %reldir%/test/test_json.cpp
UNIVALUE_TEST_NO_NUL_INT =
UNIVALUE_TEST_NO_NUL_INT += %reldir%/test/no_nul.cpp
UNIVALUE_TEST_OBJECT_INT = UNIVALUE_TEST_OBJECT_INT =
UNIVALUE_TEST_OBJECT_INT += %reldir%/test/object.cpp UNIVALUE_TEST_OBJECT_INT += %reldir%/test/object.cpp

View file

@ -2,7 +2,6 @@
object object
unitester unitester
test_json test_json
no_nul
*.trs *.trs
*.log *.log

View file

@ -1,8 +0,0 @@
#include <univalue.h>
int main (int argc, char *argv[])
{
char buf[] = "___[1,2,3]___";
UniValue val;
return val.read(buf + 3, 7) ? 0 : 1;
}

View file

@ -13,9 +13,6 @@
#include <string> #include <string>
#include <vector> #include <vector>
#define BOOST_FIXTURE_TEST_SUITE(a, b)
#define BOOST_AUTO_TEST_CASE(funcName) void funcName()
#define BOOST_AUTO_TEST_SUITE_END()
#define BOOST_CHECK(expr) assert(expr) #define BOOST_CHECK(expr) assert(expr)
#define BOOST_CHECK_EQUAL(v1, v2) assert((v1) == (v2)) #define BOOST_CHECK_EQUAL(v1, v2) assert((v1) == (v2))
#define BOOST_CHECK_THROW(stmt, excMatch) { \ #define BOOST_CHECK_THROW(stmt, excMatch) { \
@ -35,9 +32,7 @@
} \ } \
} }
BOOST_FIXTURE_TEST_SUITE(univalue_tests, BasicTestingSetup) void univalue_constructor()
BOOST_AUTO_TEST_CASE(univalue_constructor)
{ {
UniValue v1; UniValue v1;
BOOST_CHECK(v1.isNull()); BOOST_CHECK(v1.isNull());
@ -85,7 +80,7 @@ BOOST_AUTO_TEST_CASE(univalue_constructor)
BOOST_CHECK_EQUAL(v9.getValStr(), "zappa"); BOOST_CHECK_EQUAL(v9.getValStr(), "zappa");
} }
BOOST_AUTO_TEST_CASE(univalue_push_throw) void univalue_push_throw()
{ {
UniValue j; UniValue j;
BOOST_CHECK_THROW(j.push_back(1), std::runtime_error); BOOST_CHECK_THROW(j.push_back(1), std::runtime_error);
@ -95,7 +90,7 @@ BOOST_AUTO_TEST_CASE(univalue_push_throw)
BOOST_CHECK_THROW(j.pushKVs({}), std::runtime_error); BOOST_CHECK_THROW(j.pushKVs({}), std::runtime_error);
} }
BOOST_AUTO_TEST_CASE(univalue_typecheck) void univalue_typecheck()
{ {
UniValue v1; UniValue v1;
BOOST_CHECK(v1.setNumStr("1")); BOOST_CHECK(v1.setNumStr("1"));
@ -144,7 +139,7 @@ BOOST_AUTO_TEST_CASE(univalue_typecheck)
BOOST_CHECK_THROW(vals[1].get_bool(), std::runtime_error); BOOST_CHECK_THROW(vals[1].get_bool(), std::runtime_error);
} }
BOOST_AUTO_TEST_CASE(univalue_set) void univalue_set()
{ {
UniValue v(UniValue::VSTR, "foo"); UniValue v(UniValue::VSTR, "foo");
v.clear(); v.clear();
@ -203,7 +198,7 @@ BOOST_AUTO_TEST_CASE(univalue_set)
BOOST_CHECK(v.isNull()); BOOST_CHECK(v.isNull());
} }
BOOST_AUTO_TEST_CASE(univalue_array) void univalue_array()
{ {
UniValue arr(UniValue::VARR); UniValue arr(UniValue::VARR);
@ -262,7 +257,7 @@ BOOST_AUTO_TEST_CASE(univalue_array)
BOOST_CHECK_EQUAL(arr.size(), 0); BOOST_CHECK_EQUAL(arr.size(), 0);
} }
BOOST_AUTO_TEST_CASE(univalue_object) void univalue_object()
{ {
UniValue obj(UniValue::VOBJ); UniValue obj(UniValue::VOBJ);
std::string strKey, strVal; std::string strKey, strVal;
@ -381,7 +376,7 @@ BOOST_AUTO_TEST_CASE(univalue_object)
static const char *json1 = static const char *json1 =
"[1.10000000,{\"key1\":\"str\\u0000\",\"key2\":800,\"key3\":{\"name\":\"martian http://test.com\"}}]"; "[1.10000000,{\"key1\":\"str\\u0000\",\"key2\":800,\"key3\":{\"name\":\"martian http://test.com\"}}]";
BOOST_AUTO_TEST_CASE(univalue_readwrite) void univalue_readwrite()
{ {
UniValue v; UniValue v;
BOOST_CHECK(v.read(json1)); BOOST_CHECK(v.read(json1));
@ -424,11 +419,10 @@ BOOST_AUTO_TEST_CASE(univalue_readwrite)
BOOST_CHECK(!v.read("{} 42")); BOOST_CHECK(!v.read("{} 42"));
} }
BOOST_AUTO_TEST_SUITE_END()
int main (int argc, char *argv[]) int main (int argc, char *argv[])
{ {
univalue_constructor(); univalue_constructor();
univalue_push_throw();
univalue_typecheck(); univalue_typecheck();
univalue_set(); univalue_set();
univalue_array(); univalue_array();

View file

@ -149,6 +149,13 @@ void unescape_unicode_test()
assert(val[0].get_str() == "\xf0\x9d\x85\xa1"); assert(val[0].get_str() == "\xf0\x9d\x85\xa1");
} }
void no_nul_test()
{
char buf[] = "___[1,2,3]___";
UniValue val;
assert(val.read(buf + 3, 7));
}
int main (int argc, char *argv[]) int main (int argc, char *argv[])
{ {
for (const auto& f: filenames) { for (const auto& f: filenames) {
@ -156,6 +163,7 @@ int main (int argc, char *argv[])
} }
unescape_unicode_test(); unescape_unicode_test();
no_nul_test();
return 0; return 0;
} }