buildframework/helium/tools/common/testing.ant.xml
author srilekhas <srilekhas@symbian.org>
Wed, 18 Aug 2010 11:18:38 +0100
changeset 627 cb3264f4c6e6
parent 588 c7c26511138f
child 628 7c4a911dc066
permissions -rw-r--r--
Merge : re-applies missing part of fix for Bug 2901,Add export for s60ibymacros.pm

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
============================================================================ 
Name        : testing.xml 
Part of     : Helium 

Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved.
This component and the accompanying materials are made available
under the terms of the License "Eclipse Public License v1.0"
which accompanies this distribution, and is available
at the URL "http://www.eclipse.org/legal/epl-v10.html".

Initial Contributors:
Nokia Corporation - initial contribution.

Contributors:

Description:

============================================================================
-->
<!--* @package framework -->
<project name="internal.testing" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium"> 
    <description>
        Targets to test Helium itself.
    </description>
    
    <!-- Runs all the unit testing targets. -->
    <target name="unittest" depends="ant-unittest,py-unittest"/>
    
    <!-- Unit testing -->

    <!-- Setup environment for Python unit tests. -->
    <target name="setup-py-unittest">
        <!-- Autogenerate test data for ArchivePreBuilderTest based on ANT properties -->
        <if>
            <available file="${helium.dir}/tests/data/archive_test.cfg.xml"/>
            <then>
                <delete file="${helium.dir}/tests/data/archive_test.cfg.xml"/>
            </then>
        </if>
        <copy file="${helium.dir}/tests/data/archive_test_input.cfg.xml" tofile="${helium.dir}/tests/data/archive_test.cfg.xml" overwrite="true">
            <filterchain>
                <expandproperties/>
            </filterchain>
        </copy>
    </target>

    <!-- Do Python tests. -->
    <target name="do-py-unittest" depends="setup-py-unittest">
        <property name="nose.args" value="nokiacpythontest scripttests"/>
        <exec executable="python" failonerror="true">
            <env key="TEST_DATA" value="${helium.dir}/tests"/>
            <arg line="${python.tools}/coverage.py -x ${python.tools}/nosetests-script.py -v ${nose.args}"/>
        </exec>
        <script language="jython" setbeans="false">
import sys
import os
os.putenv('TEST_DATA', os.path.join(os.environ['HELIUM_HOME'], 'tests'))
sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'external/python/lib/common/nose-0.11.1-py2.6.egg'))
sys.path.append(os.path.join(os.environ['HELIUM_HOME'], 'external/python/lib/common/mocker-0.10.1-py2.5.egg'))
import nose
args = project.getProperty('nose.args')
if ' ' in args:
    nose.run(argv=['-v', 'scripttests'])
elif 'cpython' not in args:
    nose.run(argv=['-v', args])
print >> sys.stderr
        </script>
    </target>
    
    <!-- Shortcut for Python unit tests. -->
    <target name="pt" depends="do-py-unittest"/>
    
        
    <!-- Create Python code coverage statistics. -->
    <target name="py-unittest-coverage">
        <mkdir dir="${helium.build.dir}/coverage"/>
        <pathconvert pathsep=" " property="python.modules.coverage">
            <fileset dir="${helium.dir}">
                <include name="tools/**/*.py"/>
                <include name="extensions/nokia/tools/**/*.py"/>
                <exclude name="tools/startup/bootstrap/site.py"/>
            </fileset>
        </pathconvert>
        <exec executable="python" failonerror="true">
            <arg line="${python.tools}/coverage.py -a -d ${helium.build.dir}/coverage ${python.modules.coverage}"/>
        </exec>
                        
        <!-- backup the old line coverage report and create the new one -->
        <mkdir dir="${helium.build.dir}/coverage/report"/>        
        <if>
            <available file="${helium.build.dir}/coverage/report/line_coverage.txt"/>
            <then>
                <copy file="${helium.build.dir}/coverage/report/line_coverage.txt" tofile="${helium.build.dir}/coverage/report/line_coverage_old.txt" overwrite="true"/>
            </then>    
        </if>        
        <hlm:record name="${helium.build.dir}/coverage/report/line_coverage.txt" action="start"/>        
        <exec executable="python" failonerror="true">
            <arg line="${python.tools}/coverage.py -r ${python.modules.coverage}"/>
        </exec>
        <hlm:record name="${helium.build.dir}/coverage/report/line_coverage.txt" action="stop"/>
        <replace file="${helium.build.dir}/coverage/report/line_coverage.txt">
            <replacetoken><![CDATA[[exec]]]></replacetoken>
            <replacevalue><![CDATA[]]></replacevalue>
        </replace>
        <hlm:python>
for line in open(r'${helium.build.dir}/coverage/report/line_coverage.txt'):
    if 'TOTAL' in line and ' 0%' in line:
        raise Exception('Coverage at 0%')
        </hlm:python>
        <delete file="${helium.dir}/.coverage"/>
    </target>
    
    
    <!-- Run Python unit test cases. -->
    <target name="py-unittest" depends="do-py-unittest,py-unittest-coverage"/>
        
    
    <!-- Run Ant unit tests. -->
    <target name="ant-unittest">
        <mkdir dir="${helium.build.dir}/temp"/>
        <mkdir dir="${helium.build.dir}/report/antunit"/>
        <au:antunit>
            <propertyset>
                <propertyref name="cache.dir"/>
                <propertyref name="synergy71.enabled"/>
            </propertyset>
            <fileset dir="${helium.dir}" includes="tools/**/test_*.ant.xml"/> 
            <fileset dir="${helium.dir}" includes="extensions/nokia/tools/**/test_*.ant.xml"/> 
            <au:plainlistener/>
            <hlm:antcoveragelistener outputfile="${helium.build.dir}/report/antunit/ant_coverage.txt"/>
            <au:xmllistener toDir="${helium.build.dir}/report/antunit" logLevel="info" />
        </au:antunit>
    </target>
    
    <target name="antunit" depends="ant-unittest"/>

</project>