From: git@jeffhostetler.com
To: git@vger.kernel.org
Cc: gitster@pobox.com, peff@peff.net,
Jeff Hostetler <jeffhost@microsoft.com>
Subject: [PATCH v7 2/2] json-writer: t0019: add Python unit test
Date: Tue, 5 Jun 2018 16:33:58 +0000 [thread overview]
Message-ID: <20180605163358.119080-3-git@jeffhostetler.com> (raw)
In-Reply-To: <20180605163358.119080-1-git@jeffhostetler.com>
From: Jeff Hostetler <jeffhost@microsoft.com>
Test json-writer output using Python.
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
---
t/t0019-json-writer.sh | 38 ++++++++++++++++++++++++++++++++++++++
t/t0019/parse_json_1.py | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 73 insertions(+)
create mode 100644 t/t0019/parse_json_1.py
diff --git a/t/t0019-json-writer.sh b/t/t0019-json-writer.sh
index c9c2e23..951cd89 100755
--- a/t/t0019-json-writer.sh
+++ b/t/t0019-json-writer.sh
@@ -233,4 +233,42 @@ test_expect_success 'inline array with no members' '
test_cmp expect actual
'
+# As a sanity check, ask Python to parse our generated JSON. Let Python
+# recursively dump the resulting dictionary in sorted order. Confirm that
+# that matches our expectations.
+test_expect_success PYTHON 'parse JSON using Python' '
+ cat >expect <<-\EOF &&
+ a abc
+ b 42
+ sub1 dict
+ sub1.c 3.14
+ sub1.d True
+ sub1.sub2 list
+ sub1.sub2[0] False
+ sub1.sub2[1] dict
+ sub1.sub2[1].g 0
+ sub1.sub2[1].h 1
+ sub1.sub2[2] None
+ EOF
+ test-json-writer >output.json \
+ @object \
+ @object-string a abc \
+ @object-int b 42 \
+ @object-object "sub1" \
+ @object-double c 2 3.140 \
+ @object-true d \
+ @object-array "sub2" \
+ @array-false \
+ @array-object \
+ @object-int g 0 \
+ @object-int h 1 \
+ @end \
+ @array-null \
+ @end \
+ @end \
+ @end &&
+ python "$TEST_DIRECTORY"/t0019/parse_json_1.py <output.json >actual &&
+ test_cmp expect actual
+'
+
test_done
diff --git a/t/t0019/parse_json_1.py b/t/t0019/parse_json_1.py
new file mode 100644
index 0000000..9d928a3
--- /dev/null
+++ b/t/t0019/parse_json_1.py
@@ -0,0 +1,35 @@
+import os
+import sys
+import json
+
+def dump_item(label_input, v):
+ if type(v) is dict:
+ print("%s dict" % (label_input))
+ dump_dict(label_input, v)
+ elif type(v) is list:
+ print("%s list" % (label_input))
+ dump_list(label_input, v)
+ else:
+ print("%s %s" % (label_input, v))
+
+def dump_list(label_input, list_input):
+ ix = 0
+ for v in list_input:
+ label = ("%s[%d]" % (label_input, ix))
+ dump_item(label, v)
+ ix += 1
+ return
+
+def dump_dict(label_input, dict_input):
+ for k in sorted(dict_input.iterkeys()):
+ v = dict_input[k]
+ if (len(label_input) > 0):
+ label = ("%s.%s" % (label_input, k))
+ else:
+ label = k
+ dump_item(label, v)
+ return
+
+for line in sys.stdin:
+ data = json.loads(line)
+ dump_dict("", data)
--
2.9.3
next prev parent reply other threads:[~2018-06-05 16:34 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-05 16:33 [PATCH v7 0/2] json-writer V7 git
2018-06-05 16:33 ` [PATCH v7 1/2] json_writer: new routines to create data in JSON format git
2018-06-05 16:33 ` git [this message]
2018-06-06 17:10 ` [PATCH v7 2/2] json-writer: t0019: add Python unit test Todd Zullinger
2018-06-06 21:03 ` Jeff King
2018-06-06 21:11 ` Jeff Hostetler
2018-06-07 0:16 ` Ramsay Jones
2018-06-07 1:49 ` Todd Zullinger
2018-06-07 2:38 ` Jeff King
2018-06-07 2:23 ` Jeff King
2018-06-07 2:49 ` Jeff King
2018-06-07 19:03 ` Ramsay Jones
2018-06-06 21:05 ` Jeff Hostetler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180605163358.119080-3-git@jeffhostetler.com \
--to=git@jeffhostetler.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jeffhost@microsoft.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).