Uploaded image for project: 'Clover'
  1. Clover
  2. CLOV-1012

Grails clover plugin unable to parse license location properly on windows when a full path is used

    • Icon: Bug Bug
    • Resolution: Not a bug
    • Icon: Low Low
    • won't fix
    • None
    • Grails Plugin
    • None

      I am logging this from http://jira.grails.org/browse/GPCLOVER-1, which seems to be a dead project that no one is looking at.

      Brian Atkinson's original description:

      The clover plugin seems to be having trouble parsing its command line options. If the following command is run (cwd=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument):

      C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-tools\org.grails-grails-distribution-1.2.2-zip\bin\grails.bat -Dgrails.project.work.dir=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-work -Dserver.port=4216 test-app --non-interactive -clover.on -clover.license.path=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license -clover.initstring=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover\clover.db

      The following output is produced:

      Welcome to Grails 1.2.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-tools\org.grails-grails-distribution-1.2.2-zip
      
      Base Directory: C:\hudson\workspace\genesis-instrument\grails-genesis-instrument
      Resolving dependencies...
      Dependencies resolved in 1656ms.
      Running script C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-tools\org.grails-grails-distribution-1.2.2-zip\scripts\TestApp.groovy
      Environment set to test
      Setting non-interactive mode
      Clover: Using config: [license:[path:true], initstring:true, on:true]
      Error executing script TestApp: No signature of method: static java.lang.System.setProperty() is applicable for argument types: (java.lang.String, java.lang.Boolean) values: [clover.license.path, true]
      groovy.lang.MissingMethodException: No signature of method: static java.lang.System.setProperty() is applicable for argument types: (java.lang.String, java.lang.Boolean) values: [clover.license.path, true]
      	at _Events.configureLicense(_Events.groovy:435)
      	at _Events.this$4$configureLicense(_Events.groovy)
      	at _Events$this$4$configureLicense.callCurrent(Unknown Source)
      	at _Events.toggleCloverOn(_Events.groovy:299)
      	at _Events$_run_closure3.doCall(_Events.groovy:56)
      	at _GrailsEvents_groovy$_run_closure5.doCall(_GrailsEvents_groovy:58)
      	at _GrailsEvents_groovy$_run_closure5.call(_GrailsEvents_groovy)
      	at _GrailsEvents_groovy.run(_GrailsEvents_groovy:62)
      	at _GrailsEvents_groovy$run.call(Unknown Source)
      	at _GrailsClean_groovy$run.call(Unknown Source)
      	at _GrailsClean_groovy.run(_GrailsClean_groovy:29)
      	at _GrailsClean_groovy$run.call(Unknown Source)
      	at TestApp.run(TestApp.groovy:44)
      	at TestApp$run.call(Unknown Source)
      	at gant.Gant.processTargets(Gant.groovy:494)
      	at gant.Gant.processTargets(Gant.groovy:480)
      Error executing script TestApp: No signature of method: static java.lang.System.setProperty() is applicable for argument types: (java.lang.String, java.lang.Boolean) values: [clover.license.path, true]
      

      What is interesting is how the clover config seems to be significantly off. A similar call run on Ubuntu 10.04 and RHEL 5.3 machines seems to parse the path correctly:

      /home/brian/tmp/genesis-instrument/target/grails-tools/org.grails-grails-distribution-1.2.2-zip/bin/grails \
      -Dgrails.project.work.dir=/home/brian/tmp/genesis-instrument/target/grails-work \
      -Dmaven.localRepository=/home/brian/.m2/repository \
      -Dserver.port=43897 \
      test-app \
      --non-interactive \
      -clover.on \
      -clover.license.path=C:\\hudson\\workspace\\genesis-instrument\\grails-genesis-instrument\\target\\clover.license \
      -clover.initstring=C:\\hudson\\workspace\\genesis-instrument\\grails-genesis-instrument\\target\\clover\\clover.db
      

      Produces:

      /home/brian/tmp/genesis-instrument/target/grails-tools/org.grails-grails-distribution-1.2.2-zip/bin/grails: 6: [[: not found
      Welcome to Grails 1.2.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /home/brian/tmp/genesis-instrument/target/grails-tools/org.grails-grails-distribution-1.2.2-zip
      
      Base Directory: /home/brian/tmp/genesis-instrument
      Resolving dependencies...
      Dependencies resolved in 2323ms.
      Running script /home/brian/tmp/genesis-instrument/target/grails-tools/org.grails-grails-distribution-1.2.2-zip/scripts/TestApp.groovy
      Environment set to test
      Setting non-interactive mode
      Clover: Using config: [license:[path:C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license], initstring:C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover\clover.db, on:true]
      Using clover license path: C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license
      ...
      

      This proceeds to fail because the path does not work, but at this point I am unsure why on windows this call fails, but on linux it works.

            [CLOV-1012] Grails clover plugin unable to parse license location properly on windows when a full path is used

            All "-key=value" parameters for Grails have to be enclosed in double quotes on Windows platform. It's a Grails feature. Closing a bug.

            Marek Parfianowicz added a comment - All "-key=value" parameters for Grails have to be enclosed in double quotes on Windows platform. It's a Grails feature. Closing a bug.

            ...and Sarah Brake's comment from the original issue:

            I did some testing on this with Brian, and we found that in order to get the license location parsed correctly in windows all commands related to clover had to be contained in a single command. This works on both linux and windows, but we still don't know why the original command could be parsed correctly in linux but not in windows.

            Updated command used:
            C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-tools\org.grails-grails-distribution-1.2.2-zip\bin\grails.bat -Dgrails.project.work.dir=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-work -Dserver.port=4216 "test-app -clover.on -clover.license.path=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license -clover.initstring=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover\clover.db" --non-interactive

            Gives the correct parsed paths:
            C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-tools\org.grails-grails-distribution-1.3.1-zip\bin\grails.bat
            -Dgrails.project.work.dir=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-work
            -Dserver.port=3552
            test-app -clover.on -clover.license.path=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license -clover.initstring=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover\clover.db
            --non-interactive

            And updated the config appropriately:
            Clover: Using config: [license:[path:C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license], initstring:C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover\clover.db, on:true]
            Using clover license path: C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license

            Kevin Shekleton added a comment - ...and Sarah Brake's comment from the original issue: I did some testing on this with Brian, and we found that in order to get the license location parsed correctly in windows all commands related to clover had to be contained in a single command. This works on both linux and windows, but we still don't know why the original command could be parsed correctly in linux but not in windows. Updated command used: C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-tools\org.grails-grails-distribution-1.2.2-zip\bin\grails.bat -Dgrails.project.work.dir=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-work -Dserver.port=4216 "test-app -clover.on -clover.license.path=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license -clover.initstring=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover\clover.db" --non-interactive Gives the correct parsed paths: C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-tools\org.grails-grails-distribution-1.3.1-zip\bin\grails.bat -Dgrails.project.work.dir=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\grails-work -Dserver.port=3552 test-app -clover.on -clover.license.path=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license -clover.initstring=C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover\clover.db --non-interactive And updated the config appropriately: Clover: Using config: [license: [path:C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license] , initstring:C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover\clover.db, on:true] Using clover license path: C:\hudson\workspace\genesis-instrument\grails-genesis-instrument\target\clover.license

              mparfianowicz Marek Parfianowicz
              85def863d5ee Kevin Shekleton
              Affected customers:
              0 This affects my team
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: