Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-7204

Ant properties are quoted incorrectly on Windows

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • core
    • None
    • Hudson 1.371
      Ant 1.7.1

      The latest Hudson seems to quote Ant properties incorrectly. Older versions of Hudson did not have the same problem. The quote problem makes it impossible to define an empty Ant property.

      Steps to reproduce:

      1. Create new free style job
      2. Run the job to create a workspace folder
      3. Add the following file to the job workspace:
        build.xml
        <project default="build" basedir=".">
            <target name="build">
                <echo message="Value: '${value}'" />
            </target>
        </project>
        
      4. Reconfigure the hudson job to invoke Ant
      5. In the Ant properties field write:
        value=""
        
      6. Run the job

      Excepted result:
      The Ant script should show that the value property was blank

      Actual result:
      The Ant script show that the value property is actual "".

      Additional information:
      In the console output of the job Hudson 1.371 displays:
      [workspace] $ cmd.exe /C '"ant.bat "-Dvalue=""""" && exit %%ERRORLEVEL%%"'

      In the console output of the job in older Hudson's (1.361 and earlier) displayed:
      [workspace] $ cmd.exe /C '"ant.bat -Dvalue="" build && exit %%ERRORLEVEL%%"'

          [JENKINS-7204] Ant properties are quoted incorrectly on Windows

          Anders Hansen created issue -
          Alan Harder made changes -
          Assignee Original: huybrechts [ huybrechts ]
          Summary Original: Ant properties are quoted incorrectly New: Ant properties are quoted incorrectly on Windows
          Alan Harder made changes -
          Link New: This issue is related to JENKINS-7108 [ JENKINS-7108 ]

          Anders Hansen added a comment -

          Updated the issue formatting to make it easier to read.
          Corrected minor textual errors.

          Anders Hansen added a comment - Updated the issue formatting to make it easier to read. Corrected minor textual errors.
          Anders Hansen made changes -
          Description Original: The latest Hudson seems to quote Ant properties incorrectly. Older versions of Hudson did not have the same problems. The quote problem makes it impossible to define an empty Ant property.

          Steps to reproduce:
          1)Create new free style job
          2)Run the job to create a workspace folder
          3)Add the following file to the job workspace:
          build.xml:
          <project default="build" basedir=".">
          <target name="build">
          <echo message="Value: '${value}'" />
          </target>
          </project>

          4)Reconfigure the hudson job to invoke Ant
          5)In the Ant properties field write:
          value=""
          6)Run the job

          Excepted result:
          The Ant script should show that the value property was blank

          Actual result:
          The Ant script show that the value property is actual "".

          Additional information:
          In the console output of the job Hudson 1.371 displays:
          [workspace] $ cmd.exe /C '"c:\apache-ant-1.7.1\bin\ant.bat "-Dvalue=""""" && exit %%ERRORLEVEL%%"'

          In the console output of the job in older Hudson's (1.361 and earlier) displaed:
          [workspace] $ cmd.exe /C '"ant.bat -Dvalue="" build && exit %%ERRORLEVEL%%"'
          New: The latest Hudson seems to quote Ant properties incorrectly. Older versions of Hudson did not have the same problem. The quote problem makes it impossible to define an empty Ant property.

          Steps to reproduce:
          # Create new free style job
          # Run the job to create a workspace folder
          # Add the following file to the job workspace:
          {code:title=build.xml}
          <project default="build" basedir=".">
              <target name="build">
                  <echo message="Value: '${value}'" />
              </target>
          </project>
          {code}
          # Reconfigure the hudson job to invoke Ant
          # In the Ant properties field write:
          {code:xml}
          value=""
          {code}
          # Run the job
          \\ \\

          Excepted result:
          The Ant script should show that the value property was blank

          Actual result:
          The Ant script show that the value property is actual "".

          Additional information:
          In the console output of the job Hudson 1.371 displays:
          [workspace] $ cmd.exe /C '"ant.bat "-Dvalue=""""" && exit %%ERRORLEVEL%%"'

          In the console output of the job in older Hudson's (1.361 and earlier) displayed:
          [workspace] $ cmd.exe /C '"ant.bat -Dvalue="" build && exit %%ERRORLEVEL%%"'

          Alan Harder added a comment -

          The escaping that was added was indended to apply to build parameters (values here expected to be literal), NOT properties entered directly into the ant build step (variable expansion supported here).. will need to dig into how to handle these separately.

          Alan Harder added a comment - The escaping that was added was indended to apply to build parameters (values here expected to be literal), NOT properties entered directly into the ant build step (variable expansion supported here).. will need to dig into how to handle these separately.

          Alan Harder added a comment -

          out of curiosity, what if you enter just
          value=
          in the properties? Does that work for empty value?

          Alan Harder added a comment - out of curiosity, what if you enter just value= in the properties? Does that work for empty value?

          Alan Harder added a comment -

          I found that the person reporting a similar problem on the alias was using %VAR% form instead of $VAR.. even running ant build on windows you should use $VAR form in the ant properties box, as Hudson will expand that before any escaping is done.
          So, if just
          value=
          works for the case you're reporting here, then I'm inclined to close this issue. Let me know how it goes, and if you know of any other cases that don't work with the new escaping stuff. Thanks.

          Alan Harder added a comment - I found that the person reporting a similar problem on the alias was using %VAR% form instead of $VAR.. even running ant build on windows you should use $VAR form in the ant properties box, as Hudson will expand that before any escaping is done. So, if just value= works for the case you're reporting here, then I'm inclined to close this issue. Let me know how it goes, and if you know of any other cases that don't work with the new escaping stuff. Thanks.

          Anders Hansen added a comment -

          Defining a property without a value makes the Hudson build fail. If the test is run directly against Ant from a command prompt Ant reports: "Missing value for property value".

          Steps:
          1) Change the Ant properties to:

          value=
          

          Hudson console output:

          Started by user anonymous
          Building on master
          [workspace] $ cmd.exe /C '"ant.bat -Dvalue= && exit %%ERRORLEVEL%%"'
          Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
          Missing value for property value
          Finished: FAILURE
          

          Single quotes seems to escaped correctly in Hudson. Ant reports the same value in Hudson as when the the script is run from a command prompt.

          Hudson console output on single quotes:

          Started by user anonymous
          Building on master
          [workspace] $ cmd.exe /C '"ant.bat -Dvalue='' && exit %%ERRORLEVEL%%"'
          Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
          Buildfile: build.xml
          
          build:
               [echo] Value: ''''
          
          BUILD SUCCESSFUL
          Total time: 0 seconds
          Finished: SUCCESS
          

          Anders Hansen added a comment - Defining a property without a value makes the Hudson build fail. If the test is run directly against Ant from a command prompt Ant reports: "Missing value for property value". Steps: 1) Change the Ant properties to: value= Hudson console output: Started by user anonymous Building on master [workspace] $ cmd.exe /C ' "ant.bat -Dvalue= && exit %%ERRORLEVEL%%" ' Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar Missing value for property value Finished: FAILURE Single quotes seems to escaped correctly in Hudson. Ant reports the same value in Hudson as when the the script is run from a command prompt. Hudson console output on single quotes: Started by user anonymous Building on master [workspace] $ cmd.exe /C ' "ant.bat -Dvalue=' ' && exit %%ERRORLEVEL%%" ' Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar Buildfile: build.xml build: [echo] Value: '''' BUILD SUCCESSFUL Total time: 0 seconds Finished: SUCCESS

          Alan Harder added a comment -

          yes, I see that too.. that's odd.
          "ant -Dfoo= mytest" works fine on unix..
          I'll see what I can do..

          Alan Harder added a comment - yes, I see that too.. that's odd. "ant -Dfoo= mytest" works fine on unix.. I'll see what I can do..

            mindless Alan Harder
            amh Anders Hansen
            Votes:
            4 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: