@@ -171,7 +171,7 @@ auto process_entry(const sourcemeta::jsonschema::InputJSON &entry,
171171 }
172172
173173 if (benchmark) {
174- return true ;
174+ return subresult || continue_on_error ;
175175 }
176176
177177 if (trace) {
@@ -192,7 +192,7 @@ auto process_entry(const sourcemeta::jsonschema::InputJSON &entry,
192192 std::cout << " \n " ;
193193 if (!suboutput.at (" valid" ).to_boolean ()) {
194194 result = false ;
195- if (entry. multidocument && !continue_on_error) {
195+ if (!continue_on_error) {
196196 return false ;
197197 }
198198 }
@@ -223,7 +223,7 @@ auto process_entry(const sourcemeta::jsonschema::InputJSON &entry,
223223 }
224224 sourcemeta::jsonschema::print (output, entry.positions , std::cerr);
225225 result = false ;
226- if (entry. multidocument && !continue_on_error) {
226+ if (!continue_on_error) {
227227 return false ;
228228 }
229229 }
@@ -376,6 +376,7 @@ auto sourcemeta::jsonschema::validate(const sourcemeta::core::Options &options)
376376 }
377377 }
378378 } else {
379+ bool proceed{true };
379380 for (const auto &instance_path_view : instance_arguments) {
380381 const std::filesystem::path instance_path{instance_path_view};
381382 if (trace && (instance_path.extension () == " .jsonl" ||
@@ -407,6 +408,7 @@ auto sourcemeta::jsonschema::validate(const sourcemeta::core::Options &options)
407408 benchmark_loop, trace, fast_mode, json_output,
408409 continue_on_error, schema_resolution_base, options,
409410 result)) {
411+ proceed = false ;
410412 break ;
411413 }
412414 }
@@ -458,6 +460,7 @@ auto sourcemeta::jsonschema::validate(const sourcemeta::core::Options &options)
458460 assert (suboutput.at (" valid" ).is_boolean ());
459461 if (!suboutput.at (" valid" ).to_boolean ()) {
460462 result = false ;
463+ proceed = continue_on_error;
461464 }
462465
463466 sourcemeta::core::prettify (suboutput, std::cout);
@@ -476,8 +479,13 @@ auto sourcemeta::jsonschema::validate(const sourcemeta::core::Options &options)
476479 << " \n " ;
477480 print (output, tracker, std::cerr);
478481 result = false ;
482+ proceed = continue_on_error;
479483 }
480484 }
485+
486+ if (!proceed) {
487+ break ;
488+ }
481489 }
482490 }
483491
0 commit comments