I do remember experiencing a similar problem at some point while working on the 
unit tests. 

I don’t remember how it got resolved. Could it be an environmental issue?

Maybe other people on this list have also seen this issue and can shed some 
light? (I think it’s a general Groovy question, not something particular to 
CliBuilder.)

Remko

(Shameless plug) Every java main() method deserves http://picocli.info

> On Sep 12, 2018, at 13:40, Remko Popma <remko.po...@gmail.com> wrote:
> 
> Kevin, that’s strange, there are working unit tests that do exactly the 
> same...
> For example:
> 
> https://github.com/apache/groovy/blob/GROOVY_2_5_X/subprojects/groovy-cli-picocli/src/test/groovy/groovy/cli/picocli/CliBuilderTest.groovy#L794
> 
> 
>> On Wed, Sep 12, 2018 at 12:52 Kevin Perkins <kevin.perk...@kp.org> wrote:
>> Hello,
>> 
>> I think I've found a bug with groovy.cli.picocli.CliBuilder as of Groovy 
>> 2.5.2. I didn't find this particular issue in JIRA. I figured I'd ask here. 
>> The parseFromSpec method of groovy.cli.picocli.CliBuilder seems to always 
>> return a LinkedHashMap instead of the expected type (the class given as the 
>> first argument). The source my IDE shows me for this method has "cliOptions 
>> as T" as the last line in the method. I think that the problem is T is 
>> erased when the method is compiled and so the "as T" does (effectively) 
>> nothing. I think the correct code would be "cliOptions.asType(optionsClass)".
>> 
>> Environment information:
>> /* -------------- groovy --version ------------------------------------ */
>> Groovy Version: 2.5.2 JVM: 1.8.0_172 Vendor: Oracle Corporation OS: Windows 7
>> 
>> /* --------------- IDE version info ------------------------------------- */
>> IntelliJ IDEA 2018.2.3 (Ultimate Edition)
>> Build #IU-182.4323.46, built on September 3, 2018
>> JRE: 1.8.0_152-release-1248-b8 amd64
>> JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
>> Windows 7 6.1
>> 
>> The following code demonstrates the issue:
>> /* ------------------------ Begin Example Code ------------------------ */
>> import groovy.cli.Option
>> import groovy.cli.picocli.CliBuilder
>> 
>> class CliBuilderBug {
>>     interface CliArguments {
>>         @Option(longName='dummy') int dummy()
>>     }
>> 
>>     static void main(String[] args) {
>>         CliBuilder builder = new CliBuilder()
>> 
>>         def ok = builder.parseFromSpec(CliArguments, args) as CliArguments
>>         assert ok instanceof CliArguments // ok
>>         println "Using 'as' works."
>> 
>>         def notOk = builder.parseFromSpec(CliArguments, args)
>>         assert notOk instanceof LinkedHashMap // this assertion is true
>>         assert notOk instanceof CliArguments // fails
>>         println 'We never get here.'
>>     }
>> }
>> /* ------------------------ End Example Code ------------------------ */
>> 
>> I hope this is helpful, and thank you for your time.
>> - Kevin Perkins
>> NOTICE TO RECIPIENT:  If you are not the intended recipient of this e-mail, 
>> you are prohibited from sharing, copying, or otherwise using or disclosing 
>> its contents.  If you have received this e-mail in error, please notify the 
>> sender immediately by reply e-mail and permanently delete this e-mail and 
>> any attachments without reading, forwarding or saving them.  Thank you.
>> 

Reply via email to