Comments (5)
I can think of three ways:
- Have a file "negative-tests.json", in the same format, where they're all expected to fail.
- Add a property to the test suite (like "level") called something like "expected".
- use false to denote an expected failure; e.g., [ "{/keys", false ]
I kind of like 3... Note that whatever we do, we'd probably put these in a separate file, as spec-examples is just that, and I'd like to see us gather all kinds of tests here; no need to make it a single-file suite (that way, people can select the tests they want by choosing files).
from uritemplate-test.
I was already going down the path of number 3 myself, so let's do that! :) I completely agree that these tests belong in a separate file given that reporting errors is not a MUST. I'll send a pull request later today.
from uritemplate-test.
@damnhandy: +1
I'll rework my uritemplate library over the weekend and I could really use more tricky invalid examples.
from uritemplate-test.
I've issued a pull request for both issues #3 and #4. Regarding the negative test cases, I think it might get a bit more complicated. If you take a look at the last two tests, they likely should not fail, but they are also not valid URI templates. For example, the very last test uses the URI routing syntax found in frameworks like express.js:
/vars/:var
A URI template processor like shouldn't bail on this test, citing invalid syntax, but one also shouldn't expect a properly expanded URI either. I guess my point is that we may need another category whereby the expected result isn't a just true or false, but that the expected result should not match. So I am thinking that we need something like option 2 to indicate that these tests will parse properly but will not yield the expected result. Thoughts?
from uritemplate-test.
Looks done (sure we'll have more).
from uritemplate-test.
Related Issues (20)
- Reasoning behind some expansion tests? And probable errors in test files HOT 5
- Prefix values & combinations HOT 6
- Missing test(s) from "spec-examples.json"
- "Reversible" sub-set of tests? HOT 3
- I think Form-Style Query expansion for string value is incorrect. HOT 1
- regex under construction HOT 2
- Missing tests for +/# with pct-encoded characters
- Help understanding some negative tests HOT 1
- spec-examples.json is missing cases HOT 2
- How should hierarchical names (`.` separated) be expanded HOT 6
- Lists should be ordered? HOT 6
- Declare license in a machine-readable way that Github understands HOT 1
- PCT encoded varname for form style query expansion with list value
- Single Quote in URI Templates is disallowed but reserved in URLs. HOT 15
- Tests with $ sign are missing HOT 1
- Tests for combination of `+` operator, percent-encoded value, and prefix modifier are missing HOT 1
- "negative-tests.json" Too Strict ("{keys:1}", "{+keys:1}") HOT 1
- Errata-Specific Test Cases
- explode with "required" query parameters
- Conflicting expectations? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from uritemplate-test.