mirror of
https://github.com/kyverno/kyverno.git
synced 2025-04-08 10:04:25 +00:00
update vendor
This commit is contained in:
parent
b5de11fc0e
commit
bee6f909bf
1410 changed files with 91343 additions and 63924 deletions
5
vendor/github.com/cenkalti/backoff/README.md
generated
vendored
5
vendor/github.com/cenkalti/backoff/README.md
generated
vendored
|
@ -9,7 +9,10 @@ The retries exponentially increase and stop increasing when a certain threshold
|
|||
|
||||
## Usage
|
||||
|
||||
See https://godoc.org/github.com/cenkalti/backoff#pkg-examples
|
||||
Import path is `github.com/cenkalti/backoff/v3`. Please note the version part at the end.
|
||||
|
||||
godoc.org does not support modules yet,
|
||||
so you can use https://godoc.org/gopkg.in/cenkalti/backoff.v3 to view the documentation.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
|
6
vendor/github.com/cenkalti/backoff/context.go
generated
vendored
6
vendor/github.com/cenkalti/backoff/context.go
generated
vendored
|
@ -7,7 +7,7 @@ import (
|
|||
|
||||
// BackOffContext is a backoff policy that stops retrying after the context
|
||||
// is canceled.
|
||||
type BackOffContext interface {
|
||||
type BackOffContext interface { // nolint: golint
|
||||
BackOff
|
||||
Context() context.Context
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ type backOffContext struct {
|
|||
// WithContext returns a BackOffContext with context ctx
|
||||
//
|
||||
// ctx must not be nil
|
||||
func WithContext(b BackOff, ctx context.Context) BackOffContext {
|
||||
func WithContext(b BackOff, ctx context.Context) BackOffContext { // nolint: golint
|
||||
if ctx == nil {
|
||||
panic("nil context")
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ func (b *backOffContext) NextBackOff() time.Duration {
|
|||
default:
|
||||
}
|
||||
next := b.BackOff.NextBackOff()
|
||||
if deadline, ok := b.ctx.Deadline(); ok && deadline.Sub(time.Now()) < next {
|
||||
if deadline, ok := b.ctx.Deadline(); ok && deadline.Sub(time.Now()) < next { // nolint: gosimple
|
||||
return Stop
|
||||
}
|
||||
return next
|
||||
|
|
5
vendor/github.com/cenkalti/backoff/example_test.go
generated
vendored
5
vendor/github.com/cenkalti/backoff/example_test.go
generated
vendored
|
@ -20,7 +20,7 @@ func ExampleRetry() {
|
|||
// Operation is successful.
|
||||
}
|
||||
|
||||
func ExampleRetryContext() {
|
||||
func ExampleRetryContext() { // nolint: govet
|
||||
// A context
|
||||
ctx := context.Background()
|
||||
|
||||
|
@ -52,7 +52,7 @@ func ExampleTicker() {
|
|||
|
||||
// Ticks will continue to arrive when the previous operation is still running,
|
||||
// so operations that take a while to fail could run in quick succession.
|
||||
for _ = range ticker.C {
|
||||
for range ticker.C {
|
||||
if err = operation(); err != nil {
|
||||
log.Println(err, "will retry...")
|
||||
continue
|
||||
|
@ -68,5 +68,4 @@ func ExampleTicker() {
|
|||
}
|
||||
|
||||
// Operation is successful.
|
||||
return
|
||||
}
|
||||
|
|
3
vendor/github.com/cenkalti/backoff/exponential.go
generated
vendored
3
vendor/github.com/cenkalti/backoff/exponential.go
generated
vendored
|
@ -103,13 +103,14 @@ func (t systemClock) Now() time.Time {
|
|||
var SystemClock = systemClock{}
|
||||
|
||||
// Reset the interval back to the initial retry interval and restarts the timer.
|
||||
// Reset must be called before using b.
|
||||
func (b *ExponentialBackOff) Reset() {
|
||||
b.currentInterval = b.InitialInterval
|
||||
b.startTime = b.Clock.Now()
|
||||
}
|
||||
|
||||
// NextBackOff calculates the next backoff interval using the formula:
|
||||
// Randomized interval = RetryInterval +/- (RandomizationFactor * RetryInterval)
|
||||
// Randomized interval = RetryInterval * (1 ± RandomizationFactor)
|
||||
func (b *ExponentialBackOff) NextBackOff() time.Duration {
|
||||
// Make sure we have not gone over the maximum elapsed time.
|
||||
if b.MaxElapsedTime != 0 && b.GetElapsedTime() > b.MaxElapsedTime {
|
||||
|
|
4
vendor/github.com/cenkalti/backoff/retry.go
generated
vendored
4
vendor/github.com/cenkalti/backoff/retry.go
generated
vendored
|
@ -74,6 +74,10 @@ func (e *PermanentError) Error() string {
|
|||
return e.Err.Error()
|
||||
}
|
||||
|
||||
func (e *PermanentError) Unwrap() error {
|
||||
return e.Err
|
||||
}
|
||||
|
||||
// Permanent wraps the given err in a *PermanentError.
|
||||
func Permanent(err error) *PermanentError {
|
||||
return &PermanentError{
|
||||
|
|
4
vendor/github.com/cenkalti/backoff/ticker_test.go
generated
vendored
4
vendor/github.com/cenkalti/backoff/ticker_test.go
generated
vendored
|
@ -35,7 +35,7 @@ func TestTicker(t *testing.T) {
|
|||
}
|
||||
|
||||
var err error
|
||||
for _ = range ticker.C {
|
||||
for range ticker.C {
|
||||
if err = f(); err != nil {
|
||||
t.Log(err)
|
||||
continue
|
||||
|
@ -77,7 +77,7 @@ func TestTickerContext(t *testing.T) {
|
|||
ticker := NewTicker(b)
|
||||
|
||||
var err error
|
||||
for _ = range ticker.C {
|
||||
for range ticker.C {
|
||||
if err = f(); err != nil {
|
||||
t.Log(err)
|
||||
continue
|
||||
|
|
1
vendor/github.com/cenkalti/backoff/tries_test.go
generated
vendored
1
vendor/github.com/cenkalti/backoff/tries_test.go
generated
vendored
|
@ -40,7 +40,6 @@ func TestMaxTriesHappy(t *testing.T) {
|
|||
if d == Stop {
|
||||
t.Error("returned Stop after reset")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestMaxTriesZero(t *testing.T) {
|
||||
|
|
4
vendor/github.com/jmespath/go-jmespath/.gitignore
generated
vendored
Normal file
4
vendor/github.com/jmespath/go-jmespath/.gitignore
generated
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
jpgo
|
||||
jmespath-fuzz.zip
|
||||
cpu.out
|
||||
go-jmespath.test
|
9
vendor/github.com/jmespath/go-jmespath/.travis.yml
generated
vendored
Normal file
9
vendor/github.com/jmespath/go-jmespath/.travis.yml
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
language: go
|
||||
|
||||
sudo: false
|
||||
|
||||
go:
|
||||
- 1.4
|
||||
|
||||
install: go get -v -t ./...
|
||||
script: make test
|
13
vendor/github.com/jmespath/go-jmespath/LICENSE
generated
vendored
Normal file
13
vendor/github.com/jmespath/go-jmespath/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
Copyright 2015 James Saryerwinnie
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
44
vendor/github.com/jmespath/go-jmespath/Makefile
generated
vendored
Normal file
44
vendor/github.com/jmespath/go-jmespath/Makefile
generated
vendored
Normal file
|
@ -0,0 +1,44 @@
|
|||
|
||||
CMD = jpgo
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " test to run all the tests"
|
||||
@echo " build to build the library and jp executable"
|
||||
@echo " generate to run codegen"
|
||||
|
||||
|
||||
generate:
|
||||
go generate ./...
|
||||
|
||||
build:
|
||||
rm -f $(CMD)
|
||||
go build ./...
|
||||
rm -f cmd/$(CMD)/$(CMD) && cd cmd/$(CMD)/ && go build ./...
|
||||
mv cmd/$(CMD)/$(CMD) .
|
||||
|
||||
test:
|
||||
go test -v ./...
|
||||
|
||||
check:
|
||||
go vet ./...
|
||||
@echo "golint ./..."
|
||||
@lint=`golint ./...`; \
|
||||
lint=`echo "$$lint" | grep -v "astnodetype_string.go" | grep -v "toktype_string.go"`; \
|
||||
echo "$$lint"; \
|
||||
if [ "$$lint" != "" ]; then exit 1; fi
|
||||
|
||||
htmlc:
|
||||
go test -coverprofile="/tmp/jpcov" && go tool cover -html="/tmp/jpcov" && unlink /tmp/jpcov
|
||||
|
||||
buildfuzz:
|
||||
go-fuzz-build github.com/jmespath/go-jmespath/fuzz
|
||||
|
||||
fuzz: buildfuzz
|
||||
go-fuzz -bin=./jmespath-fuzz.zip -workdir=fuzz/corpus
|
||||
|
||||
bench:
|
||||
go test -bench . -cpuprofile cpu.out
|
||||
|
||||
pprof-cpu:
|
||||
go tool pprof ./go-jmespath.test ./cpu.out
|
7
vendor/github.com/jmespath/go-jmespath/README.md
generated
vendored
Normal file
7
vendor/github.com/jmespath/go-jmespath/README.md
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
# go-jmespath - A JMESPath implementation in Go
|
||||
|
||||
[](https://travis-ci.org/jmespath/go-jmespath)
|
||||
|
||||
|
||||
|
||||
See http://jmespath.org for more info.
|
12
vendor/github.com/jmespath/go-jmespath/api.go
generated
vendored
Normal file
12
vendor/github.com/jmespath/go-jmespath/api.go
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
package jmespath
|
||||
|
||||
// Search evaluates a JMESPath expression against input data and returns the result.
|
||||
func Search(expression string, data interface{}) (interface{}, error) {
|
||||
intr := newInterpreter()
|
||||
parser := NewParser()
|
||||
ast, err := parser.Parse(expression)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return intr.Execute(ast, data)
|
||||
}
|
16
vendor/github.com/jmespath/go-jmespath/astnodetype_string.go
generated
vendored
Normal file
16
vendor/github.com/jmespath/go-jmespath/astnodetype_string.go
generated
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
// generated by stringer -type astNodeType; DO NOT EDIT
|
||||
|
||||
package jmespath
|
||||
|
||||
import "fmt"
|
||||
|
||||
const _astNodeType_name = "ASTEmptyASTComparatorASTCurrentNodeASTExpRefASTFunctionExpressionASTFieldASTFilterProjectionASTFlattenASTIdentityASTIndexASTIndexExpressionASTKeyValPairASTLiteralASTMultiSelectHashASTMultiSelectListASTOrExpressionASTAndExpressionASTNotExpressionASTPipeASTProjectionASTSubexpressionASTSliceASTValueProjection"
|
||||
|
||||
var _astNodeType_index = [...]uint16{0, 8, 21, 35, 44, 65, 73, 92, 102, 113, 121, 139, 152, 162, 180, 198, 213, 229, 245, 252, 265, 281, 289, 307}
|
||||
|
||||
func (i astNodeType) String() string {
|
||||
if i < 0 || i >= astNodeType(len(_astNodeType_index)-1) {
|
||||
return fmt.Sprintf("astNodeType(%d)", i)
|
||||
}
|
||||
return _astNodeType_name[_astNodeType_index[i]:_astNodeType_index[i+1]]
|
||||
}
|
96
vendor/github.com/jmespath/go-jmespath/compliance/basic.json
generated
vendored
Normal file
96
vendor/github.com/jmespath/go-jmespath/compliance/basic.json
generated
vendored
Normal file
|
@ -0,0 +1,96 @@
|
|||
[{
|
||||
"given":
|
||||
{"foo": {"bar": {"baz": "correct"}}},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo",
|
||||
"result": {"bar": {"baz": "correct"}}
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar",
|
||||
"result": {"baz": "correct"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar.baz",
|
||||
"result": "correct"
|
||||
},
|
||||
{
|
||||
"expression": "foo\n.\nbar\n.baz",
|
||||
"result": "correct"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar.baz.bad",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar.bad",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo.bad",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "bad",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "bad.morebad.morebad",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given":
|
||||
{"foo": {"bar": ["one", "two", "three"]}},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo",
|
||||
"result": {"bar": ["one", "two", "three"]}
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar",
|
||||
"result": ["one", "two", "three"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": ["one", "two", "three"],
|
||||
"cases": [
|
||||
{
|
||||
"expression": "one",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "two",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "three",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "one.two",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given":
|
||||
{"foo": {"1": ["one", "two", "three"], "-1": "bar"}},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.\"1\"",
|
||||
"result": ["one", "two", "three"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.\"1\"[0]",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "foo.\"-1\"",
|
||||
"result": "bar"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
257
vendor/github.com/jmespath/go-jmespath/compliance/boolean.json
generated
vendored
Normal file
257
vendor/github.com/jmespath/go-jmespath/compliance/boolean.json
generated
vendored
Normal file
|
@ -0,0 +1,257 @@
|
|||
[
|
||||
{
|
||||
"given": {
|
||||
"outer": {
|
||||
"foo": "foo",
|
||||
"bar": "bar",
|
||||
"baz": "baz"
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "outer.foo || outer.bar",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.foo||outer.bar",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bar || outer.baz",
|
||||
"result": "bar"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bar||outer.baz",
|
||||
"result": "bar"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bad || outer.foo",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bad||outer.foo",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.foo || outer.bad",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.foo||outer.bad",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bad || outer.alsobad",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "outer.bad||outer.alsobad",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"outer": {
|
||||
"foo": "foo",
|
||||
"bool": false,
|
||||
"empty_list": [],
|
||||
"empty_string": ""
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "outer.empty_string || outer.foo",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.nokey || outer.bool || outer.empty_list || outer.empty_string || outer.foo",
|
||||
"result": "foo"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"True": true,
|
||||
"False": false,
|
||||
"Number": 5,
|
||||
"EmptyList": [],
|
||||
"Zero": 0
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "True && False",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "False && True",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "True && True",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "False && False",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "True && Number",
|
||||
"result": 5
|
||||
},
|
||||
{
|
||||
"expression": "Number && True",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "Number && False",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "Number && EmptyList",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "Number && True",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "EmptyList && True",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "EmptyList && False",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "True || False",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "True || True",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "False || True",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "False || False",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "Number || EmptyList",
|
||||
"result": 5
|
||||
},
|
||||
{
|
||||
"expression": "Number || True",
|
||||
"result": 5
|
||||
},
|
||||
{
|
||||
"expression": "Number || True && False",
|
||||
"result": 5
|
||||
},
|
||||
{
|
||||
"expression": "(Number || True) && False",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "Number || (True && False)",
|
||||
"result": 5
|
||||
},
|
||||
{
|
||||
"expression": "!True",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "!False",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "!Number",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "!EmptyList",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "True && !False",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "True && !EmptyList",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "!False && !EmptyList",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "!(True && False)",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "!Zero",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "!!Zero",
|
||||
"result": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"one": 1,
|
||||
"two": 2,
|
||||
"three": 3
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "one < two",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "one <= two",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "one == one",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "one == two",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "one > two",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "one >= two",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "one != two",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "one < two && three > one",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "one < two || three > one",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "one < two || three < one",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "two < one || three < one",
|
||||
"result": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
25
vendor/github.com/jmespath/go-jmespath/compliance/current.json
generated
vendored
Normal file
25
vendor/github.com/jmespath/go-jmespath/compliance/current.json
generated
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
[
|
||||
{
|
||||
"given": {
|
||||
"foo": [{"name": "a"}, {"name": "b"}],
|
||||
"bar": {"baz": "qux"}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "@",
|
||||
"result": {
|
||||
"foo": [{"name": "a"}, {"name": "b"}],
|
||||
"bar": {"baz": "qux"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"expression": "@.bar",
|
||||
"result": {"baz": "qux"}
|
||||
},
|
||||
{
|
||||
"expression": "@.foo[0]",
|
||||
"result": {"name": "a"}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
46
vendor/github.com/jmespath/go-jmespath/compliance/escape.json
generated
vendored
Normal file
46
vendor/github.com/jmespath/go-jmespath/compliance/escape.json
generated
vendored
Normal file
|
@ -0,0 +1,46 @@
|
|||
[{
|
||||
"given": {
|
||||
"foo.bar": "dot",
|
||||
"foo bar": "space",
|
||||
"foo\nbar": "newline",
|
||||
"foo\"bar": "doublequote",
|
||||
"c:\\\\windows\\path": "windows",
|
||||
"/unix/path": "unix",
|
||||
"\"\"\"": "threequotes",
|
||||
"bar": {"baz": "qux"}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "\"foo.bar\"",
|
||||
"result": "dot"
|
||||
},
|
||||
{
|
||||
"expression": "\"foo bar\"",
|
||||
"result": "space"
|
||||
},
|
||||
{
|
||||
"expression": "\"foo\\nbar\"",
|
||||
"result": "newline"
|
||||
},
|
||||
{
|
||||
"expression": "\"foo\\\"bar\"",
|
||||
"result": "doublequote"
|
||||
},
|
||||
{
|
||||
"expression": "\"c:\\\\\\\\windows\\\\path\"",
|
||||
"result": "windows"
|
||||
},
|
||||
{
|
||||
"expression": "\"/unix/path\"",
|
||||
"result": "unix"
|
||||
},
|
||||
{
|
||||
"expression": "\"\\\"\\\"\\\"\"",
|
||||
"result": "threequotes"
|
||||
},
|
||||
{
|
||||
"expression": "\"bar\".\"baz\"",
|
||||
"result": "qux"
|
||||
}
|
||||
]
|
||||
}]
|
468
vendor/github.com/jmespath/go-jmespath/compliance/filters.json
generated
vendored
Normal file
468
vendor/github.com/jmespath/go-jmespath/compliance/filters.json
generated
vendored
Normal file
|
@ -0,0 +1,468 @@
|
|||
[
|
||||
{
|
||||
"given": {"foo": [{"name": "a"}, {"name": "b"}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Matching a literal",
|
||||
"expression": "foo[?name == 'a']",
|
||||
"result": [{"name": "a"}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [0, 1], "bar": [2, 3]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Matching a literal",
|
||||
"expression": "*[?[0] == `0`]",
|
||||
"result": [[], []]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [{"first": "foo", "last": "bar"},
|
||||
{"first": "foo", "last": "foo"},
|
||||
{"first": "foo", "last": "baz"}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Matching an expression",
|
||||
"expression": "foo[?first == last]",
|
||||
"result": [{"first": "foo", "last": "foo"}]
|
||||
},
|
||||
{
|
||||
"comment": "Verify projection created from filter",
|
||||
"expression": "foo[?first == last].first",
|
||||
"result": ["foo"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [{"age": 20},
|
||||
{"age": 25},
|
||||
{"age": 30}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Greater than with a number",
|
||||
"expression": "foo[?age > `25`]",
|
||||
"result": [{"age": 30}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?age >= `25`]",
|
||||
"result": [{"age": 25}, {"age": 30}]
|
||||
},
|
||||
{
|
||||
"comment": "Greater than with a number",
|
||||
"expression": "foo[?age > `30`]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"comment": "Greater than with a number",
|
||||
"expression": "foo[?age < `25`]",
|
||||
"result": [{"age": 20}]
|
||||
},
|
||||
{
|
||||
"comment": "Greater than with a number",
|
||||
"expression": "foo[?age <= `25`]",
|
||||
"result": [{"age": 20}, {"age": 25}]
|
||||
},
|
||||
{
|
||||
"comment": "Greater than with a number",
|
||||
"expression": "foo[?age < `20`]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "foo[?age == `20`]",
|
||||
"result": [{"age": 20}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?age != `20`]",
|
||||
"result": [{"age": 25}, {"age": 30}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [{"top": {"name": "a"}},
|
||||
{"top": {"name": "b"}}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Filter with subexpression",
|
||||
"expression": "foo[?top.name == 'a']",
|
||||
"result": [{"top": {"name": "a"}}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [{"top": {"first": "foo", "last": "bar"}},
|
||||
{"top": {"first": "foo", "last": "foo"}},
|
||||
{"top": {"first": "foo", "last": "baz"}}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Matching an expression",
|
||||
"expression": "foo[?top.first == top.last]",
|
||||
"result": [{"top": {"first": "foo", "last": "foo"}}]
|
||||
},
|
||||
{
|
||||
"comment": "Matching a JSON array",
|
||||
"expression": "foo[?top == `{\"first\": \"foo\", \"last\": \"bar\"}`]",
|
||||
"result": [{"top": {"first": "foo", "last": "bar"}}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [
|
||||
{"key": true},
|
||||
{"key": false},
|
||||
{"key": 0},
|
||||
{"key": 1},
|
||||
{"key": [0]},
|
||||
{"key": {"bar": [0]}},
|
||||
{"key": null},
|
||||
{"key": [1]},
|
||||
{"key": {"a":2}}
|
||||
]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[?key == `true`]",
|
||||
"result": [{"key": true}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key == `false`]",
|
||||
"result": [{"key": false}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key == `0`]",
|
||||
"result": [{"key": 0}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key == `1`]",
|
||||
"result": [{"key": 1}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key == `[0]`]",
|
||||
"result": [{"key": [0]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key == `{\"bar\": [0]}`]",
|
||||
"result": [{"key": {"bar": [0]}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key == `null`]",
|
||||
"result": [{"key": null}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key == `[1]`]",
|
||||
"result": [{"key": [1]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key == `{\"a\":2}`]",
|
||||
"result": [{"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`true` == key]",
|
||||
"result": [{"key": true}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`false` == key]",
|
||||
"result": [{"key": false}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`0` == key]",
|
||||
"result": [{"key": 0}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`1` == key]",
|
||||
"result": [{"key": 1}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`[0]` == key]",
|
||||
"result": [{"key": [0]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`{\"bar\": [0]}` == key]",
|
||||
"result": [{"key": {"bar": [0]}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`null` == key]",
|
||||
"result": [{"key": null}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`[1]` == key]",
|
||||
"result": [{"key": [1]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`{\"a\":2}` == key]",
|
||||
"result": [{"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key != `true`]",
|
||||
"result": [{"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key != `false`]",
|
||||
"result": [{"key": true}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key != `0`]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key != `1`]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 0}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key != `null`]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key != `[1]`]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?key != `{\"a\":2}`]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`true` != key]",
|
||||
"result": [{"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`false` != key]",
|
||||
"result": [{"key": true}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`0` != key]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`1` != key]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 0}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`null` != key]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": [1]}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`[1]` != key]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": {"a":2}}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?`{\"a\":2}` != key]",
|
||||
"result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
|
||||
{"key": {"bar": [0]}}, {"key": null}, {"key": [1]}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"reservations": [
|
||||
{"instances": [
|
||||
{"foo": 1, "bar": 2}, {"foo": 1, "bar": 3},
|
||||
{"foo": 1, "bar": 2}, {"foo": 2, "bar": 1}]}]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "reservations[].instances[?bar==`1`]",
|
||||
"result": [[{"foo": 2, "bar": 1}]]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[*].instances[?bar==`1`]",
|
||||
"result": [[{"foo": 2, "bar": 1}]]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[?bar==`1`][]",
|
||||
"result": [{"foo": 2, "bar": 1}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"baz": "other",
|
||||
"foo": [
|
||||
{"bar": 1}, {"bar": 2}, {"bar": 3}, {"bar": 4}, {"bar": 1, "baz": 2}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[?bar==`1`].bar[0]",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [
|
||||
{"a": 1, "b": {"c": "x"}},
|
||||
{"a": 1, "b": {"c": "y"}},
|
||||
{"a": 1, "b": {"c": "z"}},
|
||||
{"a": 2, "b": {"c": "z"}},
|
||||
{"a": 1, "baz": 2}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[?a==`1`].b.c",
|
||||
"result": ["x", "y", "z"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [{"name": "a"}, {"name": "b"}, {"name": "c"}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Filter with or expression",
|
||||
"expression": "foo[?name == 'a' || name == 'b']",
|
||||
"result": [{"name": "a"}, {"name": "b"}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?name == 'a' || name == 'e']",
|
||||
"result": [{"name": "a"}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?name == 'a' || name == 'b' || name == 'c']",
|
||||
"result": [{"name": "a"}, {"name": "b"}, {"name": "c"}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [{"a": 1, "b": 2}, {"a": 1, "b": 3}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Filter with and expression",
|
||||
"expression": "foo[?a == `1` && b == `2`]",
|
||||
"result": [{"a": 1, "b": 2}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?a == `1` && b == `4`]",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Filter with Or and And expressions",
|
||||
"expression": "foo[?c == `3` || a == `1` && b == `4`]",
|
||||
"result": [{"a": 1, "b": 2, "c": 3}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?b == `2` || a == `3` && b == `4`]",
|
||||
"result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?a == `3` && b == `4` || b == `2`]",
|
||||
"result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?(a == `3` && b == `4`) || b == `2`]",
|
||||
"result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?((a == `3` && b == `4`)) || b == `2`]",
|
||||
"result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?a == `3` && (b == `4` || b == `2`)]",
|
||||
"result": [{"a": 3, "b": 4}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[?a == `3` && ((b == `4` || b == `2`))]",
|
||||
"result": [{"a": 3, "b": 4}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"foo": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Verify precedence of or/and expressions",
|
||||
"expression": "foo[?a == `1` || b ==`2` && c == `5`]",
|
||||
"result": [{"a": 1, "b": 2, "c": 3}]
|
||||
},
|
||||
{
|
||||
"comment": "Parentheses can alter precedence",
|
||||
"expression": "foo[?(a == `1` || b ==`2`) && c == `5`]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"comment": "Not expressions combined with and/or",
|
||||
"expression": "foo[?!(a == `1` || b ==`2`)]",
|
||||
"result": [{"a": 3, "b": 4}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [
|
||||
{"key": true},
|
||||
{"key": false},
|
||||
{"key": []},
|
||||
{"key": {}},
|
||||
{"key": [0]},
|
||||
{"key": {"a": "b"}},
|
||||
{"key": 0},
|
||||
{"key": 1},
|
||||
{"key": null},
|
||||
{"notkey": true}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Unary filter expression",
|
||||
"expression": "foo[?key]",
|
||||
"result": [
|
||||
{"key": true}, {"key": [0]}, {"key": {"a": "b"}},
|
||||
{"key": 0}, {"key": 1}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Unary not filter expression",
|
||||
"expression": "foo[?!key]",
|
||||
"result": [
|
||||
{"key": false}, {"key": []}, {"key": {}},
|
||||
{"key": null}, {"notkey": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Equality with null RHS",
|
||||
"expression": "foo[?key == `null`]",
|
||||
"result": [
|
||||
{"key": null}, {"notkey": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Using @ in a filter expression",
|
||||
"expression": "foo[?@ < `5`]",
|
||||
"result": [0, 1, 2, 3, 4]
|
||||
},
|
||||
{
|
||||
"comment": "Using @ in a filter expression",
|
||||
"expression": "foo[?`5` > @]",
|
||||
"result": [0, 1, 2, 3, 4]
|
||||
},
|
||||
{
|
||||
"comment": "Using @ in a filter expression",
|
||||
"expression": "foo[?@ == @]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
825
vendor/github.com/jmespath/go-jmespath/compliance/functions.json
generated
vendored
Normal file
825
vendor/github.com/jmespath/go-jmespath/compliance/functions.json
generated
vendored
Normal file
|
@ -0,0 +1,825 @@
|
|||
[{
|
||||
"given":
|
||||
{
|
||||
"foo": -1,
|
||||
"zero": 0,
|
||||
"numbers": [-1, 3, 4, 5],
|
||||
"array": [-1, 3, 4, 5, "a", "100"],
|
||||
"strings": ["a", "b", "c"],
|
||||
"decimals": [1.01, 1.2, -1.5],
|
||||
"str": "Str",
|
||||
"false": false,
|
||||
"empty_list": [],
|
||||
"empty_hash": {},
|
||||
"objects": {"foo": "bar", "bar": "baz"},
|
||||
"null_key": null
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "abs(foo)",
|
||||
"result": 1
|
||||
},
|
||||
{
|
||||
"expression": "abs(foo)",
|
||||
"result": 1
|
||||
},
|
||||
{
|
||||
"expression": "abs(str)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "abs(array[1])",
|
||||
"result": 3
|
||||
},
|
||||
{
|
||||
"expression": "abs(array[1])",
|
||||
"result": 3
|
||||
},
|
||||
{
|
||||
"expression": "abs(`false`)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "abs(`-24`)",
|
||||
"result": 24
|
||||
},
|
||||
{
|
||||
"expression": "abs(`-24`)",
|
||||
"result": 24
|
||||
},
|
||||
{
|
||||
"expression": "abs(`1`, `2`)",
|
||||
"error": "invalid-arity"
|
||||
},
|
||||
{
|
||||
"expression": "abs()",
|
||||
"error": "invalid-arity"
|
||||
},
|
||||
{
|
||||
"expression": "unknown_function(`1`, `2`)",
|
||||
"error": "unknown-function"
|
||||
},
|
||||
{
|
||||
"expression": "avg(numbers)",
|
||||
"result": 2.75
|
||||
},
|
||||
{
|
||||
"expression": "avg(array)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "avg('abc')",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "avg(foo)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "avg(@)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "avg(strings)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "ceil(`1.2`)",
|
||||
"result": 2
|
||||
},
|
||||
{
|
||||
"expression": "ceil(decimals[0])",
|
||||
"result": 2
|
||||
},
|
||||
{
|
||||
"expression": "ceil(decimals[1])",
|
||||
"result": 2
|
||||
},
|
||||
{
|
||||
"expression": "ceil(decimals[2])",
|
||||
"result": -1
|
||||
},
|
||||
{
|
||||
"expression": "ceil('string')",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "contains('abc', 'a')",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "contains('abc', 'd')",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "contains(`false`, 'd')",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "contains(strings, 'a')",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "contains(decimals, `1.2`)",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "contains(decimals, `false`)",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "ends_with(str, 'r')",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "ends_with(str, 'tr')",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "ends_with(str, 'Str')",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "ends_with(str, 'SStr')",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "ends_with(str, 'foo')",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "ends_with(str, `0`)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "floor(`1.2`)",
|
||||
"result": 1
|
||||
},
|
||||
{
|
||||
"expression": "floor('string')",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "floor(decimals[0])",
|
||||
"result": 1
|
||||
},
|
||||
{
|
||||
"expression": "floor(foo)",
|
||||
"result": -1
|
||||
},
|
||||
{
|
||||
"expression": "floor(str)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "length('abc')",
|
||||
"result": 3
|
||||
},
|
||||
{
|
||||
"expression": "length('✓foo')",
|
||||
"result": 4
|
||||
},
|
||||
{
|
||||
"expression": "length('')",
|
||||
"result": 0
|
||||
},
|
||||
{
|
||||
"expression": "length(@)",
|
||||
"result": 12
|
||||
},
|
||||
{
|
||||
"expression": "length(strings[0])",
|
||||
"result": 1
|
||||
},
|
||||
{
|
||||
"expression": "length(str)",
|
||||
"result": 3
|
||||
},
|
||||
{
|
||||
"expression": "length(array)",
|
||||
"result": 6
|
||||
},
|
||||
{
|
||||
"expression": "length(objects)",
|
||||
"result": 2
|
||||
},
|
||||
{
|
||||
"expression": "length(`false`)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "length(foo)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "length(strings[0])",
|
||||
"result": 1
|
||||
},
|
||||
{
|
||||
"expression": "max(numbers)",
|
||||
"result": 5
|
||||
},
|
||||
{
|
||||
"expression": "max(decimals)",
|
||||
"result": 1.2
|
||||
},
|
||||
{
|
||||
"expression": "max(strings)",
|
||||
"result": "c"
|
||||
},
|
||||
{
|
||||
"expression": "max(abc)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "max(array)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "max(decimals)",
|
||||
"result": 1.2
|
||||
},
|
||||
{
|
||||
"expression": "max(empty_list)",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "merge(`{}`)",
|
||||
"result": {}
|
||||
},
|
||||
{
|
||||
"expression": "merge(`{}`, `{}`)",
|
||||
"result": {}
|
||||
},
|
||||
{
|
||||
"expression": "merge(`{\"a\": 1}`, `{\"b\": 2}`)",
|
||||
"result": {"a": 1, "b": 2}
|
||||
},
|
||||
{
|
||||
"expression": "merge(`{\"a\": 1}`, `{\"a\": 2}`)",
|
||||
"result": {"a": 2}
|
||||
},
|
||||
{
|
||||
"expression": "merge(`{\"a\": 1, \"b\": 2}`, `{\"a\": 2, \"c\": 3}`, `{\"d\": 4}`)",
|
||||
"result": {"a": 2, "b": 2, "c": 3, "d": 4}
|
||||
},
|
||||
{
|
||||
"expression": "min(numbers)",
|
||||
"result": -1
|
||||
},
|
||||
{
|
||||
"expression": "min(decimals)",
|
||||
"result": -1.5
|
||||
},
|
||||
{
|
||||
"expression": "min(abc)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "min(array)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "min(empty_list)",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "min(decimals)",
|
||||
"result": -1.5
|
||||
},
|
||||
{
|
||||
"expression": "min(strings)",
|
||||
"result": "a"
|
||||
},
|
||||
{
|
||||
"expression": "type('abc')",
|
||||
"result": "string"
|
||||
},
|
||||
{
|
||||
"expression": "type(`1.0`)",
|
||||
"result": "number"
|
||||
},
|
||||
{
|
||||
"expression": "type(`2`)",
|
||||
"result": "number"
|
||||
},
|
||||
{
|
||||
"expression": "type(`true`)",
|
||||
"result": "boolean"
|
||||
},
|
||||
{
|
||||
"expression": "type(`false`)",
|
||||
"result": "boolean"
|
||||
},
|
||||
{
|
||||
"expression": "type(`null`)",
|
||||
"result": "null"
|
||||
},
|
||||
{
|
||||
"expression": "type(`[0]`)",
|
||||
"result": "array"
|
||||
},
|
||||
{
|
||||
"expression": "type(`{\"a\": \"b\"}`)",
|
||||
"result": "object"
|
||||
},
|
||||
{
|
||||
"expression": "type(@)",
|
||||
"result": "object"
|
||||
},
|
||||
{
|
||||
"expression": "sort(keys(objects))",
|
||||
"result": ["bar", "foo"]
|
||||
},
|
||||
{
|
||||
"expression": "keys(foo)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "keys(strings)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "keys(`false`)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sort(values(objects))",
|
||||
"result": ["bar", "baz"]
|
||||
},
|
||||
{
|
||||
"expression": "keys(empty_hash)",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "values(foo)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "join(', ', strings)",
|
||||
"result": "a, b, c"
|
||||
},
|
||||
{
|
||||
"expression": "join(', ', strings)",
|
||||
"result": "a, b, c"
|
||||
},
|
||||
{
|
||||
"expression": "join(',', `[\"a\", \"b\"]`)",
|
||||
"result": "a,b"
|
||||
},
|
||||
{
|
||||
"expression": "join(',', `[\"a\", 0]`)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "join(', ', str)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "join('|', strings)",
|
||||
"result": "a|b|c"
|
||||
},
|
||||
{
|
||||
"expression": "join(`2`, strings)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "join('|', decimals)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "join('|', decimals[].to_string(@))",
|
||||
"result": "1.01|1.2|-1.5"
|
||||
},
|
||||
{
|
||||
"expression": "join('|', empty_list)",
|
||||
"result": ""
|
||||
},
|
||||
{
|
||||
"expression": "reverse(numbers)",
|
||||
"result": [5, 4, 3, -1]
|
||||
},
|
||||
{
|
||||
"expression": "reverse(array)",
|
||||
"result": ["100", "a", 5, 4, 3, -1]
|
||||
},
|
||||
{
|
||||
"expression": "reverse(`[]`)",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "reverse('')",
|
||||
"result": ""
|
||||
},
|
||||
{
|
||||
"expression": "reverse('hello world')",
|
||||
"result": "dlrow olleh"
|
||||
},
|
||||
{
|
||||
"expression": "starts_with(str, 'S')",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "starts_with(str, 'St')",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "starts_with(str, 'Str')",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "starts_with(str, 'String')",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "starts_with(str, `0`)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sum(numbers)",
|
||||
"result": 11
|
||||
},
|
||||
{
|
||||
"expression": "sum(decimals)",
|
||||
"result": 0.71
|
||||
},
|
||||
{
|
||||
"expression": "sum(array)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sum(array[].to_number(@))",
|
||||
"result": 111
|
||||
},
|
||||
{
|
||||
"expression": "sum(`[]`)",
|
||||
"result": 0
|
||||
},
|
||||
{
|
||||
"expression": "to_array('foo')",
|
||||
"result": ["foo"]
|
||||
},
|
||||
{
|
||||
"expression": "to_array(`0`)",
|
||||
"result": [0]
|
||||
},
|
||||
{
|
||||
"expression": "to_array(objects)",
|
||||
"result": [{"foo": "bar", "bar": "baz"}]
|
||||
},
|
||||
{
|
||||
"expression": "to_array(`[1, 2, 3]`)",
|
||||
"result": [1, 2, 3]
|
||||
},
|
||||
{
|
||||
"expression": "to_array(false)",
|
||||
"result": [false]
|
||||
},
|
||||
{
|
||||
"expression": "to_string('foo')",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "to_string(`1.2`)",
|
||||
"result": "1.2"
|
||||
},
|
||||
{
|
||||
"expression": "to_string(`[0, 1]`)",
|
||||
"result": "[0,1]"
|
||||
},
|
||||
{
|
||||
"expression": "to_number('1.0')",
|
||||
"result": 1.0
|
||||
},
|
||||
{
|
||||
"expression": "to_number('1.1')",
|
||||
"result": 1.1
|
||||
},
|
||||
{
|
||||
"expression": "to_number('4')",
|
||||
"result": 4
|
||||
},
|
||||
{
|
||||
"expression": "to_number('notanumber')",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "to_number(`false`)",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "to_number(`null`)",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "to_number(`[0]`)",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "to_number(`{\"foo\": 0}`)",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "\"to_string\"(`1.0`)",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "sort(numbers)",
|
||||
"result": [-1, 3, 4, 5]
|
||||
},
|
||||
{
|
||||
"expression": "sort(strings)",
|
||||
"result": ["a", "b", "c"]
|
||||
},
|
||||
{
|
||||
"expression": "sort(decimals)",
|
||||
"result": [-1.5, 1.01, 1.2]
|
||||
},
|
||||
{
|
||||
"expression": "sort(array)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sort(abc)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sort(empty_list)",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "sort(@)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "not_null(unknown_key, str)",
|
||||
"result": "Str"
|
||||
},
|
||||
{
|
||||
"expression": "not_null(unknown_key, foo.bar, empty_list, str)",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "not_null(unknown_key, null_key, empty_list, str)",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "not_null(all, expressions, are_null)",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "not_null()",
|
||||
"error": "invalid-arity"
|
||||
},
|
||||
{
|
||||
"description": "function projection on single arg function",
|
||||
"expression": "numbers[].to_string(@)",
|
||||
"result": ["-1", "3", "4", "5"]
|
||||
},
|
||||
{
|
||||
"description": "function projection on single arg function",
|
||||
"expression": "array[].to_number(@)",
|
||||
"result": [-1, 3, 4, 5, 100]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given":
|
||||
{
|
||||
"foo": [
|
||||
{"b": "b", "a": "a"},
|
||||
{"c": "c", "b": "b"},
|
||||
{"d": "d", "c": "c"},
|
||||
{"e": "e", "d": "d"},
|
||||
{"f": "f", "e": "e"}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"description": "function projection on variadic function",
|
||||
"expression": "foo[].not_null(f, e, d, c, b, a)",
|
||||
"result": ["b", "c", "d", "e", "f"]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given":
|
||||
{
|
||||
"people": [
|
||||
{"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"},
|
||||
{"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"},
|
||||
{"age": 30, "age_str": "30", "bool": true, "name": "c"},
|
||||
{"age": 50, "age_str": "50", "bool": false, "name": "d"},
|
||||
{"age": 10, "age_str": "10", "bool": true, "name": 3}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"description": "sort by field expression",
|
||||
"expression": "sort_by(people, &age)",
|
||||
"result": [
|
||||
{"age": 10, "age_str": "10", "bool": true, "name": 3},
|
||||
{"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"},
|
||||
{"age": 30, "age_str": "30", "bool": true, "name": "c"},
|
||||
{"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"},
|
||||
{"age": 50, "age_str": "50", "bool": false, "name": "d"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"expression": "sort_by(people, &age_str)",
|
||||
"result": [
|
||||
{"age": 10, "age_str": "10", "bool": true, "name": 3},
|
||||
{"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"},
|
||||
{"age": 30, "age_str": "30", "bool": true, "name": "c"},
|
||||
{"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"},
|
||||
{"age": 50, "age_str": "50", "bool": false, "name": "d"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "sort by function expression",
|
||||
"expression": "sort_by(people, &to_number(age_str))",
|
||||
"result": [
|
||||
{"age": 10, "age_str": "10", "bool": true, "name": 3},
|
||||
{"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"},
|
||||
{"age": 30, "age_str": "30", "bool": true, "name": "c"},
|
||||
{"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"},
|
||||
{"age": 50, "age_str": "50", "bool": false, "name": "d"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "function projection on sort_by function",
|
||||
"expression": "sort_by(people, &age)[].name",
|
||||
"result": [3, "a", "c", "b", "d"]
|
||||
},
|
||||
{
|
||||
"expression": "sort_by(people, &extra)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sort_by(people, &bool)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sort_by(people, &name)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sort_by(people, name)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "sort_by(people, &age)[].extra",
|
||||
"result": ["foo", "bar"]
|
||||
},
|
||||
{
|
||||
"expression": "sort_by(`[]`, &age)",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "max_by(people, &age)",
|
||||
"result": {"age": 50, "age_str": "50", "bool": false, "name": "d"}
|
||||
},
|
||||
{
|
||||
"expression": "max_by(people, &age_str)",
|
||||
"result": {"age": 50, "age_str": "50", "bool": false, "name": "d"}
|
||||
},
|
||||
{
|
||||
"expression": "max_by(people, &bool)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "max_by(people, &extra)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "max_by(people, &to_number(age_str))",
|
||||
"result": {"age": 50, "age_str": "50", "bool": false, "name": "d"}
|
||||
},
|
||||
{
|
||||
"expression": "min_by(people, &age)",
|
||||
"result": {"age": 10, "age_str": "10", "bool": true, "name": 3}
|
||||
},
|
||||
{
|
||||
"expression": "min_by(people, &age_str)",
|
||||
"result": {"age": 10, "age_str": "10", "bool": true, "name": 3}
|
||||
},
|
||||
{
|
||||
"expression": "min_by(people, &bool)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "min_by(people, &extra)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "min_by(people, &to_number(age_str))",
|
||||
"result": {"age": 10, "age_str": "10", "bool": true, "name": 3}
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given":
|
||||
{
|
||||
"people": [
|
||||
{"age": 10, "order": "1"},
|
||||
{"age": 10, "order": "2"},
|
||||
{"age": 10, "order": "3"},
|
||||
{"age": 10, "order": "4"},
|
||||
{"age": 10, "order": "5"},
|
||||
{"age": 10, "order": "6"},
|
||||
{"age": 10, "order": "7"},
|
||||
{"age": 10, "order": "8"},
|
||||
{"age": 10, "order": "9"},
|
||||
{"age": 10, "order": "10"},
|
||||
{"age": 10, "order": "11"}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"description": "stable sort order",
|
||||
"expression": "sort_by(people, &age)",
|
||||
"result": [
|
||||
{"age": 10, "order": "1"},
|
||||
{"age": 10, "order": "2"},
|
||||
{"age": 10, "order": "3"},
|
||||
{"age": 10, "order": "4"},
|
||||
{"age": 10, "order": "5"},
|
||||
{"age": 10, "order": "6"},
|
||||
{"age": 10, "order": "7"},
|
||||
{"age": 10, "order": "8"},
|
||||
{"age": 10, "order": "9"},
|
||||
{"age": 10, "order": "10"},
|
||||
{"age": 10, "order": "11"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given":
|
||||
{
|
||||
"people": [
|
||||
{"a": 10, "b": 1, "c": "z"},
|
||||
{"a": 10, "b": 2, "c": null},
|
||||
{"a": 10, "b": 3},
|
||||
{"a": 10, "b": 4, "c": "z"},
|
||||
{"a": 10, "b": 5, "c": null},
|
||||
{"a": 10, "b": 6},
|
||||
{"a": 10, "b": 7, "c": "z"},
|
||||
{"a": 10, "b": 8, "c": null},
|
||||
{"a": 10, "b": 9}
|
||||
],
|
||||
"empty": []
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "map(&a, people)",
|
||||
"result": [10, 10, 10, 10, 10, 10, 10, 10, 10]
|
||||
},
|
||||
{
|
||||
"expression": "map(&c, people)",
|
||||
"result": ["z", null, null, "z", null, null, "z", null, null]
|
||||
},
|
||||
{
|
||||
"expression": "map(&a, badkey)",
|
||||
"error": "invalid-type"
|
||||
},
|
||||
{
|
||||
"expression": "map(&foo, empty)",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"array": [
|
||||
{
|
||||
"foo": {"bar": "yes1"}
|
||||
},
|
||||
{
|
||||
"foo": {"bar": "yes2"}
|
||||
},
|
||||
{
|
||||
"foo1": {"bar": "no"}
|
||||
}
|
||||
]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "map(&foo.bar, array)",
|
||||
"result": ["yes1", "yes2", null]
|
||||
},
|
||||
{
|
||||
"expression": "map(&foo1.bar, array)",
|
||||
"result": [null, null, "no"]
|
||||
},
|
||||
{
|
||||
"expression": "map(&foo.bar.baz, array)",
|
||||
"result": [null, null, null]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"array": [[1, 2, 3, [4]], [5, 6, 7, [8, 9]]]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "map(&[], array)",
|
||||
"result": [[1, 2, 3, 4], [5, 6, 7, 8, 9]]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
1377
vendor/github.com/jmespath/go-jmespath/compliance/identifiers.json
generated
vendored
Normal file
1377
vendor/github.com/jmespath/go-jmespath/compliance/identifiers.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
346
vendor/github.com/jmespath/go-jmespath/compliance/indices.json
generated
vendored
Normal file
346
vendor/github.com/jmespath/go-jmespath/compliance/indices.json
generated
vendored
Normal file
|
@ -0,0 +1,346 @@
|
|||
[{
|
||||
"given":
|
||||
{"foo": {"bar": ["zero", "one", "two"]}},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.bar[0]",
|
||||
"result": "zero"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[1]",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[2]",
|
||||
"result": "two"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[3]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[-1]",
|
||||
"result": "two"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[-2]",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[-3]",
|
||||
"result": "zero"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[-4]",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given":
|
||||
{"foo": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.bar",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[0].bar",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "foo[1].bar",
|
||||
"result": "two"
|
||||
},
|
||||
{
|
||||
"expression": "foo[2].bar",
|
||||
"result": "three"
|
||||
},
|
||||
{
|
||||
"expression": "foo[3].notbar",
|
||||
"result": "four"
|
||||
},
|
||||
{
|
||||
"expression": "foo[3].bar",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[0]",
|
||||
"result": {"bar": "one"}
|
||||
},
|
||||
{
|
||||
"expression": "foo[1]",
|
||||
"result": {"bar": "two"}
|
||||
},
|
||||
{
|
||||
"expression": "foo[2]",
|
||||
"result": {"bar": "three"}
|
||||
},
|
||||
{
|
||||
"expression": "foo[3]",
|
||||
"result": {"notbar": "four"}
|
||||
},
|
||||
{
|
||||
"expression": "foo[4]",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": [
|
||||
"one", "two", "three"
|
||||
],
|
||||
"cases": [
|
||||
{
|
||||
"expression": "[0]",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "[1]",
|
||||
"result": "two"
|
||||
},
|
||||
{
|
||||
"expression": "[2]",
|
||||
"result": "three"
|
||||
},
|
||||
{
|
||||
"expression": "[-1]",
|
||||
"result": "three"
|
||||
},
|
||||
{
|
||||
"expression": "[-2]",
|
||||
"result": "two"
|
||||
},
|
||||
{
|
||||
"expression": "[-3]",
|
||||
"result": "one"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"reservations": [
|
||||
{"instances": [{"foo": 1}, {"foo": 2}]}
|
||||
]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "reservations[].instances[].foo",
|
||||
"result": [1, 2]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].bar",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].notinstances[].foo",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].notinstances[].foo",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"reservations": [{
|
||||
"instances": [
|
||||
{"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]},
|
||||
{"foo": [{"bar": 5}, {"bar": 6}, {"notbar": [7]}, {"bar": 8}]},
|
||||
{"foo": "bar"},
|
||||
{"notfoo": [{"bar": 20}, {"bar": 21}, {"notbar": [7]}, {"bar": 22}]},
|
||||
{"bar": [{"baz": [1]}, {"baz": [2]}, {"baz": [3]}, {"baz": [4]}]},
|
||||
{"baz": [{"baz": [1, 2]}, {"baz": []}, {"baz": []}, {"baz": [3, 4]}]},
|
||||
{"qux": [{"baz": []}, {"baz": [1, 2, 3]}, {"baz": [4]}, {"baz": []}]}
|
||||
],
|
||||
"otherkey": {"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]}
|
||||
}, {
|
||||
"instances": [
|
||||
{"a": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]},
|
||||
{"b": [{"bar": 5}, {"bar": 6}, {"notbar": [7]}, {"bar": 8}]},
|
||||
{"c": "bar"},
|
||||
{"notfoo": [{"bar": 23}, {"bar": 24}, {"notbar": [7]}, {"bar": 25}]},
|
||||
{"qux": [{"baz": []}, {"baz": [1, 2, 3]}, {"baz": [4]}, {"baz": []}]}
|
||||
],
|
||||
"otherkey": {"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]}
|
||||
}
|
||||
]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "reservations[].instances[].foo[].bar",
|
||||
"result": [1, 2, 4, 5, 6, 8]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].foo[].baz",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].notfoo[].bar",
|
||||
"result": [20, 21, 22, 23, 24, 25]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].notfoo[].notbar",
|
||||
"result": [[7], [7]]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].notinstances[].foo",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].foo[].notbar",
|
||||
"result": [3, [7]]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].bar[].baz",
|
||||
"result": [[1], [2], [3], [4]]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].baz[].baz",
|
||||
"result": [[1, 2], [], [], [3, 4]]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].qux[].baz",
|
||||
"result": [[], [1, 2, 3], [4], [], [], [1, 2, 3], [4], []]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].qux[].baz[]",
|
||||
"result": [1, 2, 3, 4, 1, 2, 3, 4]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [
|
||||
[["one", "two"], ["three", "four"]],
|
||||
[["five", "six"], ["seven", "eight"]],
|
||||
[["nine"], ["ten"]]
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[]",
|
||||
"result": [["one", "two"], ["three", "four"], ["five", "six"],
|
||||
["seven", "eight"], ["nine"], ["ten"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo[][0]",
|
||||
"result": ["one", "three", "five", "seven", "nine", "ten"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[][1]",
|
||||
"result": ["two", "four", "six", "eight"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[][0][0]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "foo[][2][2]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "foo[][0][0][100]",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [{
|
||||
"bar": [
|
||||
{
|
||||
"qux": 2,
|
||||
"baz": 1
|
||||
},
|
||||
{
|
||||
"qux": 4,
|
||||
"baz": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"bar": [
|
||||
{
|
||||
"qux": 6,
|
||||
"baz": 5
|
||||
},
|
||||
{
|
||||
"qux": 8,
|
||||
"baz": 7
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo",
|
||||
"result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]},
|
||||
{"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[]",
|
||||
"result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]},
|
||||
{"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[].bar",
|
||||
"result": [[{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}],
|
||||
[{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]]
|
||||
},
|
||||
{
|
||||
"expression": "foo[].bar[]",
|
||||
"result": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3},
|
||||
{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[].bar[].baz",
|
||||
"result": [1, 3, 5, 7]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"string": "string",
|
||||
"hash": {"foo": "bar", "bar": "baz"},
|
||||
"number": 23,
|
||||
"nullvalue": null
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "string[]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "hash[]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "number[]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "nullvalue[]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "string[].foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "hash[].foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "number[].foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "nullvalue[].foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "nullvalue[].foo[].bar",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
185
vendor/github.com/jmespath/go-jmespath/compliance/literal.json
generated
vendored
Normal file
185
vendor/github.com/jmespath/go-jmespath/compliance/literal.json
generated
vendored
Normal file
|
@ -0,0 +1,185 @@
|
|||
[
|
||||
{
|
||||
"given": {
|
||||
"foo": [{"name": "a"}, {"name": "b"}],
|
||||
"bar": {"baz": "qux"}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "`\"foo\"`",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"comment": "Interpret escaped unicode.",
|
||||
"expression": "`\"\\u03a6\"`",
|
||||
"result": "Φ"
|
||||
},
|
||||
{
|
||||
"expression": "`\"✓\"`",
|
||||
"result": "✓"
|
||||
},
|
||||
{
|
||||
"expression": "`[1, 2, 3]`",
|
||||
"result": [1, 2, 3]
|
||||
},
|
||||
{
|
||||
"expression": "`{\"a\": \"b\"}`",
|
||||
"result": {"a": "b"}
|
||||
},
|
||||
{
|
||||
"expression": "`true`",
|
||||
"result": true
|
||||
},
|
||||
{
|
||||
"expression": "`false`",
|
||||
"result": false
|
||||
},
|
||||
{
|
||||
"expression": "`null`",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "`0`",
|
||||
"result": 0
|
||||
},
|
||||
{
|
||||
"expression": "`1`",
|
||||
"result": 1
|
||||
},
|
||||
{
|
||||
"expression": "`2`",
|
||||
"result": 2
|
||||
},
|
||||
{
|
||||
"expression": "`3`",
|
||||
"result": 3
|
||||
},
|
||||
{
|
||||
"expression": "`4`",
|
||||
"result": 4
|
||||
},
|
||||
{
|
||||
"expression": "`5`",
|
||||
"result": 5
|
||||
},
|
||||
{
|
||||
"expression": "`6`",
|
||||
"result": 6
|
||||
},
|
||||
{
|
||||
"expression": "`7`",
|
||||
"result": 7
|
||||
},
|
||||
{
|
||||
"expression": "`8`",
|
||||
"result": 8
|
||||
},
|
||||
{
|
||||
"expression": "`9`",
|
||||
"result": 9
|
||||
},
|
||||
{
|
||||
"comment": "Escaping a backtick in quotes",
|
||||
"expression": "`\"foo\\`bar\"`",
|
||||
"result": "foo`bar"
|
||||
},
|
||||
{
|
||||
"comment": "Double quote in literal",
|
||||
"expression": "`\"foo\\\"bar\"`",
|
||||
"result": "foo\"bar"
|
||||
},
|
||||
{
|
||||
"expression": "`\"1\\`\"`",
|
||||
"result": "1`"
|
||||
},
|
||||
{
|
||||
"comment": "Multiple literal expressions with escapes",
|
||||
"expression": "`\"\\\\\"`.{a:`\"b\"`}",
|
||||
"result": {"a": "b"}
|
||||
},
|
||||
{
|
||||
"comment": "literal . identifier",
|
||||
"expression": "`{\"a\": \"b\"}`.a",
|
||||
"result": "b"
|
||||
},
|
||||
{
|
||||
"comment": "literal . identifier . identifier",
|
||||
"expression": "`{\"a\": {\"b\": \"c\"}}`.a.b",
|
||||
"result": "c"
|
||||
},
|
||||
{
|
||||
"comment": "literal . identifier bracket-expr",
|
||||
"expression": "`[0, 1, 2]`[1]",
|
||||
"result": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Literals",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Literal with leading whitespace",
|
||||
"expression": "` {\"foo\": true}`",
|
||||
"result": {"foo": true}
|
||||
},
|
||||
{
|
||||
"comment": "Literal with trailing whitespace",
|
||||
"expression": "`{\"foo\": true} `",
|
||||
"result": {"foo": true}
|
||||
},
|
||||
{
|
||||
"comment": "Literal on RHS of subexpr not allowed",
|
||||
"expression": "foo.`\"bar\"`",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Raw String Literals",
|
||||
"given": {},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "'foo'",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "' foo '",
|
||||
"result": " foo "
|
||||
},
|
||||
{
|
||||
"expression": "'0'",
|
||||
"result": "0"
|
||||
},
|
||||
{
|
||||
"expression": "'newline\n'",
|
||||
"result": "newline\n"
|
||||
},
|
||||
{
|
||||
"expression": "'\n'",
|
||||
"result": "\n"
|
||||
},
|
||||
{
|
||||
"expression": "'✓'",
|
||||
"result": "✓"
|
||||
},
|
||||
{
|
||||
"expression": "'𝄞'",
|
||||
"result": "𝄞"
|
||||
},
|
||||
{
|
||||
"expression": "' [foo] '",
|
||||
"result": " [foo] "
|
||||
},
|
||||
{
|
||||
"expression": "'[foo]'",
|
||||
"result": "[foo]"
|
||||
},
|
||||
{
|
||||
"comment": "Do not interpret escaped unicode.",
|
||||
"expression": "'\\u03a6'",
|
||||
"result": "\\u03a6"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
393
vendor/github.com/jmespath/go-jmespath/compliance/multiselect.json
generated
vendored
Normal file
393
vendor/github.com/jmespath/go-jmespath/compliance/multiselect.json
generated
vendored
Normal file
|
@ -0,0 +1,393 @@
|
|||
[{
|
||||
"given": {
|
||||
"foo": {
|
||||
"bar": "bar",
|
||||
"baz": "baz",
|
||||
"qux": "qux",
|
||||
"nested": {
|
||||
"one": {
|
||||
"a": "first",
|
||||
"b": "second",
|
||||
"c": "third"
|
||||
},
|
||||
"two": {
|
||||
"a": "first",
|
||||
"b": "second",
|
||||
"c": "third"
|
||||
},
|
||||
"three": {
|
||||
"a": "first",
|
||||
"b": "second",
|
||||
"c": {"inner": "third"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"bar": 1,
|
||||
"baz": 2,
|
||||
"qux\"": 3
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.{bar: bar}",
|
||||
"result": {"bar": "bar"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{\"bar\": bar}",
|
||||
"result": {"bar": "bar"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{\"foo.bar\": bar}",
|
||||
"result": {"foo.bar": "bar"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{bar: bar, baz: baz}",
|
||||
"result": {"bar": "bar", "baz": "baz"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{\"bar\": bar, \"baz\": baz}",
|
||||
"result": {"bar": "bar", "baz": "baz"}
|
||||
},
|
||||
{
|
||||
"expression": "{\"baz\": baz, \"qux\\\"\": \"qux\\\"\"}",
|
||||
"result": {"baz": 2, "qux\"": 3}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{bar:bar,baz:baz}",
|
||||
"result": {"bar": "bar", "baz": "baz"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{bar: bar,qux: qux}",
|
||||
"result": {"bar": "bar", "qux": "qux"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{bar: bar, noexist: noexist}",
|
||||
"result": {"bar": "bar", "noexist": null}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{noexist: noexist, alsonoexist: alsonoexist}",
|
||||
"result": {"noexist": null, "alsonoexist": null}
|
||||
},
|
||||
{
|
||||
"expression": "foo.badkey.{nokey: nokey, alsonokey: alsonokey}",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo.nested.*.{a: a,b: b}",
|
||||
"result": [{"a": "first", "b": "second"},
|
||||
{"a": "first", "b": "second"},
|
||||
{"a": "first", "b": "second"}]
|
||||
},
|
||||
{
|
||||
"expression": "foo.nested.three.{a: a, cinner: c.inner}",
|
||||
"result": {"a": "first", "cinner": "third"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.nested.three.{a: a, c: c.inner.bad.key}",
|
||||
"result": {"a": "first", "c": null}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{a: nested.one.a, b: nested.two.b}",
|
||||
"result": {"a": "first", "b": "second"}
|
||||
},
|
||||
{
|
||||
"expression": "{bar: bar, baz: baz}",
|
||||
"result": {"bar": 1, "baz": 2}
|
||||
},
|
||||
{
|
||||
"expression": "{bar: bar}",
|
||||
"result": {"bar": 1}
|
||||
},
|
||||
{
|
||||
"expression": "{otherkey: bar}",
|
||||
"result": {"otherkey": 1}
|
||||
},
|
||||
{
|
||||
"expression": "{no: no, exist: exist}",
|
||||
"result": {"no": null, "exist": null}
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar]",
|
||||
"result": ["bar"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar,baz]",
|
||||
"result": ["bar", "baz"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar,qux]",
|
||||
"result": ["bar", "qux"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar,noexist]",
|
||||
"result": ["bar", null]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[noexist,alsonoexist]",
|
||||
"result": [null, null]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"foo": {"bar": 1, "baz": [2, 3, 4]}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.{bar:bar,baz:baz}",
|
||||
"result": {"bar": 1, "baz": [2, 3, 4]}
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar,baz[0]]",
|
||||
"result": [1, 2]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar,baz[1]]",
|
||||
"result": [1, 3]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar,baz[2]]",
|
||||
"result": [1, 4]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar,baz[3]]",
|
||||
"result": [1, null]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar[0],baz[3]]",
|
||||
"result": [null, null]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"foo": {"bar": 1, "baz": 2}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.{bar: bar, baz: baz}",
|
||||
"result": {"bar": 1, "baz": 2}
|
||||
},
|
||||
{
|
||||
"expression": "foo.[bar,baz]",
|
||||
"result": [1, 2]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"foo": {
|
||||
"bar": {"baz": [{"common": "first", "one": 1},
|
||||
{"common": "second", "two": 2}]},
|
||||
"ignoreme": 1,
|
||||
"includeme": true
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.{bar: bar.baz[1],includeme: includeme}",
|
||||
"result": {"bar": {"common": "second", "two": 2}, "includeme": true}
|
||||
},
|
||||
{
|
||||
"expression": "foo.{\"bar.baz.two\": bar.baz[1].two, includeme: includeme}",
|
||||
"result": {"bar.baz.two": 2, "includeme": true}
|
||||
},
|
||||
{
|
||||
"expression": "foo.[includeme, bar.baz[*].common]",
|
||||
"result": [true, ["first", "second"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[includeme, bar.baz[*].none]",
|
||||
"result": [true, []]
|
||||
},
|
||||
{
|
||||
"expression": "foo.[includeme, bar.baz[].common]",
|
||||
"result": [true, ["first", "second"]]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"reservations": [{
|
||||
"instances": [
|
||||
{"id": "id1",
|
||||
"name": "first"},
|
||||
{"id": "id2",
|
||||
"name": "second"}
|
||||
]}, {
|
||||
"instances": [
|
||||
{"id": "id3",
|
||||
"name": "third"},
|
||||
{"id": "id4",
|
||||
"name": "fourth"}
|
||||
]}
|
||||
]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "reservations[*].instances[*].{id: id, name: name}",
|
||||
"result": [[{"id": "id1", "name": "first"}, {"id": "id2", "name": "second"}],
|
||||
[{"id": "id3", "name": "third"}, {"id": "id4", "name": "fourth"}]]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].{id: id, name: name}",
|
||||
"result": [{"id": "id1", "name": "first"},
|
||||
{"id": "id2", "name": "second"},
|
||||
{"id": "id3", "name": "third"},
|
||||
{"id": "id4", "name": "fourth"}]
|
||||
},
|
||||
{
|
||||
"expression": "reservations[].instances[].[id, name]",
|
||||
"result": [["id1", "first"],
|
||||
["id2", "second"],
|
||||
["id3", "third"],
|
||||
["id4", "fourth"]]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [{
|
||||
"bar": [
|
||||
{
|
||||
"qux": 2,
|
||||
"baz": 1
|
||||
},
|
||||
{
|
||||
"qux": 4,
|
||||
"baz": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"bar": [
|
||||
{
|
||||
"qux": 6,
|
||||
"baz": 5
|
||||
},
|
||||
{
|
||||
"qux": 8,
|
||||
"baz": 7
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo",
|
||||
"result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]},
|
||||
{"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[]",
|
||||
"result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]},
|
||||
{"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[].bar",
|
||||
"result": [[{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}],
|
||||
[{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]]
|
||||
},
|
||||
{
|
||||
"expression": "foo[].bar[]",
|
||||
"result": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3},
|
||||
{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]
|
||||
},
|
||||
{
|
||||
"expression": "foo[].bar[].[baz, qux]",
|
||||
"result": [[1, 2], [3, 4], [5, 6], [7, 8]]
|
||||
},
|
||||
{
|
||||
"expression": "foo[].bar[].[baz]",
|
||||
"result": [[1], [3], [5], [7]]
|
||||
},
|
||||
{
|
||||
"expression": "foo[].bar[].[baz, qux][]",
|
||||
"result": [1, 2, 3, 4, 5, 6, 7, 8]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": {
|
||||
"baz": [
|
||||
{
|
||||
"bar": "abc"
|
||||
}, {
|
||||
"bar": "def"
|
||||
}
|
||||
],
|
||||
"qux": ["zero"]
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.[baz[*].bar, qux[0]]",
|
||||
"result": [["abc", "def"], "zero"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": {
|
||||
"baz": [
|
||||
{
|
||||
"bar": "a",
|
||||
"bam": "b",
|
||||
"boo": "c"
|
||||
}, {
|
||||
"bar": "d",
|
||||
"bam": "e",
|
||||
"boo": "f"
|
||||
}
|
||||
],
|
||||
"qux": ["zero"]
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.[baz[*].[bar, boo], qux[0]]",
|
||||
"result": [[["a", "c" ], ["d", "f" ]], "zero"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": {
|
||||
"baz": [
|
||||
{
|
||||
"bar": "a",
|
||||
"bam": "b",
|
||||
"boo": "c"
|
||||
}, {
|
||||
"bar": "d",
|
||||
"bam": "e",
|
||||
"boo": "f"
|
||||
}
|
||||
],
|
||||
"qux": ["zero"]
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.[baz[*].not_there || baz[*].bar, qux[0]]",
|
||||
"result": [["a", "d"], "zero"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Nested multiselect",
|
||||
"expression": "[[*],*]",
|
||||
"result": [null, ["object"]]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": [],
|
||||
"cases": [
|
||||
{
|
||||
"comment": "Nested multiselect",
|
||||
"expression": "[[*]]",
|
||||
"result": [[]]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
59
vendor/github.com/jmespath/go-jmespath/compliance/ormatch.json
generated
vendored
Normal file
59
vendor/github.com/jmespath/go-jmespath/compliance/ormatch.json
generated
vendored
Normal file
|
@ -0,0 +1,59 @@
|
|||
[{
|
||||
"given":
|
||||
{"outer": {"foo": "foo", "bar": "bar", "baz": "baz"}},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "outer.foo || outer.bar",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.foo||outer.bar",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bar || outer.baz",
|
||||
"result": "bar"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bar||outer.baz",
|
||||
"result": "bar"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bad || outer.foo",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bad||outer.foo",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.foo || outer.bad",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.foo||outer.bad",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.bad || outer.alsobad",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "outer.bad||outer.alsobad",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given":
|
||||
{"outer": {"foo": "foo", "bool": false, "empty_list": [], "empty_string": ""}},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "outer.empty_string || outer.foo",
|
||||
"result": "foo"
|
||||
},
|
||||
{
|
||||
"expression": "outer.nokey || outer.bool || outer.empty_list || outer.empty_string || outer.foo",
|
||||
"result": "foo"
|
||||
}
|
||||
]
|
||||
}]
|
131
vendor/github.com/jmespath/go-jmespath/compliance/pipe.json
generated
vendored
Normal file
131
vendor/github.com/jmespath/go-jmespath/compliance/pipe.json
generated
vendored
Normal file
|
@ -0,0 +1,131 @@
|
|||
[{
|
||||
"given": {
|
||||
"foo": {
|
||||
"bar": {
|
||||
"baz": "subkey"
|
||||
},
|
||||
"other": {
|
||||
"baz": "subkey"
|
||||
},
|
||||
"other2": {
|
||||
"baz": "subkey"
|
||||
},
|
||||
"other3": {
|
||||
"notbaz": ["a", "b", "c"]
|
||||
},
|
||||
"other4": {
|
||||
"notbaz": ["a", "b", "c"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.*.baz | [0]",
|
||||
"result": "subkey"
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.baz | [1]",
|
||||
"result": "subkey"
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.baz | [2]",
|
||||
"result": "subkey"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar.* | [0]",
|
||||
"result": "subkey"
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.notbaz | [*]",
|
||||
"result": [["a", "b", "c"], ["a", "b", "c"]]
|
||||
},
|
||||
{
|
||||
"expression": "{\"a\": foo.bar, \"b\": foo.other} | *.baz",
|
||||
"result": ["subkey", "subkey"]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"foo": {
|
||||
"bar": {
|
||||
"baz": "one"
|
||||
},
|
||||
"other": {
|
||||
"baz": "two"
|
||||
},
|
||||
"other2": {
|
||||
"baz": "three"
|
||||
},
|
||||
"other3": {
|
||||
"notbaz": ["a", "b", "c"]
|
||||
},
|
||||
"other4": {
|
||||
"notbaz": ["d", "e", "f"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo | bar",
|
||||
"result": {"baz": "one"}
|
||||
},
|
||||
{
|
||||
"expression": "foo | bar | baz",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "foo|bar| baz",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "not_there | [0]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "not_there | [0]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "[foo.bar, foo.other] | [0]",
|
||||
"result": {"baz": "one"}
|
||||
},
|
||||
{
|
||||
"expression": "{\"a\": foo.bar, \"b\": foo.other} | a",
|
||||
"result": {"baz": "one"}
|
||||
},
|
||||
{
|
||||
"expression": "{\"a\": foo.bar, \"b\": foo.other} | b",
|
||||
"result": {"baz": "two"}
|
||||
},
|
||||
{
|
||||
"expression": "foo.bam || foo.bar | baz",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "foo | not_there || bar",
|
||||
"result": {"baz": "one"}
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"foo": [{
|
||||
"bar": [{
|
||||
"baz": "one"
|
||||
}, {
|
||||
"baz": "two"
|
||||
}]
|
||||
}, {
|
||||
"bar": [{
|
||||
"baz": "three"
|
||||
}, {
|
||||
"baz": "four"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[*].bar[*] | [0][0]",
|
||||
"result": {"baz": "one"}
|
||||
}
|
||||
]
|
||||
}]
|
187
vendor/github.com/jmespath/go-jmespath/compliance/slice.json
generated
vendored
Normal file
187
vendor/github.com/jmespath/go-jmespath/compliance/slice.json
generated
vendored
Normal file
|
@ -0,0 +1,187 @@
|
|||
[{
|
||||
"given": {
|
||||
"foo": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
||||
"bar": {
|
||||
"baz": 1
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "bar[0:10]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[0:10:1]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[0:10]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[0:10:]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[0::1]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[0::]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[0:]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[:10:1]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[::1]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[:10:]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[::]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[:]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[1:9]",
|
||||
"result": [1, 2, 3, 4, 5, 6, 7, 8]
|
||||
},
|
||||
{
|
||||
"expression": "foo[0:10:2]",
|
||||
"result": [0, 2, 4, 6, 8]
|
||||
},
|
||||
{
|
||||
"expression": "foo[5:]",
|
||||
"result": [5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[5::2]",
|
||||
"result": [5, 7, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[::2]",
|
||||
"result": [0, 2, 4, 6, 8]
|
||||
},
|
||||
{
|
||||
"expression": "foo[::-1]",
|
||||
"result": [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
|
||||
},
|
||||
{
|
||||
"expression": "foo[1::2]",
|
||||
"result": [1, 3, 5, 7, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[10:0:-1]",
|
||||
"result": [9, 8, 7, 6, 5, 4, 3, 2, 1]
|
||||
},
|
||||
{
|
||||
"expression": "foo[10:5:-1]",
|
||||
"result": [9, 8, 7, 6]
|
||||
},
|
||||
{
|
||||
"expression": "foo[8:2:-2]",
|
||||
"result": [8, 6, 4]
|
||||
},
|
||||
{
|
||||
"expression": "foo[0:20]",
|
||||
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
},
|
||||
{
|
||||
"expression": "foo[10:-20:-1]",
|
||||
"result": [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
|
||||
},
|
||||
{
|
||||
"expression": "foo[10:-20]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "foo[-4:-1]",
|
||||
"result": [6, 7, 8]
|
||||
},
|
||||
{
|
||||
"expression": "foo[:-5:-1]",
|
||||
"result": [9, 8, 7, 6]
|
||||
},
|
||||
{
|
||||
"expression": "foo[8:2:0]",
|
||||
"error": "invalid-value"
|
||||
},
|
||||
{
|
||||
"expression": "foo[8:2:0:1]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[8:2&]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[2:a:3]",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"foo": [{"a": 1}, {"a": 2}, {"a": 3}],
|
||||
"bar": [{"a": {"b": 1}}, {"a": {"b": 2}},
|
||||
{"a": {"b": 3}}],
|
||||
"baz": 50
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[:2].a",
|
||||
"result": [1, 2]
|
||||
},
|
||||
{
|
||||
"expression": "foo[:2].b",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "foo[:2].a.b",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "bar[::-1].a.b",
|
||||
"result": [3, 2, 1]
|
||||
},
|
||||
{
|
||||
"expression": "bar[:2].a.b",
|
||||
"result": [1, 2]
|
||||
},
|
||||
{
|
||||
"expression": "baz[:2].a",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": [{"a": 1}, {"a": 2}, {"a": 3}],
|
||||
"cases": [
|
||||
{
|
||||
"expression": "[:]",
|
||||
"result": [{"a": 1}, {"a": 2}, {"a": 3}]
|
||||
},
|
||||
{
|
||||
"expression": "[:2].a",
|
||||
"result": [1, 2]
|
||||
},
|
||||
{
|
||||
"expression": "[::-1].a",
|
||||
"result": [3, 2, 1]
|
||||
},
|
||||
{
|
||||
"expression": "[:2].b",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
}]
|
616
vendor/github.com/jmespath/go-jmespath/compliance/syntax.json
generated
vendored
Normal file
616
vendor/github.com/jmespath/go-jmespath/compliance/syntax.json
generated
vendored
Normal file
|
@ -0,0 +1,616 @@
|
|||
[{
|
||||
"comment": "Dot syntax",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.bar",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo.1",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo.-11",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo.",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo.",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": ".foo",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo..bar",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar.",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[.]",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Simple token errors",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": ".",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": ":",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": ",",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "[",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "{",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": ")",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "(",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "((&",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "a[",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "a]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "a][",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "!",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Boolean syntax errors",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "![!(!",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Wildcard syntax",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "*",
|
||||
"result": ["object"]
|
||||
},
|
||||
{
|
||||
"expression": "*.*",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "*.foo",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "*[0]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": ".*",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "*foo",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "*0",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[*]bar",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[*]*",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Flatten syntax",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "[]",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Simple bracket syntax",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "[0]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "[*]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "*.[0]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "*.[\"0\"]",
|
||||
"result": [[null]]
|
||||
},
|
||||
{
|
||||
"expression": "[*].bar",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "[*][0]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[#]",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select list syntax",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[0]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Valid multi-select of a list",
|
||||
"expression": "foo[0, 1]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo.[0]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo.[*]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a list with trailing comma",
|
||||
"expression": "foo[0, ]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a list with trailing comma and no close",
|
||||
"expression": "foo[0,",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a list with trailing comma and no close",
|
||||
"expression": "foo.[a",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a list with extra comma",
|
||||
"expression": "foo[0,, 1]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a list using an identifier index",
|
||||
"expression": "foo[abc]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a list using identifier indices",
|
||||
"expression": "foo[abc, def]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a list using an identifier index",
|
||||
"expression": "foo[abc, 1]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a list using an identifier index with trailing comma",
|
||||
"expression": "foo[abc, ]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Valid multi-select of a hash using an identifier index",
|
||||
"expression": "foo.[abc]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Valid multi-select of a hash",
|
||||
"expression": "foo.[abc, def]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a hash using a numeric index",
|
||||
"expression": "foo.[abc, 1]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a hash with a trailing comma",
|
||||
"expression": "foo.[abc, ]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a hash with extra commas",
|
||||
"expression": "foo.[abc,, def]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select of a hash using number indices",
|
||||
"expression": "foo.[0, 1]",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Multi-select hash syntax",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"comment": "No key or value",
|
||||
"expression": "a{}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "No closing token",
|
||||
"expression": "a{",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Not a key value pair",
|
||||
"expression": "a{foo}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing value and closing character",
|
||||
"expression": "a{foo:",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing closing character",
|
||||
"expression": "a{foo: 0",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing value",
|
||||
"expression": "a{foo:}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Trailing comma and no closing character",
|
||||
"expression": "a{foo: 0, ",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing value with trailing comma",
|
||||
"expression": "a{foo: ,}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Accessing Array using an identifier",
|
||||
"expression": "a{foo: bar}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "a{foo: 0}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing key-value pair",
|
||||
"expression": "a.{}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Not a key-value pair",
|
||||
"expression": "a.{foo}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing value",
|
||||
"expression": "a.{foo:}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing value with trailing comma",
|
||||
"expression": "a.{foo: ,}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Valid multi-select hash extraction",
|
||||
"expression": "a.{foo: bar}",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Valid multi-select hash extraction",
|
||||
"expression": "a.{foo: bar, baz: bam}",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Trailing comma",
|
||||
"expression": "a.{foo: bar, }",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing key in second key-value pair",
|
||||
"expression": "a.{foo: bar, baz}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Missing value in second key-value pair",
|
||||
"expression": "a.{foo: bar, baz:}",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Trailing comma",
|
||||
"expression": "a.{foo: bar, baz: bam, }",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Nested multi select",
|
||||
"expression": "{\"\\\\\":{\" \":*}}",
|
||||
"result": {"\\": {" ": ["object"]}}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Or expressions",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo || bar",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo ||",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo.|| bar",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": " || foo",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo || || foo",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo.[a || b]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo.[a ||]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "\"foo",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Filter expressions",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[?bar==`\"baz\"`]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[? bar == `\"baz\"` ]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[ ?bar==`\"baz\"`]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[?bar==]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[?==]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[?==bar]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[?bar==baz?]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[?a.b.c==d.e.f]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[?bar==`[0, 1, 2]`]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[?bar==`[\"a\", \"b\", \"c\"]`]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Literal char not escaped",
|
||||
"expression": "foo[?bar==`[\"foo`bar\"]`]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Literal char escaped",
|
||||
"expression": "foo[?bar==`[\"foo\\`bar\"]`]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Unknown comparator",
|
||||
"expression": "foo[?bar<>baz]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Unknown comparator",
|
||||
"expression": "foo[?bar^baz]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[bar==baz]",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Quoted identifier in filter expression no spaces",
|
||||
"expression": "[?\"\\\\\">`\"foo\"`]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"comment": "Quoted identifier in filter expression with spaces",
|
||||
"expression": "[?\"\\\\\" > `\"foo\"`]",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Filter expression errors",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "bar.`\"anything\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "bar.baz.noexists.`\"literal\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Literal wildcard projection",
|
||||
"expression": "foo[*].`\"literal\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[*].name.`\"literal\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[].name.`\"literal\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[].name.`\"literal\"`.`\"subliteral\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Projecting a literal onto an empty list",
|
||||
"expression": "foo[*].name.noexist.`\"literal\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "foo[].name.noexist.`\"literal\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"expression": "twolen[*].`\"foo\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Two level projection of a literal",
|
||||
"expression": "twolen[*].threelen[*].`\"bar\"`",
|
||||
"error": "syntax"
|
||||
},
|
||||
{
|
||||
"comment": "Two level flattened projection of a literal",
|
||||
"expression": "twolen[].threelen[].`\"bar\"`",
|
||||
"error": "syntax"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Identifiers",
|
||||
"given": {"type": "object"},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "\"foo\"",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "\"\\\\\"",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Combined syntax",
|
||||
"given": [],
|
||||
"cases": [
|
||||
{
|
||||
"expression": "*||*|*|*",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "*[]||[*]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "[*.*]",
|
||||
"result": [null]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
38
vendor/github.com/jmespath/go-jmespath/compliance/unicode.json
generated
vendored
Normal file
38
vendor/github.com/jmespath/go-jmespath/compliance/unicode.json
generated
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
[
|
||||
{
|
||||
"given": {"foo": [{"✓": "✓"}, {"✓": "✗"}]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[].\"✓\"",
|
||||
"result": ["✓", "✗"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"☯": true},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "\"☯\"",
|
||||
"result": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"♪♫•*¨*•.¸¸❤¸¸.•*¨*•♫♪": true},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "\"♪♫•*¨*•.¸¸❤¸¸.•*¨*•♫♪\"",
|
||||
"result": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {"☃": true},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "\"☃\"",
|
||||
"result": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
460
vendor/github.com/jmespath/go-jmespath/compliance/wildcard.json
generated
vendored
Normal file
460
vendor/github.com/jmespath/go-jmespath/compliance/wildcard.json
generated
vendored
Normal file
|
@ -0,0 +1,460 @@
|
|||
[{
|
||||
"given": {
|
||||
"foo": {
|
||||
"bar": {
|
||||
"baz": "val"
|
||||
},
|
||||
"other": {
|
||||
"baz": "val"
|
||||
},
|
||||
"other2": {
|
||||
"baz": "val"
|
||||
},
|
||||
"other3": {
|
||||
"notbaz": ["a", "b", "c"]
|
||||
},
|
||||
"other4": {
|
||||
"notbaz": ["a", "b", "c"]
|
||||
},
|
||||
"other5": {
|
||||
"other": {
|
||||
"a": 1,
|
||||
"b": 1,
|
||||
"c": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.*.baz",
|
||||
"result": ["val", "val", "val"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar.*",
|
||||
"result": ["val"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.notbaz",
|
||||
"result": [["a", "b", "c"], ["a", "b", "c"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.notbaz[0]",
|
||||
"result": ["a", "a"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.notbaz[-1]",
|
||||
"result": ["c", "c"]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"foo": {
|
||||
"first-1": {
|
||||
"second-1": "val"
|
||||
},
|
||||
"first-2": {
|
||||
"second-1": "val"
|
||||
},
|
||||
"first-3": {
|
||||
"second-1": "val"
|
||||
}
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.*",
|
||||
"result": [{"second-1": "val"}, {"second-1": "val"},
|
||||
{"second-1": "val"}]
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.*",
|
||||
"result": [["val"], ["val"], ["val"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.*.*",
|
||||
"result": [[], [], []]
|
||||
},
|
||||
{
|
||||
"expression": "foo.*.*.*.*",
|
||||
"result": [[], [], []]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"foo": {
|
||||
"bar": "one"
|
||||
},
|
||||
"other": {
|
||||
"bar": "one"
|
||||
},
|
||||
"nomatch": {
|
||||
"notbar": "three"
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "*.bar",
|
||||
"result": ["one", "one"]
|
||||
}
|
||||
]
|
||||
}, {
|
||||
"given": {
|
||||
"top1": {
|
||||
"sub1": {"foo": "one"}
|
||||
},
|
||||
"top2": {
|
||||
"sub1": {"foo": "one"}
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "*",
|
||||
"result": [{"sub1": {"foo": "one"}},
|
||||
{"sub1": {"foo": "one"}}]
|
||||
},
|
||||
{
|
||||
"expression": "*.sub1",
|
||||
"result": [{"foo": "one"},
|
||||
{"foo": "one"}]
|
||||
},
|
||||
{
|
||||
"expression": "*.*",
|
||||
"result": [[{"foo": "one"}],
|
||||
[{"foo": "one"}]]
|
||||
},
|
||||
{
|
||||
"expression": "*.*.foo[]",
|
||||
"result": ["one", "one"]
|
||||
},
|
||||
{
|
||||
"expression": "*.sub1.foo",
|
||||
"result": ["one", "one"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given":
|
||||
{"foo": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[*].bar",
|
||||
"result": ["one", "two", "three"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*].notbar",
|
||||
"result": ["four"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given":
|
||||
[{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}],
|
||||
"cases": [
|
||||
{
|
||||
"expression": "[*]",
|
||||
"result": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]
|
||||
},
|
||||
{
|
||||
"expression": "[*].bar",
|
||||
"result": ["one", "two", "three"]
|
||||
},
|
||||
{
|
||||
"expression": "[*].notbar",
|
||||
"result": ["four"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": {
|
||||
"bar": [
|
||||
{"baz": ["one", "two", "three"]},
|
||||
{"baz": ["four", "five", "six"]},
|
||||
{"baz": ["seven", "eight", "nine"]}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.bar[*].baz",
|
||||
"result": [["one", "two", "three"], ["four", "five", "six"], ["seven", "eight", "nine"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[*].baz[0]",
|
||||
"result": ["one", "four", "seven"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[*].baz[1]",
|
||||
"result": ["two", "five", "eight"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[*].baz[2]",
|
||||
"result": ["three", "six", "nine"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[*].baz[3]",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": {
|
||||
"bar": [["one", "two"], ["three", "four"]]
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo.bar[*]",
|
||||
"result": [["one", "two"], ["three", "four"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[0]",
|
||||
"result": ["one", "two"]
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[0][0]",
|
||||
"result": "one"
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[0][0][0]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo.bar[0][0][0][0]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "foo[0][0]",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [
|
||||
{"bar": [{"kind": "basic"}, {"kind": "intermediate"}]},
|
||||
{"bar": [{"kind": "advanced"}, {"kind": "expert"}]},
|
||||
{"bar": "string"}
|
||||
]
|
||||
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[*].bar[*].kind",
|
||||
"result": [["basic", "intermediate"], ["advanced", "expert"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*].bar[0].kind",
|
||||
"result": ["basic", "advanced"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [
|
||||
{"bar": {"kind": "basic"}},
|
||||
{"bar": {"kind": "intermediate"}},
|
||||
{"bar": {"kind": "advanced"}},
|
||||
{"bar": {"kind": "expert"}},
|
||||
{"bar": "string"}
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[*].bar.kind",
|
||||
"result": ["basic", "intermediate", "advanced", "expert"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [{"bar": ["one", "two"]}, {"bar": ["three", "four"]}, {"bar": ["five"]}]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[*].bar[0]",
|
||||
"result": ["one", "three", "five"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*].bar[1]",
|
||||
"result": ["two", "four"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*].bar[2]",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [{"bar": []}, {"bar": []}, {"bar": []}]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[*].bar[0]",
|
||||
"result": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [["one", "two"], ["three", "four"], ["five"]]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[*][0]",
|
||||
"result": ["one", "three", "five"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*][1]",
|
||||
"result": ["two", "four"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"foo": [
|
||||
[
|
||||
["one", "two"], ["three", "four"]
|
||||
], [
|
||||
["five", "six"], ["seven", "eight"]
|
||||
], [
|
||||
["nine"], ["ten"]
|
||||
]
|
||||
]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "foo[*][0]",
|
||||
"result": [["one", "two"], ["five", "six"], ["nine"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*][1]",
|
||||
"result": [["three", "four"], ["seven", "eight"], ["ten"]]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*][0][0]",
|
||||
"result": ["one", "five", "nine"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*][1][0]",
|
||||
"result": ["three", "seven", "ten"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*][0][1]",
|
||||
"result": ["two", "six"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*][1][1]",
|
||||
"result": ["four", "eight"]
|
||||
},
|
||||
{
|
||||
"expression": "foo[*][2]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "foo[*][2][2]",
|
||||
"result": []
|
||||
},
|
||||
{
|
||||
"expression": "bar[*]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "bar[*].baz[*]",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"string": "string",
|
||||
"hash": {"foo": "bar", "bar": "baz"},
|
||||
"number": 23,
|
||||
"nullvalue": null
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "string[*]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "hash[*]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "number[*]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "nullvalue[*]",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "string[*].foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "hash[*].foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "number[*].foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "nullvalue[*].foo",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "nullvalue[*].foo[*].bar",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"string": "string",
|
||||
"hash": {"foo": "val", "bar": "val"},
|
||||
"number": 23,
|
||||
"array": [1, 2, 3],
|
||||
"nullvalue": null
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "string.*",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "hash.*",
|
||||
"result": ["val", "val"]
|
||||
},
|
||||
{
|
||||
"expression": "number.*",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "array.*",
|
||||
"result": null
|
||||
},
|
||||
{
|
||||
"expression": "nullvalue.*",
|
||||
"result": null
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"given": {
|
||||
"a": [0, 1, 2],
|
||||
"b": [0, 1, 2]
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"expression": "*[0]",
|
||||
"result": [0, 0]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
123
vendor/github.com/jmespath/go-jmespath/compliance_test.go
generated
vendored
Normal file
123
vendor/github.com/jmespath/go-jmespath/compliance_test.go
generated
vendored
Normal file
|
@ -0,0 +1,123 @@
|
|||
package jmespath
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
type TestSuite struct {
|
||||
Given interface{}
|
||||
TestCases []TestCase `json:"cases"`
|
||||
Comment string
|
||||
}
|
||||
type TestCase struct {
|
||||
Comment string
|
||||
Expression string
|
||||
Result interface{}
|
||||
Error string
|
||||
}
|
||||
|
||||
var whiteListed = []string{
|
||||
"compliance/basic.json",
|
||||
"compliance/current.json",
|
||||
"compliance/escape.json",
|
||||
"compliance/filters.json",
|
||||
"compliance/functions.json",
|
||||
"compliance/identifiers.json",
|
||||
"compliance/indices.json",
|
||||
"compliance/literal.json",
|
||||
"compliance/multiselect.json",
|
||||
"compliance/ormatch.json",
|
||||
"compliance/pipe.json",
|
||||
"compliance/slice.json",
|
||||
"compliance/syntax.json",
|
||||
"compliance/unicode.json",
|
||||
"compliance/wildcard.json",
|
||||
"compliance/boolean.json",
|
||||
}
|
||||
|
||||
func allowed(path string) bool {
|
||||
for _, el := range whiteListed {
|
||||
if el == path {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func TestCompliance(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
var complianceFiles []string
|
||||
err := filepath.Walk("compliance", func(path string, _ os.FileInfo, _ error) error {
|
||||
//if strings.HasSuffix(path, ".json") {
|
||||
if allowed(path) {
|
||||
complianceFiles = append(complianceFiles, path)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if assert.Nil(err) {
|
||||
for _, filename := range complianceFiles {
|
||||
runComplianceTest(assert, filename)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func runComplianceTest(assert *assert.Assertions, filename string) {
|
||||
var testSuites []TestSuite
|
||||
data, err := ioutil.ReadFile(filename)
|
||||
if assert.Nil(err) {
|
||||
err := json.Unmarshal(data, &testSuites)
|
||||
if assert.Nil(err) {
|
||||
for _, testsuite := range testSuites {
|
||||
runTestSuite(assert, testsuite, filename)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func runTestSuite(assert *assert.Assertions, testsuite TestSuite, filename string) {
|
||||
for _, testcase := range testsuite.TestCases {
|
||||
if testcase.Error != "" {
|
||||
// This is a test case that verifies we error out properly.
|
||||
runSyntaxTestCase(assert, testsuite.Given, testcase, filename)
|
||||
} else {
|
||||
runTestCase(assert, testsuite.Given, testcase, filename)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func runSyntaxTestCase(assert *assert.Assertions, given interface{}, testcase TestCase, filename string) {
|
||||
// Anything with an .Error means that we expect that JMESPath should return
|
||||
// an error when we try to evaluate the expression.
|
||||
_, err := Search(testcase.Expression, given)
|
||||
assert.NotNil(err, fmt.Sprintf("Expression: %s", testcase.Expression))
|
||||
}
|
||||
|
||||
func runTestCase(assert *assert.Assertions, given interface{}, testcase TestCase, filename string) {
|
||||
lexer := NewLexer()
|
||||
var err error
|
||||
_, err = lexer.tokenize(testcase.Expression)
|
||||
if err != nil {
|
||||
errMsg := fmt.Sprintf("(%s) Could not lex expression: %s -- %s", filename, testcase.Expression, err.Error())
|
||||
assert.Fail(errMsg)
|
||||
return
|
||||
}
|
||||
parser := NewParser()
|
||||
_, err = parser.Parse(testcase.Expression)
|
||||
if err != nil {
|
||||
errMsg := fmt.Sprintf("(%s) Could not parse expression: %s -- %s", filename, testcase.Expression, err.Error())
|
||||
assert.Fail(errMsg)
|
||||
return
|
||||
}
|
||||
actual, err := Search(testcase.Expression, given)
|
||||
if assert.Nil(err, fmt.Sprintf("Expression: %s", testcase.Expression)) {
|
||||
assert.Equal(testcase.Result, actual, fmt.Sprintf("Expression: %s", testcase.Expression))
|
||||
}
|
||||
}
|
840
vendor/github.com/jmespath/go-jmespath/functions.go
generated
vendored
Normal file
840
vendor/github.com/jmespath/go-jmespath/functions.go
generated
vendored
Normal file
|
@ -0,0 +1,840 @@
|
|||
package jmespath
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
type jpFunction func(arguments []interface{}) (interface{}, error)
|
||||
|
||||
type jpType string
|
||||
|
||||
const (
|
||||
jpUnknown jpType = "unknown"
|
||||
jpNumber jpType = "number"
|
||||
jpString jpType = "string"
|
||||
jpArray jpType = "array"
|
||||
jpObject jpType = "object"
|
||||
jpArrayNumber jpType = "array[number]"
|
||||
jpArrayString jpType = "array[string]"
|
||||
jpExpref jpType = "expref"
|
||||
jpAny jpType = "any"
|
||||
)
|
||||
|
||||
type functionEntry struct {
|
||||
name string
|
||||
arguments []argSpec
|
||||
handler jpFunction
|
||||
hasExpRef bool
|
||||
}
|
||||
|
||||
type argSpec struct {
|
||||
types []jpType
|
||||
variadic bool
|
||||
}
|
||||
|
||||
type byExprString struct {
|
||||
intr *treeInterpreter
|
||||
node ASTNode
|
||||
items []interface{}
|
||||
hasError bool
|
||||
}
|
||||
|
||||
func (a *byExprString) Len() int {
|
||||
return len(a.items)
|
||||
}
|
||||
func (a *byExprString) Swap(i, j int) {
|
||||
a.items[i], a.items[j] = a.items[j], a.items[i]
|
||||
}
|
||||
func (a *byExprString) Less(i, j int) bool {
|
||||
first, err := a.intr.Execute(a.node, a.items[i])
|
||||
if err != nil {
|
||||
a.hasError = true
|
||||
// Return a dummy value.
|
||||
return true
|
||||
}
|
||||
ith, ok := first.(string)
|
||||
if !ok {
|
||||
a.hasError = true
|
||||
return true
|
||||
}
|
||||
second, err := a.intr.Execute(a.node, a.items[j])
|
||||
if err != nil {
|
||||
a.hasError = true
|
||||
// Return a dummy value.
|
||||
return true
|
||||
}
|
||||
jth, ok := second.(string)
|
||||
if !ok {
|
||||
a.hasError = true
|
||||
return true
|
||||
}
|
||||
return ith < jth
|
||||
}
|
||||
|
||||
type byExprFloat struct {
|
||||
intr *treeInterpreter
|
||||
node ASTNode
|
||||
items []interface{}
|
||||
hasError bool
|
||||
}
|
||||
|
||||
func (a *byExprFloat) Len() int {
|
||||
return len(a.items)
|
||||
}
|
||||
func (a *byExprFloat) Swap(i, j int) {
|
||||
a.items[i], a.items[j] = a.items[j], a.items[i]
|
||||
}
|
||||
func (a *byExprFloat) Less(i, j int) bool {
|
||||
first, err := a.intr.Execute(a.node, a.items[i])
|
||||
if err != nil {
|
||||
a.hasError = true
|
||||
// Return a dummy value.
|
||||
return true
|
||||
}
|
||||
ith, ok := first.(float64)
|
||||
if !ok {
|
||||
a.hasError = true
|
||||
return true
|
||||
}
|
||||
second, err := a.intr.Execute(a.node, a.items[j])
|
||||
if err != nil {
|
||||
a.hasError = true
|
||||
// Return a dummy value.
|
||||
return true
|
||||
}
|
||||
jth, ok := second.(float64)
|
||||
if !ok {
|
||||
a.hasError = true
|
||||
return true
|
||||
}
|
||||
return ith < jth
|
||||
}
|
||||
|
||||
type functionCaller struct {
|
||||
functionTable map[string]functionEntry
|
||||
}
|
||||
|
||||
func newFunctionCaller() *functionCaller {
|
||||
caller := &functionCaller{}
|
||||
caller.functionTable = map[string]functionEntry{
|
||||
"length": functionEntry{
|
||||
name: "length",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpString, jpArray, jpObject}},
|
||||
},
|
||||
handler: jpfLength,
|
||||
},
|
||||
"starts_with": functionEntry{
|
||||
name: "starts_with",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpString}},
|
||||
argSpec{types: []jpType{jpString}},
|
||||
},
|
||||
handler: jpfStartsWith,
|
||||
},
|
||||
"abs": functionEntry{
|
||||
name: "abs",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpNumber}},
|
||||
},
|
||||
handler: jpfAbs,
|
||||
},
|
||||
"avg": functionEntry{
|
||||
name: "avg",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArrayNumber}},
|
||||
},
|
||||
handler: jpfAvg,
|
||||
},
|
||||
"ceil": functionEntry{
|
||||
name: "ceil",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpNumber}},
|
||||
},
|
||||
handler: jpfCeil,
|
||||
},
|
||||
"contains": functionEntry{
|
||||
name: "contains",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArray, jpString}},
|
||||
argSpec{types: []jpType{jpAny}},
|
||||
},
|
||||
handler: jpfContains,
|
||||
},
|
||||
"ends_with": functionEntry{
|
||||
name: "ends_with",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpString}},
|
||||
argSpec{types: []jpType{jpString}},
|
||||
},
|
||||
handler: jpfEndsWith,
|
||||
},
|
||||
"floor": functionEntry{
|
||||
name: "floor",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpNumber}},
|
||||
},
|
||||
handler: jpfFloor,
|
||||
},
|
||||
"map": functionEntry{
|
||||
name: "amp",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpExpref}},
|
||||
argSpec{types: []jpType{jpArray}},
|
||||
},
|
||||
handler: jpfMap,
|
||||
hasExpRef: true,
|
||||
},
|
||||
"max": functionEntry{
|
||||
name: "max",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArrayNumber, jpArrayString}},
|
||||
},
|
||||
handler: jpfMax,
|
||||
},
|
||||
"merge": functionEntry{
|
||||
name: "merge",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpObject}, variadic: true},
|
||||
},
|
||||
handler: jpfMerge,
|
||||
},
|
||||
"max_by": functionEntry{
|
||||
name: "max_by",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArray}},
|
||||
argSpec{types: []jpType{jpExpref}},
|
||||
},
|
||||
handler: jpfMaxBy,
|
||||
hasExpRef: true,
|
||||
},
|
||||
"sum": functionEntry{
|
||||
name: "sum",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArrayNumber}},
|
||||
},
|
||||
handler: jpfSum,
|
||||
},
|
||||
"min": functionEntry{
|
||||
name: "min",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArrayNumber, jpArrayString}},
|
||||
},
|
||||
handler: jpfMin,
|
||||
},
|
||||
"min_by": functionEntry{
|
||||
name: "min_by",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArray}},
|
||||
argSpec{types: []jpType{jpExpref}},
|
||||
},
|
||||
handler: jpfMinBy,
|
||||
hasExpRef: true,
|
||||
},
|
||||
"type": functionEntry{
|
||||
name: "type",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpAny}},
|
||||
},
|
||||
handler: jpfType,
|
||||
},
|
||||
"keys": functionEntry{
|
||||
name: "keys",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpObject}},
|
||||
},
|
||||
handler: jpfKeys,
|
||||
},
|
||||
"values": functionEntry{
|
||||
name: "values",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpObject}},
|
||||
},
|
||||
handler: jpfValues,
|
||||
},
|
||||
"sort": functionEntry{
|
||||
name: "sort",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArrayString, jpArrayNumber}},
|
||||
},
|
||||
handler: jpfSort,
|
||||
},
|
||||
"sort_by": functionEntry{
|
||||
name: "sort_by",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArray}},
|
||||
argSpec{types: []jpType{jpExpref}},
|
||||
},
|
||||
handler: jpfSortBy,
|
||||
hasExpRef: true,
|
||||
},
|
||||
"join": functionEntry{
|
||||
name: "join",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpString}},
|
||||
argSpec{types: []jpType{jpArrayString}},
|
||||
},
|
||||
handler: jpfJoin,
|
||||
},
|
||||
"reverse": functionEntry{
|
||||
name: "reverse",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpArray, jpString}},
|
||||
},
|
||||
handler: jpfReverse,
|
||||
},
|
||||
"to_array": functionEntry{
|
||||
name: "to_array",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpAny}},
|
||||
},
|
||||
handler: jpfToArray,
|
||||
},
|
||||
"to_string": functionEntry{
|
||||
name: "to_string",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpAny}},
|
||||
},
|
||||
handler: jpfToString,
|
||||
},
|
||||
"to_number": functionEntry{
|
||||
name: "to_number",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpAny}},
|
||||
},
|
||||
handler: jpfToNumber,
|
||||
},
|
||||
"not_null": functionEntry{
|
||||
name: "not_null",
|
||||
arguments: []argSpec{
|
||||
argSpec{types: []jpType{jpAny}, variadic: true},
|
||||
},
|
||||
handler: jpfNotNull,
|
||||
},
|
||||
}
|
||||
return caller
|
||||
}
|
||||
|
||||
func (e *functionEntry) resolveArgs(arguments []interface{}) ([]interface{}, error) {
|
||||
if len(e.arguments) == 0 {
|
||||
return arguments, nil
|
||||
}
|
||||
if !e.arguments[len(e.arguments)-1].variadic {
|
||||
if len(e.arguments) != len(arguments) {
|
||||
return nil, errors.New("incorrect number of args")
|
||||
}
|
||||
for i, spec := range e.arguments {
|
||||
userArg := arguments[i]
|
||||
err := spec.typeCheck(userArg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return arguments, nil
|
||||
}
|
||||
if len(arguments) < len(e.arguments) {
|
||||
return nil, errors.New("Invalid arity.")
|
||||
}
|
||||
return arguments, nil
|
||||
}
|
||||
|
||||
func (a *argSpec) typeCheck(arg interface{}) error {
|
||||
for _, t := range a.types {
|
||||
switch t {
|
||||
case jpNumber:
|
||||
if _, ok := arg.(float64); ok {
|
||||
return nil
|
||||
}
|
||||
case jpString:
|
||||
if _, ok := arg.(string); ok {
|
||||
return nil
|
||||
}
|
||||
case jpArray:
|
||||
if _, ok := arg.([]interface{}); ok {
|
||||
return nil
|
||||
}
|
||||
case jpObject:
|
||||
if _, ok := arg.(map[string]interface{}); ok {
|
||||
return nil
|
||||
}
|
||||
case jpArrayNumber:
|
||||
if _, ok := toArrayNum(arg); ok {
|
||||
return nil
|
||||
}
|
||||
case jpArrayString:
|
||||
if _, ok := toArrayStr(arg); ok {
|
||||
return nil
|
||||
}
|
||||
case jpAny:
|
||||
return nil
|
||||
case jpExpref:
|
||||
if _, ok := arg.(expRef); ok {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("Invalid type for: %v, expected: %#v", arg, a.types)
|
||||
}
|
||||
|
||||
func (f *functionCaller) CallFunction(name string, arguments []interface{}, intr *treeInterpreter) (interface{}, error) {
|
||||
entry, ok := f.functionTable[name]
|
||||
if !ok {
|
||||
return nil, errors.New("unknown function: " + name)
|
||||
}
|
||||
resolvedArgs, err := entry.resolveArgs(arguments)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if entry.hasExpRef {
|
||||
var extra []interface{}
|
||||
extra = append(extra, intr)
|
||||
resolvedArgs = append(extra, resolvedArgs...)
|
||||
}
|
||||
return entry.handler(resolvedArgs)
|
||||
}
|
||||
|
||||
func jpfAbs(arguments []interface{}) (interface{}, error) {
|
||||
num := arguments[0].(float64)
|
||||
return math.Abs(num), nil
|
||||
}
|
||||
|
||||
func jpfLength(arguments []interface{}) (interface{}, error) {
|
||||
arg := arguments[0]
|
||||
if c, ok := arg.(string); ok {
|
||||
return float64(utf8.RuneCountInString(c)), nil
|
||||
} else if c, ok := arg.([]interface{}); ok {
|
||||
return float64(len(c)), nil
|
||||
} else if c, ok := arg.(map[string]interface{}); ok {
|
||||
return float64(len(c)), nil
|
||||
}
|
||||
return nil, errors.New("could not compute length()")
|
||||
}
|
||||
|
||||
func jpfStartsWith(arguments []interface{}) (interface{}, error) {
|
||||
search := arguments[0].(string)
|
||||
prefix := arguments[1].(string)
|
||||
return strings.HasPrefix(search, prefix), nil
|
||||
}
|
||||
|
||||
func jpfAvg(arguments []interface{}) (interface{}, error) {
|
||||
// We've already type checked the value so we can safely use
|
||||
// type assertions.
|
||||
args := arguments[0].([]interface{})
|
||||
length := float64(len(args))
|
||||
numerator := 0.0
|
||||
for _, n := range args {
|
||||
numerator += n.(float64)
|
||||
}
|
||||
return numerator / length, nil
|
||||
}
|
||||
func jpfCeil(arguments []interface{}) (interface{}, error) {
|
||||
val := arguments[0].(float64)
|
||||
return math.Ceil(val), nil
|
||||
}
|
||||
func jpfContains(arguments []interface{}) (interface{}, error) {
|
||||
search := arguments[0]
|
||||
el := arguments[1]
|
||||
if searchStr, ok := search.(string); ok {
|
||||
if elStr, ok := el.(string); ok {
|
||||
return strings.Index(searchStr, elStr) != -1, nil
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
// Otherwise this is a generic contains for []interface{}
|
||||
general := search.([]interface{})
|
||||
for _, item := range general {
|
||||
if item == el {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
func jpfEndsWith(arguments []interface{}) (interface{}, error) {
|
||||
search := arguments[0].(string)
|
||||
suffix := arguments[1].(string)
|
||||
return strings.HasSuffix(search, suffix), nil
|
||||
}
|
||||
func jpfFloor(arguments []interface{}) (interface{}, error) {
|
||||
val := arguments[0].(float64)
|
||||
return math.Floor(val), nil
|
||||
}
|
||||
func jpfMap(arguments []interface{}) (interface{}, error) {
|
||||
intr := arguments[0].(*treeInterpreter)
|
||||
exp := arguments[1].(expRef)
|
||||
node := exp.ref
|
||||
arr := arguments[2].([]interface{})
|
||||
mapped := make([]interface{}, 0, len(arr))
|
||||
for _, value := range arr {
|
||||
current, err := intr.Execute(node, value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mapped = append(mapped, current)
|
||||
}
|
||||
return mapped, nil
|
||||
}
|
||||
func jpfMax(arguments []interface{}) (interface{}, error) {
|
||||
if items, ok := toArrayNum(arguments[0]); ok {
|
||||
if len(items) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
if len(items) == 1 {
|
||||
return items[0], nil
|
||||
}
|
||||
best := items[0]
|
||||
for _, item := range items[1:] {
|
||||
if item > best {
|
||||
best = item
|
||||
}
|
||||
}
|
||||
return best, nil
|
||||
}
|
||||
// Otherwise we're dealing with a max() of strings.
|
||||
items, _ := toArrayStr(arguments[0])
|
||||
if len(items) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
if len(items) == 1 {
|
||||
return items[0], nil
|
||||
}
|
||||
best := items[0]
|
||||
for _, item := range items[1:] {
|
||||
if item > best {
|
||||
best = item
|
||||
}
|
||||
}
|
||||
return best, nil
|
||||
}
|
||||
func jpfMerge(arguments []interface{}) (interface{}, error) {
|
||||
final := make(map[string]interface{})
|
||||
for _, m := range arguments {
|
||||
mapped := m.(map[string]interface{})
|
||||
for key, value := range mapped {
|
||||
final[key] = value
|
||||
}
|
||||
}
|
||||
return final, nil
|
||||
}
|
||||
func jpfMaxBy(arguments []interface{}) (interface{}, error) {
|
||||
intr := arguments[0].(*treeInterpreter)
|
||||
arr := arguments[1].([]interface{})
|
||||
exp := arguments[2].(expRef)
|
||||
node := exp.ref
|
||||
if len(arr) == 0 {
|
||||
return nil, nil
|
||||
} else if len(arr) == 1 {
|
||||
return arr[0], nil
|
||||
}
|
||||
start, err := intr.Execute(node, arr[0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
switch t := start.(type) {
|
||||
case float64:
|
||||
bestVal := t
|
||||
bestItem := arr[0]
|
||||
for _, item := range arr[1:] {
|
||||
result, err := intr.Execute(node, item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
current, ok := result.(float64)
|
||||
if !ok {
|
||||
return nil, errors.New("invalid type, must be number")
|
||||
}
|
||||
if current > bestVal {
|
||||
bestVal = current
|
||||
bestItem = item
|
||||
}
|
||||
}
|
||||
return bestItem, nil
|
||||
case string:
|
||||
bestVal := t
|
||||
bestItem := arr[0]
|
||||
for _, item := range arr[1:] {
|
||||
result, err := intr.Execute(node, item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
current, ok := result.(string)
|
||||
if !ok {
|
||||
return nil, errors.New("invalid type, must be string")
|
||||
}
|
||||
if current > bestVal {
|
||||
bestVal = current
|
||||
bestItem = item
|
||||
}
|
||||
}
|
||||
return bestItem, nil
|
||||
default:
|
||||
return nil, errors.New("invalid type, must be number of string")
|
||||
}
|
||||
}
|
||||
func jpfSum(arguments []interface{}) (interface{}, error) {
|
||||
items, _ := toArrayNum(arguments[0])
|
||||
sum := 0.0
|
||||
for _, item := range items {
|
||||
sum += item
|
||||
}
|
||||
return sum, nil
|
||||
}
|
||||
|
||||
func jpfMin(arguments []interface{}) (interface{}, error) {
|
||||
if items, ok := toArrayNum(arguments[0]); ok {
|
||||
if len(items) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
if len(items) == 1 {
|
||||
return items[0], nil
|
||||
}
|
||||
best := items[0]
|
||||
for _, item := range items[1:] {
|
||||
if item < best {
|
||||
best = item
|
||||
}
|
||||
}
|
||||
return best, nil
|
||||
}
|
||||
items, _ := toArrayStr(arguments[0])
|
||||
if len(items) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
if len(items) == 1 {
|
||||
return items[0], nil
|
||||
}
|
||||
best := items[0]
|
||||
for _, item := range items[1:] {
|
||||
if item < best {
|
||||
best = item
|
||||
}
|
||||
}
|
||||
return best, nil
|
||||
}
|
||||
|
||||
func jpfMinBy(arguments []interface{}) (interface{}, error) {
|
||||
intr := arguments[0].(*treeInterpreter)
|
||||
arr := arguments[1].([]interface{})
|
||||
exp := arguments[2].(expRef)
|
||||
node := exp.ref
|
||||
if len(arr) == 0 {
|
||||
return nil, nil
|
||||
} else if len(arr) == 1 {
|
||||
return arr[0], nil
|
||||
}
|
||||
start, err := intr.Execute(node, arr[0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if t, ok := start.(float64); ok {
|
||||
bestVal := t
|
||||
bestItem := arr[0]
|
||||
for _, item := range arr[1:] {
|
||||
result, err := intr.Execute(node, item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
current, ok := result.(float64)
|
||||
if !ok {
|
||||
return nil, errors.New("invalid type, must be number")
|
||||
}
|
||||
if current < bestVal {
|
||||
bestVal = current
|
||||
bestItem = item
|
||||
}
|
||||
}
|
||||
return bestItem, nil
|
||||
} else if t, ok := start.(string); ok {
|
||||
bestVal := t
|
||||
bestItem := arr[0]
|
||||
for _, item := range arr[1:] {
|
||||
result, err := intr.Execute(node, item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
current, ok := result.(string)
|
||||
if !ok {
|
||||
return nil, errors.New("invalid type, must be string")
|
||||
}
|
||||
if current < bestVal {
|
||||
bestVal = current
|
||||
bestItem = item
|
||||
}
|
||||
}
|
||||
return bestItem, nil
|
||||
} else {
|
||||
return nil, errors.New("invalid type, must be number of string")
|
||||
}
|
||||
}
|
||||
func jpfType(arguments []interface{}) (interface{}, error) {
|
||||
arg := arguments[0]
|
||||
if _, ok := arg.(float64); ok {
|
||||
return "number", nil
|
||||
}
|
||||
if _, ok := arg.(string); ok {
|
||||
return "string", nil
|
||||
}
|
||||
if _, ok := arg.([]interface{}); ok {
|
||||
return "array", nil
|
||||
}
|
||||
if _, ok := arg.(map[string]interface{}); ok {
|
||||
return "object", nil
|
||||
}
|
||||
if arg == nil {
|
||||
return "null", nil
|
||||
}
|
||||
if arg == true || arg == false {
|
||||
return "boolean", nil
|
||||
}
|
||||
return nil, errors.New("unknown type")
|
||||
}
|
||||
func jpfKeys(arguments []interface{}) (interface{}, error) {
|
||||
arg := arguments[0].(map[string]interface{})
|
||||
collected := make([]interface{}, 0, len(arg))
|
||||
for key := range arg {
|
||||
collected = append(collected, key)
|
||||
}
|
||||
return collected, nil
|
||||
}
|
||||
func jpfValues(arguments []interface{}) (interface{}, error) {
|
||||
arg := arguments[0].(map[string]interface{})
|
||||
collected := make([]interface{}, 0, len(arg))
|
||||
for _, value := range arg {
|
||||
collected = append(collected, value)
|
||||
}
|
||||
return collected, nil
|
||||
}
|
||||
func jpfSort(arguments []interface{}) (interface{}, error) {
|
||||
if items, ok := toArrayNum(arguments[0]); ok {
|
||||
d := sort.Float64Slice(items)
|
||||
sort.Stable(d)
|
||||
final := make([]interface{}, len(d))
|
||||
for i, val := range d {
|
||||
final[i] = val
|
||||
}
|
||||
return final, nil
|
||||
}
|
||||
// Otherwise we're dealing with sort()'ing strings.
|
||||
items, _ := toArrayStr(arguments[0])
|
||||
d := sort.StringSlice(items)
|
||||
sort.Stable(d)
|
||||
final := make([]interface{}, len(d))
|
||||
for i, val := range d {
|
||||
final[i] = val
|
||||
}
|
||||
return final, nil
|
||||
}
|
||||
func jpfSortBy(arguments []interface{}) (interface{}, error) {
|
||||
intr := arguments[0].(*treeInterpreter)
|
||||
arr := arguments[1].([]interface{})
|
||||
exp := arguments[2].(expRef)
|
||||
node := exp.ref
|
||||
if len(arr) == 0 {
|
||||
return arr, nil
|
||||
} else if len(arr) == 1 {
|
||||
return arr, nil
|
||||
}
|
||||
start, err := intr.Execute(node, arr[0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if _, ok := start.(float64); ok {
|
||||
sortable := &byExprFloat{intr, node, arr, false}
|
||||
sort.Stable(sortable)
|
||||
if sortable.hasError {
|
||||
return nil, errors.New("error in sort_by comparison")
|
||||
}
|
||||
return arr, nil
|
||||
} else if _, ok := start.(string); ok {
|
||||
sortable := &byExprString{intr, node, arr, false}
|
||||
sort.Stable(sortable)
|
||||
if sortable.hasError {
|
||||
return nil, errors.New("error in sort_by comparison")
|
||||
}
|
||||
return arr, nil
|
||||
} else {
|
||||
return nil, errors.New("invalid type, must be number of string")
|
||||
}
|
||||
}
|
||||
func jpfJoin(arguments []interface{}) (interface{}, error) {
|
||||
sep := arguments[0].(string)
|
||||
// We can't just do arguments[1].([]string), we have to
|
||||
// manually convert each item to a string.
|
||||
arrayStr := []string{}
|
||||
for _, item := range arguments[1].([]interface{}) {
|
||||
arrayStr = append(arrayStr, item.(string))
|
||||
}
|
||||
return strings.Join(arrayStr, sep), nil
|
||||
}
|
||||
func jpfReverse(arguments []interface{}) (interface{}, error) {
|
||||
if s, ok := arguments[0].(string); ok {
|
||||
r := []rune(s)
|
||||
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
|
||||
r[i], r[j] = r[j], r[i]
|
||||
}
|
||||
return string(r), nil
|
||||
}
|
||||
items := arguments[0].([]interface{})
|
||||
length := len(items)
|
||||
reversed := make([]interface{}, length)
|
||||
for i, item := range items {
|
||||
reversed[length-(i+1)] = item
|
||||
}
|
||||
return reversed, nil
|
||||
}
|
||||
func jpfToArray(arguments []interface{}) (interface{}, error) {
|
||||
if _, ok := arguments[0].([]interface{}); ok {
|
||||
return arguments[0], nil
|
||||
}
|
||||
return arguments[:1:1], nil
|
||||
}
|
||||
func jpfToString(arguments []interface{}) (interface{}, error) {
|
||||
if v, ok := arguments[0].(string); ok {
|
||||
return v, nil
|
||||
}
|
||||
result, err := json.Marshal(arguments[0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return string(result), nil
|
||||
}
|
||||
func jpfToNumber(arguments []interface{}) (interface{}, error) {
|
||||
arg := arguments[0]
|
||||
if v, ok := arg.(float64); ok {
|
||||
return v, nil
|
||||
}
|
||||
if v, ok := arg.(string); ok {
|
||||
conv, err := strconv.ParseFloat(v, 64)
|
||||
if err != nil {
|
||||
return nil, nil
|
||||
}
|
||||
return conv, nil
|
||||
}
|
||||
if _, ok := arg.([]interface{}); ok {
|
||||
return nil, nil
|
||||
}
|
||||
if _, ok := arg.(map[string]interface{}); ok {
|
||||
return nil, nil
|
||||
}
|
||||
if arg == nil {
|
||||
return nil, nil
|
||||
}
|
||||
if arg == true || arg == false {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, errors.New("unknown type")
|
||||
}
|
||||
func jpfNotNull(arguments []interface{}) (interface{}, error) {
|
||||
for _, arg := range arguments {
|
||||
if arg != nil {
|
||||
return arg, nil
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-1
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-1
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
foo
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-10
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-10
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
foo.bar
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-100
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-100
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
ends_with(str, 'SStr')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-101
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-101
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
ends_with(str, 'foo')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-102
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-102
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
floor(`1.2`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-103
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-103
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
floor(decimals[0])
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-104
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-104
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
floor(foo)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-105
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-105
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
length('abc')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-106
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-106
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
length('')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-107
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-107
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
length(@)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-108
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-108
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
length(strings[0])
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-109
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-109
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
length(str)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-110
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-110
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
length(array)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-112
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-112
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
length(strings[0])
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-115
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-115
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
max(strings)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-118
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-118
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
merge(`{}`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-119
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-119
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
merge(`{}`, `{}`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-12
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-12
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
two
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-120
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-120
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
merge(`{"a": 1}`, `{"b": 2}`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-121
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-121
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
merge(`{"a": 1}`, `{"a": 2}`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-122
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-122
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
merge(`{"a": 1, "b": 2}`, `{"a": 2, "c": 3}`, `{"d": 4}`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-123
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-123
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
min(numbers)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-126
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-126
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
min(decimals)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-128
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-128
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type('abc')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-129
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-129
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type(`1.0`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-13
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-13
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
three
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-130
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-130
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type(`2`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-131
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-131
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type(`true`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-132
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-132
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type(`false`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-133
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-133
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type(`null`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-134
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-134
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type(`[0]`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-135
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-135
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type(`{"a": "b"}`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-136
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-136
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
type(@)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-137
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-137
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
keys(objects)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-138
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-138
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
values(objects)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-139
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-139
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
keys(empty_hash)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-14
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-14
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
one.two
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-140
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-140
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
join(', ', strings)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-141
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-141
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
join(', ', strings)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-142
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-142
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
join(',', `["a", "b"]`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-143
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-143
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
join('|', strings)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-144
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-144
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
join('|', decimals[].to_string(@))
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-145
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-145
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
join('|', empty_list)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-146
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-146
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
reverse(numbers)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-147
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-147
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
reverse(array)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-148
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-148
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
reverse(`[]`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-149
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-149
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
reverse('')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-15
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-15
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
foo."1"
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-150
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-150
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
reverse('hello world')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-151
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-151
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
starts_with(str, 'S')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-152
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-152
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
starts_with(str, 'St')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-153
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-153
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
starts_with(str, 'Str')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-155
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-155
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
sum(numbers)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-156
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-156
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
sum(decimals)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-157
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-157
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
sum(array[].to_number(@))
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-158
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-158
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
sum(`[]`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-159
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-159
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_array('foo')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-16
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-16
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
foo."1"[0]
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-160
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-160
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_array(`0`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-161
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-161
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_array(objects)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-162
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-162
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_array(`[1, 2, 3]`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-163
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-163
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_array(false)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-164
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-164
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_string('foo')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-165
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-165
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_string(`1.2`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-166
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-166
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_string(`[0, 1]`)
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-167
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-167
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_number('1.0')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-168
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-168
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_number('1.1')
|
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-169
generated
vendored
Normal file
1
vendor/github.com/jmespath/go-jmespath/fuzz/corpus/expr-169
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
to_number('4')
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue