aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2016-11-23 11:36:56 -0600
committerMarkus Armbruster <armbru@redhat.com>2016-12-05 17:09:34 +0100
commit29a6731afb20707ab0c1f9be997bef74cef34665 (patch)
tree2d928d983c8fab335a43a39a530de991f261633d
parent1792d7d0a2dc18496e8fc52906163f9f73f3d931 (diff)
tests: Avoid qobject_from_jsonf("%"PRId64)
The qobject_from_jsonf() function implements a pseudo-printf language for creating a QObject; however, it is hard-coded to only parse a subset of formats understood by -Wformat, and is not a straight synonym to bare printf(). In particular, any use of an int64_t integer works only if the system's definition of PRId64 matches what the parser expects; which works on glibc (%lld or %ld depending on 32- vs. 64-bit) and mingw (%I64d), but not on Mac OS (%qd). Rather than enhance the parser, it is just as easy to force the use of int (where the value is small enough) or long long instead of int64_t, which we know always works. This should cover all remaining testsuite uses of qobject_from_json[fv]() that were trying to rely on PRId64, although my proof for that was done by adding in asserts and checking that 'make check' still passed, where such asserts are inappropriate during hard freeze. A later series in 2.9 may remove all dynamic JSON parsing, but that's a bigger task. Reported by: G 3 <programmingkidx@gmail.com> Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1479922617-4400-4-git-send-email-eblake@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> [Rename value64 to value_ll] Signed-off-by: Markus Armbruster <armbru@redhat.com>
-rw-r--r--tests/check-qjson.c6
-rw-r--r--tests/test-qobject-input-visitor.c5
2 files changed, 6 insertions, 5 deletions
diff --git a/tests/check-qjson.c b/tests/check-qjson.c
index 85955744eb..0b21a22e10 100644
--- a/tests/check-qjson.c
+++ b/tests/check-qjson.c
@@ -964,7 +964,7 @@ static void vararg_number(void)
QInt *qint;
QFloat *qfloat;
int value = 0x2342;
- int64_t value64 = 0x2342342343LL;
+ long long value_ll = 0x2342342343LL;
double valuef = 2.323423423;
obj = qobject_from_jsonf("%d", value);
@@ -976,12 +976,12 @@ static void vararg_number(void)
QDECREF(qint);
- obj = qobject_from_jsonf("%" PRId64, value64);
+ obj = qobject_from_jsonf("%lld", value_ll);
g_assert(obj != NULL);
g_assert(qobject_type(obj) == QTYPE_QINT);
qint = qobject_to_qint(obj);
- g_assert(qint_get_int(qint) == value64);
+ g_assert(qint_get_int(qint) == value_ll);
QDECREF(qint);
diff --git a/tests/test-qobject-input-visitor.c b/tests/test-qobject-input-visitor.c
index 26c5012df3..945404a9e0 100644
--- a/tests/test-qobject-input-visitor.c
+++ b/tests/test-qobject-input-visitor.c
@@ -83,10 +83,11 @@ static Visitor *visitor_input_test_init_raw(TestInputVisitorData *data,
static void test_visitor_in_int(TestInputVisitorData *data,
const void *unused)
{
- int64_t res = 0, value = -42;
+ int64_t res = 0;
+ int value = -42;
Visitor *v;
- v = visitor_input_test_init(data, "%" PRId64, value);
+ v = visitor_input_test_init(data, "%d", value);
visit_type_int(v, NULL, &res, &error_abort);
g_assert_cmpint(res, ==, value);