Seems very reasonable. I've created DAFFODIL-2335 [1] to track this issue.

Also, if anyone is interested in getting into Daffodil development,
taking on this ticket would be a good option. All the logic is in a
single file and it should just require modifying numbers in a handful of
places.

[1] https://issues.apache.org/jira/browse/DAFFODIL-2335

On 5/1/20 8:33 AM, Beckerle, Mike wrote:
> Seems like it would be useful for various error situations to exit with 
> different non-zero error codes rather than scripts having to scrape the error 
> message output to determine why. I'd suggest
> 
> 1 - parse failure or unparse failure
> 2 - parse success, unparse success - but validation failure - basically 
> secondary action failed
> 3 - schema compilation failed (SDE before runtime) either when parse/unparse, 
> or 
> save-parser
> 4 - internal error (e.g., daffodil bug caused abort)
> 
> 
> 
> --------------------------------------------------------------------------------
> *From:* Steve Lawrence <slawre...@apache.org>
> *Sent:* Friday, May 1, 2020 8:07 AM
> *To:* users@daffodil.apache.org <users@daffodil.apache.org>
> *Subject:* Re: Can Daffodil do just validation (not parse to XML/JSON)?
> Good to know the right way to do it.
> 
> Note that a non-zero error code doesn't necessarily mean validation
> failed. It just means that something went wrong. The same error code is
> returned if the parse fails, or if you provide the wrong arguments, or
> if you run out of memory, or there's a bug in Daffodil, etc.
> 
> On 5/1/20 7:47 AM, Costello, Roger L. wrote:
>> The bat file wasn't quite right - it printed "Succeeded with no validation 
>> errors" even when there were errors. Here's the correct way to do it:
>> ---------------------------------------------
>> @ECHO OFF
>> 
>> call echo.
>> call echo validate that instance.txt is a valid instance of the data format
>> call ../../../dfdl/bin/daffodil.bat --version
>> call ../../../dfdl/bin/daffodil.bat parse -s data-format.dfdl.xsd 
>> --validate=on -I null instance.txt
>> 
>> if %errorlevel% == 0 (
>>     echo Validation Succeeded
>> ) else (
>>     echo Validation Failed
>> )
>> ---------------------------------------------
>> 
>> /Roger
>> 
>> -----Original Message-----
>> From: Costello, Roger L. <coste...@mitre.org> 
>> Sent: Wednesday, April 29, 2020 2:20 PM
>> To: users@daffodil.apache.org
>> Subject: Re: Can Daffodil do just validation (not parse to XML/JSON)?
>> 
>> Thank you Steve! That works great.
>> 
>> Here is my validate.bat file (for those interested):
>> ---------------------------------------------
>> @ECHO OFF
>> 
>> call echo.
>> call echo validate that instance.txt is a valid instance of the data format
>> call ../../../dfdl/bin/daffodil.bat --version
>> call ../../../dfdl/bin/daffodil.bat parse -s data-format.dfdl.xsd 
>> --validate=on -I null instance.txt
>> 
>> if errorlevel 0 echo Succeeded with no validation errors 1>&2
>> ---------------------------------------------
>> 
>> /Roger
>> 
>> -----Original Message-----
>> From: Steve Lawrence <slawre...@apache.org> 
>> Sent: Wednesday, April 29, 2020 2:05 PM
>> To: users@daffodil.apache.org
>> Subject: [EXT] Re: Can Daffodil do just validation (not parse to XML/JSON)?
>> 
>> Daffodil currently only outputs anything if there are problems (e.g.
>> parse fails, validation error found). Silence means success.
>> 
>> Daffodil does change the exit code depending on success/failure. Zero
>> means success, 1 means failure.
>> 
>> So if you want a success message, you can check the return code and
>> print a message when it's zero. I'm not a Windows person, but I /think/
>> adding this to the end of the bat file should work:
>> 
>> if errorlevel 0 echo Succeeded with no validation errors 1>&2
>> 
>> 
>> 
>> On 4/29/20 1:54 PM, Costello, Roger L. wrote:
>>> Steve wrote:
>>>
>>>> This causes no infoset to be output
>>>> when the parse completes.
>>>
>>> Eek! Deafening silence when the input conforms to the DFDL schema. Is there 
>>> a way for Daffodil to generate a "valid" message when the input conforms to 
>>> the DFDL schema? If not, perhaps it could be generated by the Windows bat 
>>> file that I am using to run  Daffodil; anyone know how to do that?
>>>
>>> /Roger
>>>
>>> -----Original Message-----
>>> From: Steve Lawrence <slawre...@apache.org> 
>>> Sent: Monday, April 27, 2020 9:23 AM
>>> To: users@daffodil.apache.org
>>> Subject: [EXT] Re: Can Daffodil do just validation (not parse to XML/JSON)?
>>>
>>> Sort of. Daffodil will always create an internal infoset, which is
>>> necessary for all the parsing and validation logic.
>>>
>>> And Daffodil will always follow the codepath to output that infoset when
>>> the parse completes. However, in addition to outputting to XML or JSON
>>> we have a special InfosetOutputter that doesn't actually output
>>> anything, called the NullInfosetOutputter. To use this with the CLI, you
>>> can add "-I null" to your arguments, e.g.
>>>
>>>   daffodil parse -s foo.dfdl.xsd --validate=on -I null inputData.bin
>>>
>>> This causes no infoset to be output when the parse completes. If there
>>> were validation errors, they will be printed to stderr and the exit code
>>> will be 1.
>>>
>>> On 4/27/20 9:07 AM, Costello, Roger L. wrote:
>>>> Hi Folks,
>>>>
>>>> So, a standards organization created a description of a data format. They 
>>>> expressed that description using DFDL.
>>>>
>>>> Then, I created an instance of the data format. Now I'd like to know if my 
>>>> instance is valid, i.e., does it conform to the DFDL description that the 
>>>> standards organization created. I'm not interested in outputting an XML or 
>>>> JSON representation of the instance.  I simply want to know if my instance 
>>>> is valid. I want the output to be either 
> yes it's valid, or no it's not valid. (Analogously, an XML Schema validator 
> can 
> output a detailed infoset or it can output simply valid/invalid) Can Daffodil 
> do 
> this?
>>>>
>>>> /Roger
>>>>
>>>
>> 
> 

Reply via email to