mirror of
https://github.com/actions/setup-node.git
synced 2024-12-24 02:11:19 +08:00
91 lines
3.1 KiB
Markdown
91 lines
3.1 KiB
Markdown
|
|
||
|
URI Template Tests
|
||
|
==================
|
||
|
|
||
|
This is a set of tests for implementations of
|
||
|
[RFC6570](http://tools.ietf.org/html/rfc6570) - URI Template. It is designed
|
||
|
to be reused by any implementation, to improve interoperability and
|
||
|
implementation quality.
|
||
|
|
||
|
If your project uses Git for version control, you can make uritemplate-tests into a [submodule](http://help.github.com/submodules/).
|
||
|
|
||
|
Test Format
|
||
|
-----------
|
||
|
|
||
|
Each test file is a [JSON](http://tools.ietf.org/html/RFC6627) document
|
||
|
containing an object whose properties are groups of related tests.
|
||
|
Alternatively, all tests are available in XML as well, with the XML files
|
||
|
being generated by transform-json-tests.xslt which uses json2xml.xslt as a
|
||
|
general-purpose JSON-to-XML parsing library.
|
||
|
|
||
|
Each group, in turn, is an object with three children:
|
||
|
|
||
|
* level - the level of the tests covered, as per the RFC (optional; if absent,
|
||
|
assume level 4).
|
||
|
* variables - an object representing the variables that are available to the
|
||
|
tests in the suite
|
||
|
* testcases - a list of testcases, where each case is a two-member list, the
|
||
|
first being the template, the second being the result of expanding the
|
||
|
template with the provided variables.
|
||
|
|
||
|
Note that the result string can be a few different things:
|
||
|
|
||
|
* string - if the second member is a string, the result of expansion is
|
||
|
expected to match it, character-for-character.
|
||
|
* list - if the second member is a list of strings, the result of expansion
|
||
|
is expected to match one of them; this allows for templates that can
|
||
|
expand into different, equally-acceptable URIs.
|
||
|
* false - if the second member is boolean false, expansion is expected to
|
||
|
fail (i.e., the template was invalid).
|
||
|
|
||
|
For example:
|
||
|
|
||
|
{
|
||
|
"Level 1 Examples" :
|
||
|
{
|
||
|
"level": 1,
|
||
|
"variables": {
|
||
|
"var" : "value",
|
||
|
"hello" : "Hello World!"
|
||
|
},
|
||
|
"testcases" : [
|
||
|
["{var}", "value"],
|
||
|
["{hello}", "Hello%20World%21"]
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
Tests Included
|
||
|
--------------
|
||
|
|
||
|
The following test files are included:
|
||
|
|
||
|
* spec-examples.json - The complete set of example templates from the RFC
|
||
|
* spec-examples-by-section.json - The examples, section by section
|
||
|
* extended-tests.json - more complex test cases
|
||
|
* negative-tests.json - invalid templates
|
||
|
|
||
|
For all these test files, XML versions with the names *.xml can be
|
||
|
generated with the transform-json-tests.xslt XSLT stylesheet. The XSLT
|
||
|
contains the names of the above test files as a parameter, and can be
|
||
|
started with any XML as input (i.e., the XML input is ignored).
|
||
|
|
||
|
License
|
||
|
-------
|
||
|
|
||
|
Copyright 2011-2012 The Authors
|
||
|
|
||
|
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.
|
||
|
|