Question

I'm setting up TeamCity to do automated builds when I commit something to develop. The problem being that on attempting to do a build I'm getting a reports skipped as out-of-date message.

Here's my build.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- WARNING: Eclipse auto-generated file.
              Any modifications will be overwritten.
              To include a user specific buildfile here, simply create one in the same
              directory with the processing instruction <?eclipse.ant.import?>
              as the first entry and export the buildfile again. -->
<project basedir="." default="build" name="RNS-Reader-v0.1">
    <property environment="env"/>
    <property name="ECLIPSE_HOME" value="../../../../../../../Applications/eclipse"/>
    <property name="junit.output.dir" value="junit"/>
    <property name="debuglevel" value="source,lines,vars"/>
    <property name="target" value="1.6"/>
    <property name="source" value="1.6"/>
    <path id="RNS-Reader-v0.1.classpath">
        <pathelement location="bin"/>
        <pathelement location="src/libraries/cron4j-2.2.5.jar"/>
        <pathelement location="src/libraries/dom4j-1.6.1.jar"/>
        <pathelement location="src/libraries/jaxen-1.1.3.jar"/>
        <pathelement location="src/libraries/joda-time-2.3.jar"/>
        <pathelement location="src/libraries/mysql-connector-java-5.1.25-bin.jar"/>
        <pathelement location="src/libraries/javax.mail.jar"/>
        <pathelement location="src/libraries/jsoup-1.7.3.jar"/>
        <pathelement location="src/libraries/commons-io-2.4.jar"/>
        <pathelement location="src/libraries/twitter4j-async-3.0.5.jar"/>
        <pathelement location="src/libraries/twitter4j-core-3.0.5.jar"/>
        <pathelement location="src/libraries/twitter4j-examples-3.0.5.jar"/>
        <pathelement location="src/libraries/twitter4j-media-support-3.0.5.jar"/>
        <pathelement location="src/libraries/twitter4j-stream-3.0.5.jar"/>
        <pathelement location="src/libraries/hamcrest-core-1.3.jar"/>
        <pathelement location="src/libraries/junit-4.11.jar"/>
    </path>
    <target name="init">
        <mkdir dir="bin"/>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src">
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>
    <target name="clean">
        <delete dir="bin"/>
    </target>
    <target depends="clean" name="cleanall"/>
    <target depends="build-subprojects,build-project" name="build"/>
    <target name="build-subprojects"/>
    <target depends="init" name="build-project">
        <echo message="${ant.project.name}: ${ant.file}"/>
        <javac debug="true" debuglevel="${debuglevel}" destdir="bin" includeantruntime="false" source="${source}" target="${target}">
            <src path="src"/>
            <classpath refid="RNS-Reader-v0.1.classpath"/>
        </javac>
    </target>
    <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
    <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
        <copy todir="${ant.library.dir}">
            <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
        </copy>
        <unzip dest="${ant.library.dir}">
            <patternset includes="jdtCompilerAdapter.jar"/>
            <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
        </unzip>
    </target>
    <target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
        <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
        <antcall target="build"/>
    </target>
    <target name="RNSReader">
        <java classname="RNSReader" failonerror="true" fork="yes">
            <classpath refid="RNS-Reader-v0.1.classpath"/>
        </java>
    </target>
    <target name="SubscriberTest">
        <mkdir dir="${junit.output.dir}"/>
        <junit fork="yes" printsummary="withOutAndErr">
            <formatter type="xml"/>
            <test name="tests.domainObjectsTest.SubscriberTest" todir="${junit.output.dir}"/>
            <classpath refid="RNS-Reader-v0.1.classpath"/>
        </junit>
    </target>
    <target name="DayTradeTest">
        <mkdir dir="${junit.output.dir}"/>
        <junit fork="yes" printsummary="withOutAndErr">
            <formatter type="xml"/>
            <test name="tests.domainObjectsTest.DayTradeTest" todir="${junit.output.dir}"/>
            <classpath refid="RNS-Reader-v0.1.classpath"/>
        </junit>
    </target>
    <target name="junitreport">
        <junitreport todir="${junit.output.dir}">
            <fileset dir="${junit.output.dir}">
                <include name="TEST-*.xml"/>
            </fileset>
            <report format="frames" todir="${junit.output.dir}"/>
        </junitreport>
    </target>
</project>

And here's my output

[10:09:12]Checking for changes
[10:09:13]Ant JUnit report watcher
[10:09:13][Ant JUnit report watcher] Watching paths:
[10:09:13][Ant JUnit report watcher] src/**/*Test*.java
[10:09:13]Publishing internal artifacts
[10:09:13]Clearing temporary directory: /Users/christianmacedo/Documents/TeamCity/buildAgent/temp/buildTmp
[10:09:13]Checkout directory: /Users/christianmacedo/Documents/TeamCity/buildAgent/work/ec7b4331d9c6af60
[10:09:13]Updating sources: server side checkout
[10:09:13]Step 1/1: Ant (2s)
[10:09:16]Ant JUnit report watcher
[10:09:16][Ant JUnit report watcher] 2 reports found for paths:
[10:09:16][Ant JUnit report watcher] src/**/*Test*.java
[10:09:16][Ant JUnit report watcher] 2 reports skipped as out-of-date
[10:09:16]Publishing internal artifacts
[10:09:16][Publishing internal artifacts] Sending using WebPublisher
[10:09:16][Publishing internal artifacts] Sending using ArtifactsCachePublisher
[10:09:16]Build finished

As you can see, the unit tests are found but they're skipped. How can I not skip them?

No correct solution

OTHER TIPS

This is what the documentation says:

The plugin takes into account only the files updated since the build start (determined by means of the last modification file timestamp).

There are two ways to setup report processing. Through the build features or through service messages. If you do it through service messages you can set parseOutOfDate='true' to ignore the timestamp on the file.

##teamcity[importData type='typeID' path='<path>' parseOutOfDate='true']

Make sure you have synchronized time on your server. In my case (Debian 8.5) same issue was fixed by setting up ntpdate daily cron:

sudo apt-get install ntpdate
sudo ln -s /usr/sbin/ntpdate-debian /etc/cron.daily/ntpdate-debian
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top