Skip to content
Snippets Groups Projects
Commit 8c97e387 authored by Ævar Arnfjörð Bjarmason's avatar Ævar Arnfjörð Bjarmason Committed by Junio C Hamano
Browse files

tests: fix version-specific portability issue in Perl JSON


The test guarded by PERLJSON added in 75459410 ("json_writer: new
routines to create JSON data", 2018-07-13) assumed that a JSON boolean
value like "true" or "false" would be represented as "1" or "0" in
Perl.

This behavior can't be relied upon, e.g. with JSON.pm 2.50 and
JSON::PP.  A JSON::PP::Boolean object will be represented as "true"
or "false". To work around this let's check if we have any refs left
after we check for hashes and arrays, assume those are JSON objects,
and coerce them to a known boolean value.

The behavior of this test still looks odd to me. Why implement our own
ad-hoc encoder just for some one-off test, as opposed to say Perl's
own Data::Dumper with Sortkeys et al? But with this change it works,
so let's leave it be.

Signed-off-by: default avatarÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
parent a3c4c884
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -34,6 +34,9 @@ sub dump_item {
} elsif (ref($value) eq 'HASH') {
print "$label_in hash\n";
dump_hash($label_in, $value);
} elsif (ref $value) {
my $bool = $value ? 1 : 0;
print "$label_in $bool\n";
} elsif (defined $value) {
print "$label_in $value\n";
} else {
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment