add quiet option#382
add quiet option#382bighappyface merged 6 commits intojsonrainbow:6.0.0-devfrom shmax:add-quiet-option
Conversation
It's a great idea |
I like this a lot, although if we go down this road, having a |
Yeah, that's better. Let me flip it around... |
| } | ||
| } else { | ||
| echo "JSON does not validate. Violations:\n"; | ||
| foreach ($validator->getErrors() as $error) { |
There was a problem hiding this comment.
Looking great :-).
While you're at it, can we also have a --quiet option that suppresses the error output?
There was a problem hiding this comment.
Sure, but what would be the use case?
There was a problem hiding this comment.
Use case is scripts or pipelines where you don't care about the error output (and don't want the clutter); you just want to validate. Lots of linux / unix scripts only care about the exit status being zero (OK) or nonzero (not OK), which this script complies with.
There was a problem hiding this comment.
Oh, okay. Sounds good. Comin' up.
|
Added 'quiet' option, and moved all of the option parsing stuff to the top of the file. |
| $refResolver = new JsonSchema\SchemaStorage($retriever, $resolver); | ||
| $schema = $refResolver->resolveRef($urlSchema); | ||
|
|
||
| if (isset($arOptions['--dump-schema'])) { |
There was a problem hiding this comment.
Explicit requests for output like this should override --quiet.
There was a problem hiding this comment.
GitHub highlighted the wrong line - I'm referring to if (isset($arOptions['--dump-schema']))
| @@ -198,21 +210,21 @@ try { | |||
| $urlSchema = $resolver->resolve($pathSchema, $urlData); | |||
|
|
|||
| if (isset($arOptions['--dump-schema-url'])) { | |||
There was a problem hiding this comment.
Explicit requests for output like this should override --quiet
There was a problem hiding this comment.
Not sure whether you're intending this one in a different commit to the --dump-schema one, or if you missed it - but in the past you've combined this kind of thing in a single commit, so adding a comment just in case.
There was a problem hiding this comment.
Never mind, I see you just posted a commit for that at about the same time as my last comment!
erayd
left a comment
There was a problem hiding this comment.
LGTM - thanks for doing this :-).
|
My pleasure. Only 28 issues to go! |
|
/cc @erayd can merge? |
|
@shmax Any chance you could change the base branch to 6.0.0? Or would you prefer to forward-port this one, rather than backporting to 5.2.0? |
SGTM |
|
Awesome - thanks :-) |
* add quiet option * use verbose instead of quiet * add quiet option * always output dump-schema * always output dump-schema-url * fix typo and ws
* add quiet option * use verbose instead of quiet * add quiet option * always output dump-schema * always output dump-schema-url * fix typo and ws
* Add URI translation for retrieval & add local copies of spec schema * Add use line for InvalidArgumentException & adjust scope (#372) Fixes issue #371 * add quiet option (#382) * add quiet option * use verbose instead of quiet * add quiet option * always output dump-schema * always output dump-schema-url * fix typo and ws * [BUGFIX] Add provided schema under a dummy / internal URI (fixes #376) (#378) * Add provided schema under a dummy / internal URI (fixes #376) In order to resolve internal $ref references within a user-provided schema, SchemaStorage needs to know about the schema. As user-supplied schemas do not have an associated URI, use a dummy / internal one instead. * Remove dangling use * Change URI to class constant on SchemaStorage * Add option to disable validation of "format" constraint (#383) * Add more unit tests (#366) * Add test coverage for coercion API * Complete test coverage for SchemaStorage * Add test coverage for ObjectIterator * Add exception test for JsonPointer * MabeEnum\Enum appears to use singletons - add testing const * Don't check this line for coverage mbstring is on all test platforms, so this line will never be reached. * Add test for TypeConstraint::validateTypeNameWording() * Add test for exception on TypeConstraint::validateType() * PHPunit doesn't like an explanation with its @codeCoverageIgnore... * Add various tests for UriRetriever * Add tests for FileGetContents * Add tests for JsonSchema\Uri\Retrievers\Curl * Add missing bad-syntax test file * Restrict ignore to the exception line only * Fix exception scope * Allow the schema to be an associative array (#389) * Allow the schema to be an associative array Implements #388. * Use json_decode(json_encode()) for array -> object cast * Skip exception check on PHP versions < 5.5.0 * Skip test on HHVM, as it's happy to encode resources * Enable FILTER_FLAG_EMAIL_UNICODE for email format if present (#398) * Don't throw exceptions until after checking anyOf / oneOf (#394) Fixes #393 * Fix infinite recursion on some schemas when setting defaults (#359) (#365) * Don't try to fetch files that don't exist Throws an exception when the ref can't be resolved to a useful file URI, rather than waiting for something further down the line to fail after the fact. * Refactor defaults code to use LooseTypeCheck where appropriate * Test for not treating non-containers like arrays * Update comments * Rename variable for clarity * Add CHECK_MODE_ONLY_REQUIRED_DEFAULTS If CHECK_MODE_ONLY_REQUIRED_DEFAULTS is set, then only apply defaults if they are marked as required. * Workaround for $this scope issue on PHP-5.3 * Fix infinite recursion via $ref when applying defaults * Add missing second test for array case * Add test for setting a default value for null * Also fix infinite recursion via $ref for array defaults * Move nested closure into separate method * $parentSchema will always be set when $name is, so don't check it * Handle nulls properly - fixes issue #377 * Add option to also validate the schema (#357) * Remove stale files from #357 (obviated by #362) (#400) * Stop #386 sneaking in alongside another PR backport
* add quiet option * use verbose instead of quiet * add quiet option * always output dump-schema * always output dump-schema-url * fix typo and ws
Fix for #380
Only emit output from CLI when there are errors or when
--quietis not specified.Actually, I'm wondering if maybe we should just skip the
--quietoption and simply not produce any output at all when validation passes. That's generally how other linux programs work from the command line.@erayd @bighappyface @evilebottnawi