mirror of
https://github.com/webmin/webmin.git
synced 2026-08-07 00:10:40 +01:00
Fix to normalized XML-RPC scalar tag names
https://github.com/webmin/webmin/pull/2811
This commit is contained in:
@@ -228,6 +228,14 @@ subtest 'parse_xml_value' => sub {
|
||||
'<array><data><value><int>1</int></value><value><string>x</string></value></data></array>'));
|
||||
is(ref($a), 'ARRAY', 'array -> arrayref');
|
||||
is_deeply($a, [1, 'x'], 'array elements parsed in order');
|
||||
|
||||
# Scalar tags must retain their type when a nested value is later encoded.
|
||||
require JSON::PP;
|
||||
my $typed = parse_xml_value(value_tree(
|
||||
'<struct><member><name>integer</name><value><int>1800</int></value></member><member><name>boolean</name><value><boolean>1</boolean></value></member><member><name>double</name><value><double>2.5</double></value></member><member><name>string</name><value><string>1800</string></value></member></struct>'));
|
||||
is(JSON::PP->new->canonical->encode($typed),
|
||||
'{"boolean":1,"double":2.5,"integer":1800,"string":"1800"}',
|
||||
'nested scalar types preserved for JSON');
|
||||
};
|
||||
|
||||
# Round-trip: encode_xml_value then parse_xml_value should reproduce the
|
||||
|
||||
@@ -18,13 +18,14 @@ my ($base64) = &find_xmls("base64", $value, 1);
|
||||
my ($struct) = &find_xmls("struct", $value, 1);
|
||||
my ($array) = &find_xmls("array", $value, 1);
|
||||
if ($scalar) {
|
||||
my ($type, $content) = ($scalar->[0], $scalar->[1]->[2] // "");
|
||||
my ($type, $content) = ($scalar->[0], $scalar->[1]->[2] // "");
|
||||
$type = lc($type);
|
||||
|
||||
return int($content) if ($type eq "int" || $type eq "i4");
|
||||
return $content ? 1 : 0 if ($type eq "boolean");
|
||||
return $content + 0.0 if ($type eq "double");
|
||||
return int($content) if ($type eq "int" || $type eq "i4");
|
||||
return $content ? 1 : 0 if ($type eq "boolean");
|
||||
return $content + 0.0 if ($type eq "double");
|
||||
|
||||
return $content;
|
||||
return $content;
|
||||
}
|
||||
elsif ($date) {
|
||||
# Need to decode date
|
||||
|
||||
Reference in New Issue
Block a user