summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2017-02-28 21:39:54 -0600
committerNicolas Williams <nico@cryptonector.com>2017-02-28 21:54:30 -0600
commit2fcb25716827d92f3056e05a6e0db123e07b64f2 (patch)
tree4c0005d65f1f6eb278abc836839a3621a4a7d2ee /tests
parent63791b795a984e977e6a45471731a28af252097e (diff)
getpath/1 should be a path expression (fix #1358)
It needs to be possible to do something like getpath($paths[]) += 1 meaning: increment all the paths in . that are listed in $paths[]. In order to do this getpath() needs to update the jq->path and jq->value_at_path as necessary.
Diffstat (limited to 'tests')
-rw-r--r--tests/jq.test12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/jq.test b/tests/jq.test
index 2c9cc889..4dad2308 100644
--- a/tests/jq.test
+++ b/tests/jq.test
@@ -842,6 +842,18 @@ def inc(x): x |= .+1; inc(.[].a)
[{"a":1,"b":2},{"a":2,"b":4},{"a":7,"b":8}]
[{"a":2,"b":2},{"a":3,"b":4},{"a":8,"b":8}]
+# #1358, getpath/1 should work in path expressions
+.[] | try (getpath(["a",0,"b"]) |= 5) catch .
+[null,{"b":0},{"a":0},{"a":null},{"a":[0,1]},{"a":{"b":1}},{"a":[{}]},{"a":[{"c":3}]}]
+{"a":[{"b":5}]}
+{"b":0,"a":[{"b":5}]}
+"Cannot index number with number"
+{"a":[{"b":5}]}
+"Cannot index number with string \"b\""
+"Cannot index object with number"
+{"a":[{"b":5}]}
+{"a":[{"c":3,"b":5}]}
+
.[2][3] = 1
[4]
[4, null, [null, null, null, 1]]