You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-admin/augeas/files/augeas-0.10.0-test2.patch

50 lines
1.7 KiB

From 100a7b38222a63c6435a72b4974b55f39a28989e Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lubo.rintel@gooddata.com>
Date: Mon, 9 Jan 2012 19:24:41 +0100
Subject: [PATCH 2/2] Correctly parse empty object and arrays in JSON
Add a test case.
Fix from David Lutterkort <lutter@redhat.com>.
https://fedorahosted.org/augeas/ticket/248
---
lenses/json.aug | 4 ++--
lenses/tests/test_json.aug | 5 +++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/lenses/json.aug b/lenses/json.aug
index 6ceab09..2645806 100644
--- a/lenses/json.aug
+++ b/lenses/json.aug
@@ -37,9 +37,9 @@ let const (r:regexp) = [ label "const" . store r . ws ]
let value0 = str | number | const /true|false|null/
let fix_value (value:lens) =
- let array = [ label "array" . lbrack . Build.opt_list value comma . rbrack ] in
+ let array = [ label "array" . lbrack . (Build.opt_list value comma)? . rbrack ] in
let pair = [ label "entry" . str_store . colon . value ] in
- let obj = [ label "dict" . lbrace . Build.opt_list pair comma . rbrace ] in
+ let obj = [ label "dict" . lbrace . (Build.opt_list pair comma)? . rbrace ] in
(str | number | obj | array | const /true|false|null/)
(* Typecheck finitely deep nesting *)
diff --git a/lenses/tests/test_json.aug b/lenses/tests/test_json.aug
index d8b7fa8..aec7d4c 100644
--- a/lenses/tests/test_json.aug
+++ b/lenses/tests/test_json.aug
@@ -30,6 +30,11 @@ test lns get "{ \"0\": true, \"1\":false }" =
test lns get "{\"menu\": \"entry one\"}" =
{ "dict" { "entry" = "menu" { "string" = "entry one" } } }
+test lns get "[ ]" =
+ { "array" }
+
+test lns get "{}" =
+ { "dict" }
let s = "{\"menu\": {
\"id\": \"file\",
--
1.7.7.5