I have a really simple Ant script (below) which appears to show the
<uptodate> task not working as documented.  I've tested this on both
unix and windows Ant 1.5.1.  Can anyone reproduce it and/or tell me what
I'm doing wrong or misunderstanding?

The script creates two files with different timestamps, and then tests
<uptodate>:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

<?xml version="1.0"?>
<project name="test" default="test">

    <property name="tmpdir" value="temp"/>

    <target name="test" description="run me">
        <delete dir="${tmpdir}"/>
        <mkdir dir="${tmpdir}"/>
        <touch file="${tmpdir}/one.txt"/>
        <sleep seconds="1"/>
        <touch file="${tmpdir}/two.txt"/>
        <uptodate property="is-uptodate" targetfile="${tmpdir}/one.tmp">
            <srcfiles dir="${tmpdir}" file="two.txt"/>
        </uptodate>
        <property name="is-uptodate" value="false"/>
        <echo message="Is one.txt newer than two.txt?  ${is-uptodate}"/>
        <echo message=""/>

        <delete dir="${tmpdir}"/>
        <mkdir dir="${tmpdir}"/>
        <touch file="${tmpdir}/two.txt"/>
        <sleep seconds="1"/>
        <touch file="${tmpdir}/one.txt"/>
        <uptodate property="is-uptodate2"
targetfile="${tmpdir}/one.tmp">
            <srcfiles dir="${tmpdir}" file="two.txt"/>
        </uptodate>
        <property name="is-uptodate2" value="false"/>
        <echo message="Is one.txt newer than two.txt?
${is-uptodate2}"/>
    </target>

    <target name="test2" description="manual target">
        <uptodate property="is-uptodate" targetfile="${tmpdir}/one.tmp"
            <srcfile="${tmpdir}/two.txt"/>
        <echo message="is-uptodate = ${is-uptodate}"/>
    </target>

    <target name="clean" description="clean up all created files">
        <delete dir="${tmpdir}"/>
    </target>

</project>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

I have found the <sleep> task to be REQUIRED for Ant under Windows to
believe that one.txt and two.txt have different timestamps.  This in
itself seems like a major issue worth noting somewhere in the Ant docs.
But back to the <uptodate> task...

Below is the output I get under unix.  I first run the 'test' target
which automatically timestamps the files.  After that I use the 'test2'
target twice to manually timestamp the files.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

mike@orkid$ ant -version
Apache Ant version 1.5.1 compiled on October 2 2002
mike@orkid$ ant -f test.xml
Buildfile: test.xml

test:
    [mkdir] Created dir: /usr2/home/mike/temp
    [touch] Creating /usr2/home/mike/temp/one.txt
    [touch] Creating /usr2/home/mike/temp/two.txt
     [echo] Is one.txt newer than two.txt?  false

   [delete] Deleting directory /usr2/home/mike/temp
    [mkdir] Created dir: /usr2/home/mike/temp
    [touch] Creating /usr2/home/mike/temp/two.txt
    [touch] Creating /usr2/home/mike/temp/one.txt
     [echo] Is one.txt newer than two.txt?  false

BUILD SUCCESSFUL
Total time: 4 seconds
mike@orkid$ touch temp/one.txt
mike@orkid$ ant -f test.xml test2
Buildfile: test.xml

test2:
     [echo] is-uptodate = ${is-uptodate}

BUILD SUCCESSFUL
Total time: 2 seconds
mike@orkid$ touch temp/two.txt
mike@orkid$ ant -f test.xml test2
Buildfile: test.xml

test2:
     [echo] is-uptodate = ${is-uptodate}

BUILD SUCCESSFUL
Total time: 2 seconds
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

It is as if <uptodate> does not set the property EVER.

Can anyone tell me what I'm doing wrong, or reproduce these results?
Thanks.


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to