...

Text file src/github.com/jmespath/go-jmespath/compliance/syntax.json

Documentation: github.com/jmespath/go-jmespath/compliance

     1[{
     2  "comment": "Dot syntax",
     3  "given": {"type": "object"},
     4  "cases": [
     5    {
     6      "expression": "foo.bar",
     7      "result": null
     8    },
     9    {
    10      "expression": "foo.1",
    11      "error": "syntax"
    12    },
    13    {
    14      "expression": "foo.-11",
    15      "error": "syntax"
    16    },
    17    {
    18      "expression": "foo",
    19      "result": null
    20    },
    21    {
    22      "expression": "foo.",
    23      "error": "syntax"
    24    },
    25    {
    26      "expression": "foo.",
    27      "error": "syntax"
    28    },
    29    {
    30      "expression": ".foo",
    31      "error": "syntax"
    32    },
    33    {
    34      "expression": "foo..bar",
    35      "error": "syntax"
    36    },
    37    {
    38      "expression": "foo.bar.",
    39      "error": "syntax"
    40    },
    41    {
    42      "expression": "foo[.]",
    43      "error": "syntax"
    44    }
    45  ]
    46},
    47  {
    48    "comment": "Simple token errors",
    49    "given": {"type": "object"},
    50    "cases": [
    51      {
    52        "expression": ".",
    53        "error": "syntax"
    54      },
    55      {
    56        "expression": ":",
    57        "error": "syntax"
    58      },
    59      {
    60        "expression": ",",
    61        "error": "syntax"
    62      },
    63      {
    64        "expression": "]",
    65        "error": "syntax"
    66      },
    67      {
    68        "expression": "[",
    69        "error": "syntax"
    70      },
    71      {
    72        "expression": "}",
    73        "error": "syntax"
    74      },
    75      {
    76        "expression": "{",
    77        "error": "syntax"
    78      },
    79      {
    80        "expression": ")",
    81        "error": "syntax"
    82      },
    83      {
    84        "expression": "(",
    85        "error": "syntax"
    86      },
    87      {
    88        "expression": "((&",
    89        "error": "syntax"
    90      },
    91      {
    92        "expression": "a[",
    93        "error": "syntax"
    94      },
    95      {
    96        "expression": "a]",
    97        "error": "syntax"
    98      },
    99      {
   100        "expression": "a][",
   101        "error": "syntax"
   102      },
   103      {
   104        "expression": "!",
   105        "error": "syntax"
   106      }
   107    ]
   108  },
   109  {
   110    "comment": "Boolean syntax errors",
   111    "given": {"type": "object"},
   112    "cases": [
   113      {
   114        "expression": "![!(!",
   115        "error": "syntax"
   116      }
   117    ]
   118  },
   119  {
   120    "comment": "Wildcard syntax",
   121    "given": {"type": "object"},
   122    "cases": [
   123      {
   124        "expression": "*",
   125        "result": ["object"]
   126      },
   127      {
   128        "expression": "*.*",
   129        "result": []
   130      },
   131      {
   132        "expression": "*.foo",
   133        "result": []
   134      },
   135      {
   136        "expression": "*[0]",
   137        "result": []
   138      },
   139      {
   140        "expression": ".*",
   141        "error": "syntax"
   142      },
   143      {
   144        "expression": "*foo",
   145        "error": "syntax"
   146      },
   147      {
   148        "expression": "*0",
   149        "error": "syntax"
   150      },
   151      {
   152        "expression": "foo[*]bar",
   153        "error": "syntax"
   154      },
   155      {
   156        "expression": "foo[*]*",
   157        "error": "syntax"
   158      }
   159    ]
   160  },
   161  {
   162    "comment": "Flatten syntax",
   163    "given": {"type": "object"},
   164    "cases": [
   165      {
   166        "expression": "[]",
   167        "result": null
   168      }
   169    ]
   170  },
   171  {
   172    "comment": "Simple bracket syntax",
   173    "given": {"type": "object"},
   174    "cases": [
   175      {
   176        "expression": "[0]",
   177        "result": null
   178      },
   179      {
   180        "expression": "[*]",
   181        "result": null
   182      },
   183      {
   184        "expression": "*.[0]",
   185        "error": "syntax"
   186      },
   187      {
   188        "expression": "*.[\"0\"]",
   189        "result": [[null]]
   190      },
   191      {
   192        "expression": "[*].bar",
   193        "result": null
   194      },
   195      {
   196        "expression": "[*][0]",
   197        "result": null
   198      },
   199      {
   200        "expression": "foo[#]",
   201        "error": "syntax"
   202      }
   203    ]
   204  },
   205  {
   206    "comment": "Multi-select list syntax",
   207    "given": {"type": "object"},
   208    "cases": [
   209      {
   210        "expression": "foo[0]",
   211        "result": null
   212      },
   213      {
   214        "comment": "Valid multi-select of a list",
   215        "expression": "foo[0, 1]",
   216        "error": "syntax"
   217      },
   218      {
   219        "expression": "foo.[0]",
   220        "error": "syntax"
   221      },
   222      {
   223        "expression": "foo.[*]",
   224        "result": null
   225      },
   226      {
   227        "comment": "Multi-select of a list with trailing comma",
   228        "expression": "foo[0, ]",
   229        "error": "syntax"
   230      },
   231      {
   232        "comment": "Multi-select of a list with trailing comma and no close",
   233        "expression": "foo[0,",
   234        "error": "syntax"
   235      },
   236      {
   237        "comment": "Multi-select of a list with trailing comma and no close",
   238        "expression": "foo.[a",
   239        "error": "syntax"
   240      },
   241      {
   242        "comment": "Multi-select of a list with extra comma",
   243        "expression": "foo[0,, 1]",
   244        "error": "syntax"
   245      },
   246      {
   247        "comment": "Multi-select of a list using an identifier index",
   248        "expression": "foo[abc]",
   249        "error": "syntax"
   250      },
   251      {
   252        "comment": "Multi-select of a list using identifier indices",
   253        "expression": "foo[abc, def]",
   254        "error": "syntax"
   255      },
   256      {
   257        "comment": "Multi-select of a list using an identifier index",
   258        "expression": "foo[abc, 1]",
   259        "error": "syntax"
   260      },
   261      {
   262        "comment": "Multi-select of a list using an identifier index with trailing comma",
   263        "expression": "foo[abc, ]",
   264        "error": "syntax"
   265      },
   266      {
   267        "comment": "Valid multi-select of a hash using an identifier index",
   268        "expression": "foo.[abc]",
   269        "result": null
   270      },
   271      {
   272        "comment": "Valid multi-select of a hash",
   273        "expression": "foo.[abc, def]",
   274        "result": null
   275      },
   276      {
   277        "comment": "Multi-select of a hash using a numeric index",
   278        "expression": "foo.[abc, 1]",
   279        "error": "syntax"
   280      },
   281      {
   282        "comment": "Multi-select of a hash with a trailing comma",
   283        "expression": "foo.[abc, ]",
   284        "error": "syntax"
   285      },
   286      {
   287        "comment": "Multi-select of a hash with extra commas",
   288        "expression": "foo.[abc,, def]",
   289        "error": "syntax"
   290      },
   291      {
   292        "comment": "Multi-select of a hash using number indices",
   293        "expression": "foo.[0, 1]",
   294        "error": "syntax"
   295      }
   296    ]
   297  },
   298  {
   299    "comment": "Multi-select hash syntax",
   300    "given": {"type": "object"},
   301    "cases": [
   302      {
   303        "comment": "No key or value",
   304        "expression": "a{}",
   305        "error": "syntax"
   306      },
   307      {
   308        "comment": "No closing token",
   309        "expression": "a{",
   310        "error": "syntax"
   311      },
   312      {
   313        "comment": "Not a key value pair",
   314        "expression": "a{foo}",
   315        "error": "syntax"
   316      },
   317      {
   318        "comment": "Missing value and closing character",
   319        "expression": "a{foo:",
   320        "error": "syntax"
   321      },
   322      {
   323        "comment": "Missing closing character",
   324        "expression": "a{foo: 0",
   325        "error": "syntax"
   326      },
   327      {
   328        "comment": "Missing value",
   329        "expression": "a{foo:}",
   330        "error": "syntax"
   331      },
   332      {
   333        "comment": "Trailing comma and no closing character",
   334        "expression": "a{foo: 0, ",
   335        "error": "syntax"
   336      },
   337      {
   338        "comment": "Missing value with trailing comma",
   339        "expression": "a{foo: ,}",
   340        "error": "syntax"
   341      },
   342      {
   343        "comment": "Accessing Array using an identifier",
   344        "expression": "a{foo: bar}",
   345        "error": "syntax"
   346      },
   347      {
   348        "expression": "a{foo: 0}",
   349        "error": "syntax"
   350      },
   351      {
   352        "comment": "Missing key-value pair",
   353        "expression": "a.{}",
   354        "error": "syntax"
   355      },
   356      {
   357        "comment": "Not a key-value pair",
   358        "expression": "a.{foo}",
   359        "error": "syntax"
   360      },
   361      {
   362        "comment": "Missing value",
   363        "expression": "a.{foo:}",
   364        "error": "syntax"
   365      },
   366      {
   367        "comment": "Missing value with trailing comma",
   368        "expression": "a.{foo: ,}",
   369        "error": "syntax"
   370      },
   371      {
   372        "comment": "Valid multi-select hash extraction",
   373        "expression": "a.{foo: bar}",
   374        "result": null
   375      },
   376      {
   377        "comment": "Valid multi-select hash extraction",
   378        "expression": "a.{foo: bar, baz: bam}",
   379        "result": null
   380      },
   381      {
   382        "comment": "Trailing comma",
   383        "expression": "a.{foo: bar, }",
   384        "error": "syntax"
   385      },
   386      {
   387        "comment": "Missing key in second key-value pair",
   388        "expression": "a.{foo: bar, baz}",
   389        "error": "syntax"
   390      },
   391      {
   392        "comment": "Missing value in second key-value pair",
   393        "expression": "a.{foo: bar, baz:}",
   394        "error": "syntax"
   395      },
   396      {
   397        "comment": "Trailing comma",
   398        "expression": "a.{foo: bar, baz: bam, }",
   399        "error": "syntax"
   400      },
   401      {
   402        "comment": "Nested multi select",
   403        "expression": "{\"\\\\\":{\" \":*}}",
   404        "result": {"\\": {" ": ["object"]}}
   405      }
   406    ]
   407  },
   408  {
   409    "comment": "Or expressions",
   410    "given": {"type": "object"},
   411    "cases": [
   412      {
   413        "expression": "foo || bar",
   414        "result": null
   415      },
   416      {
   417        "expression": "foo ||",
   418        "error": "syntax"
   419      },
   420      {
   421        "expression": "foo.|| bar",
   422        "error": "syntax"
   423      },
   424      {
   425        "expression": " || foo",
   426        "error": "syntax"
   427      },
   428      {
   429        "expression": "foo || || foo",
   430        "error": "syntax"
   431      },
   432      {
   433        "expression": "foo.[a || b]",
   434        "result": null
   435      },
   436      {
   437        "expression": "foo.[a ||]",
   438        "error": "syntax"
   439      },
   440      {
   441        "expression": "\"foo",
   442        "error": "syntax"
   443      }
   444    ]
   445  },
   446  {
   447    "comment": "Filter expressions",
   448    "given": {"type": "object"},
   449    "cases": [
   450      {
   451        "expression": "foo[?bar==`\"baz\"`]",
   452        "result": null
   453      },
   454      {
   455        "expression": "foo[? bar == `\"baz\"` ]",
   456        "result": null
   457      },
   458      {
   459        "expression": "foo[ ?bar==`\"baz\"`]",
   460        "error": "syntax"
   461      },
   462      {
   463        "expression": "foo[?bar==]",
   464        "error": "syntax"
   465      },
   466      {
   467        "expression": "foo[?==]",
   468        "error": "syntax"
   469      },
   470      {
   471        "expression": "foo[?==bar]",
   472        "error": "syntax"
   473      },
   474      {
   475        "expression": "foo[?bar==baz?]",
   476        "error": "syntax"
   477      },
   478      {
   479        "expression": "foo[?a.b.c==d.e.f]",
   480        "result": null
   481      },
   482      {
   483        "expression": "foo[?bar==`[0, 1, 2]`]",
   484        "result": null
   485      },
   486      {
   487        "expression": "foo[?bar==`[\"a\", \"b\", \"c\"]`]",
   488        "result": null
   489      },
   490      {
   491        "comment": "Literal char not escaped",
   492        "expression": "foo[?bar==`[\"foo`bar\"]`]",
   493        "error": "syntax"
   494      },
   495      {
   496        "comment": "Literal char escaped",
   497        "expression": "foo[?bar==`[\"foo\\`bar\"]`]",
   498        "result": null
   499      },
   500      {
   501        "comment": "Unknown comparator",
   502        "expression": "foo[?bar<>baz]",
   503        "error": "syntax"
   504      },
   505      {
   506        "comment": "Unknown comparator",
   507        "expression": "foo[?bar^baz]",
   508        "error": "syntax"
   509      },
   510      {
   511        "expression": "foo[bar==baz]",
   512        "error": "syntax"
   513      },
   514      {
   515        "comment": "Quoted identifier in filter expression no spaces",
   516        "expression": "[?\"\\\\\">`\"foo\"`]",
   517        "result": null
   518      },
   519      {
   520        "comment": "Quoted identifier in filter expression with spaces",
   521        "expression": "[?\"\\\\\" > `\"foo\"`]",
   522        "result": null
   523      }
   524    ]
   525  },
   526  {
   527    "comment": "Filter expression errors",
   528    "given": {"type": "object"},
   529    "cases": [
   530      {
   531        "expression": "bar.`\"anything\"`",
   532        "error": "syntax"
   533      },
   534      {
   535        "expression": "bar.baz.noexists.`\"literal\"`",
   536        "error": "syntax"
   537      },
   538      {
   539        "comment": "Literal wildcard projection",
   540        "expression": "foo[*].`\"literal\"`",
   541        "error": "syntax"
   542      },
   543      {
   544        "expression": "foo[*].name.`\"literal\"`",
   545        "error": "syntax"
   546      },
   547      {
   548        "expression": "foo[].name.`\"literal\"`",
   549        "error": "syntax"
   550      },
   551      {
   552        "expression": "foo[].name.`\"literal\"`.`\"subliteral\"`",
   553        "error": "syntax"
   554      },
   555      {
   556        "comment": "Projecting a literal onto an empty list",
   557        "expression": "foo[*].name.noexist.`\"literal\"`",
   558        "error": "syntax"
   559      },
   560      {
   561        "expression": "foo[].name.noexist.`\"literal\"`",
   562        "error": "syntax"
   563      },
   564      {
   565        "expression": "twolen[*].`\"foo\"`",
   566        "error": "syntax"
   567      },
   568      {
   569        "comment": "Two level projection of a literal",
   570        "expression": "twolen[*].threelen[*].`\"bar\"`",
   571        "error": "syntax"
   572      },
   573      {
   574        "comment": "Two level flattened projection of a literal",
   575        "expression": "twolen[].threelen[].`\"bar\"`",
   576        "error": "syntax"
   577      }
   578    ]
   579  },
   580  {
   581    "comment": "Identifiers",
   582    "given": {"type": "object"},
   583    "cases": [
   584      {
   585        "expression": "foo",
   586        "result": null
   587      },
   588      {
   589        "expression": "\"foo\"",
   590        "result": null
   591      },
   592      {
   593        "expression": "\"\\\\\"",
   594        "result": null
   595      }
   596    ]
   597  },
   598  {
   599    "comment": "Combined syntax",
   600    "given": [],
   601    "cases": [
   602        {
   603          "expression": "*||*|*|*",
   604          "result": null
   605        },
   606        {
   607          "expression": "*[]||[*]",
   608          "result": []
   609        },
   610        {
   611          "expression": "[*.*]",
   612          "result": [null]
   613        }
   614    ]
   615  }
   616]

View as plain text