2018-02-26 21:35:04 +00:00
<?xml version="1.0" encoding="UTF-8"?>
<project name= "froxlor" default= "build" >
2018-12-23 09:39:27 +00:00
<!-- Use this when the tools are managed by Composer in ${basedir}/vendor/bin -->
<property name= "pdepend" value= "${basedir}/vendor/bin/pdepend" />
<property name= "phpcpd" value= "${basedir}/vendor/bin/phpcpd" />
<property name= "phpcs" value= "${basedir}/vendor/bin/phpcs" />
<property name= "phploc" value= "${basedir}/vendor/bin/phploc" />
<property name= "phpmd" value= "${basedir}/vendor/bin/phpmd" />
<property name= "phpunit" value= "${basedir}/vendor/bin/phpunit" />
2018-02-26 21:35:04 +00:00
<target name= "full-build"
2021-06-17 06:25:43 +00:00
depends="prepare,composer,static-analysis,phpunit,-check-failure"
2018-02-26 21:35:04 +00:00
description="Performs static analysis, runs the tests, and generates project documentation" />
<target name= "full-build-parallel"
2021-06-17 06:25:43 +00:00
depends="prepare,composer,static-analysis-parallel,phpunit,-check-failure"
2018-02-26 21:35:04 +00:00
description="Performs static analysis (executing the tools in parallel), runs the tests, and generates project documentation" />
2018-12-21 11:24:07 +00:00
<target name= "quick-build"
2021-07-17 12:14:35 +00:00
depends="prepare,composer,lint,phpunit-no-coverage,-check-failure"
2018-02-26 21:35:04 +00:00
description="Performs a lint check and runs the tests (without generating code coverage reports)" />
<target name= "static-analysis"
2018-12-23 09:39:27 +00:00
depends="composer,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcompat-ci,phpcpd-ci"
2018-02-26 21:35:04 +00:00
description="Performs static analysis" />
<!-- Adjust the threadCount attribute's value to the number of CPUs -->
<target name= "static-analysis-parallel"
description="Performs static analysis (executing the tools in parallel)">
<parallel threadCount= "2" >
<sequential >
<antcall target= "pdepend" />
<antcall target= "phpmd-ci" />
</sequential>
<antcall target= "lint" />
<antcall target= "phpcpd-ci" />
<antcall target= "phpcs-ci" />
2018-12-23 09:39:27 +00:00
<antcall target= "phpcompat-ci" />
2018-02-26 21:35:04 +00:00
<antcall target= "phploc-ci" />
</parallel>
</target>
2018-12-21 11:24:07 +00:00
<target name= "clean" unless= "clean.done"
description="Cleanup build artifacts">
2018-02-26 21:35:04 +00:00
<delete dir= "${basedir}/build/api" />
<delete dir= "${basedir}/build/coverage" />
<delete dir= "${basedir}/build/logs" />
<delete dir= "${basedir}/build/pdepend" />
<property name= "clean.done" value= "true" />
</target>
<target name= "prepare" unless= "prepare.done" depends= "clean"
description="Prepare for build">
<mkdir dir= "${basedir}/build/api" />
<mkdir dir= "${basedir}/build/coverage" />
<mkdir dir= "${basedir}/build/logs" />
<mkdir dir= "${basedir}/build/pdepend" />
2018-12-23 09:39:27 +00:00
2018-02-26 21:35:04 +00:00
<property name= "prepare.done" value= "true" />
</target>
2018-12-23 09:39:27 +00:00
<target name= "composer"
description="Installing composer dependencies" depends="prepare">
<exec executable= "composer" failonerror= "true" >
<arg value= "install" />
<arg value= "--prefer-dist" />
<arg value= "--no-progress" />
</exec>
</target>
2018-02-26 21:35:04 +00:00
<target name= "lint" unless= "lint.done"
description="Perform syntax check of sourcecode files">
<apply executable= "php" taskname= "lint" >
<arg value= "-l" />
2018-12-21 10:31:41 +00:00
<fileset dir= "${basedir}/lib/Froxlor" >
2018-02-26 21:35:04 +00:00
<include name= "**/*.php" />
<modified />
</fileset>
<fileset dir= "${basedir}/tests" >
<include name= "**/*.php" />
<modified />
</fileset>
</apply>
<property name= "lint.done" value= "true" />
</target>
<target name= "phploc" unless= "phploc.done"
description="Measure project size using PHPLOC and print human readable output. Intended for usage on the command line.">
<exec executable= "${phploc}" taskname= "phploc" >
<arg value= "--count-tests" />
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
<arg path= "${basedir}/tests" />
</exec>
<property name= "phploc.done" value= "true" />
</target>
<target name= "phploc-ci" unless= "phploc.done" depends= "prepare"
description="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phploc}" taskname= "phploc" >
<arg value= "--count-tests" />
<arg value= "--log-csv" />
<arg path= "${basedir}/build/logs/phploc.csv" />
<arg value= "--log-xml" />
<arg path= "${basedir}/build/logs/phploc.xml" />
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
<arg path= "${basedir}/tests" />
</exec>
<property name= "phploc.done" value= "true" />
</target>
<target name= "pdepend" unless= "pdepend.done" depends= "prepare"
description="Calculate software metrics using PHP_Depend and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${pdepend}" taskname= "pdepend" >
<arg value= "--jdepend-xml=${basedir}/build/logs/jdepend.xml" />
2018-12-21 11:24:07 +00:00
<arg
value="--jdepend-chart=${basedir}/build/pdepend/dependencies.svg" />
2018-02-26 21:35:04 +00:00
<arg
value="--overview-pyramid=${basedir}/build/pdepend/overview-pyramid.svg" />
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
</exec>
<property name= "pdepend.done" value= "true" />
</target>
<target name= "phpmd" unless= "phpmd.done"
description="Perform project mess detection using PHPMD and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpmd}" taskname= "phpmd" >
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
<arg value= "text" />
<arg path= "${basedir}/phpmd.xml" />
</exec>
<property name= "phpmd.done" value= "true" />
</target>
<target name= "phpmd-ci" unless= "phpmd.done" depends= "prepare"
description="Perform project mess detection using PHPMD and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpmd}" taskname= "phpmd" >
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
<arg value= "xml" />
<arg path= "${basedir}/phpmd.xml" />
<arg value= "--reportfile" />
<arg path= "${basedir}/build/logs/pmd.xml" />
</exec>
<property name= "phpmd.done" value= "true" />
</target>
<target name= "phpcs" unless= "phpcs.done"
description="Find coding standard violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpcs}" taskname= "phpcs" >
<arg value= "--standard=${basedir}/phpcs.xml" />
<arg value= "--extensions=php" />
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
<arg path= "${basedir}/tests" />
</exec>
<property name= "phpcs.done" value= "true" />
</target>
<target name= "phpcs-ci" unless= "phpcs.done" depends= "prepare"
description="Find coding standard violations using PHP_CodeSniffer and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpcs}" output= "/dev/null" taskname= "phpcs" >
<arg value= "--report=checkstyle" />
2018-12-23 09:39:27 +00:00
<arg
value="--report-file=${basedir}/build/logs/checkstyle-standard.xml" />
2018-02-26 21:35:04 +00:00
<arg value= "--standard=${basedir}/phpcs.xml" />
<arg value= "--extensions=php" />
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
<arg path= "${basedir}/tests" />
</exec>
<property name= "phpcs.done" value= "true" />
</target>
2018-12-23 09:39:27 +00:00
<target name= "phpcompat" unless= "phpcompat.done"
depends="composer"
description="Find php violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpcs}" taskname= "phpcompat" >
<arg
line="--standard=PHPCompatibility --runtime-set testVersion 5.6 ${basedir}/lib/Froxlor ${basedir}/tests" />
</exec>
<property name= "phpcompat.done" value= "true" />
</target>
<target name= "phpcompat-ci" unless= "phpcompat.done"
depends="composer"
description="Find php violations using PHP_CodeSniffer and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpcs}" output= "/dev/null"
taskname="phpcompat">
<arg
line="--standard=PHPCompatibility --runtime-set testVersion 5.6 --report=checkstyle --report-file=${basedir}/build/logs/checkstyle-compat.xml ${basedir}/lib/Froxlor ${basedir}/tests" />
</exec>
<property name= "phpcompat.done" value= "true" />
</target>
2018-02-26 21:35:04 +00:00
<target name= "phpcpd" unless= "phpcpd.done"
description="Find duplicate code using PHPCPD and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpcpd}" taskname= "phpcpd" >
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
</exec>
<property name= "phpcpd.done" value= "true" />
</target>
<target name= "phpcpd-ci" unless= "phpcpd.done" depends= "prepare"
description="Find duplicate code using PHPCPD and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpcpd}" taskname= "phpcpd" >
<arg value= "--log-pmd" />
<arg path= "${basedir}/build/logs/pmd-cpd.xml" />
2018-12-21 10:31:41 +00:00
<arg path= "${basedir}/lib/Froxlor" />
2018-02-26 21:35:04 +00:00
</exec>
<property name= "phpcpd.done" value= "true" />
</target>
2019-06-06 08:18:03 +00:00
<target name= "phpunit-prepare" unless= "phpunit-prepare.done" depends= "composer"
description="prepare xdebug unit tests">
<exec executable= "${phpunit}" resultproperty= "result.phpunit-prepare"
taskname="phpunit">
<arg value= "--configuration" />
<arg path= "${basedir}/phpunit.xml" />
<arg value= "--dump-xdebug-filter" />
<arg path= "${basedir}/tests/xdebug-filter.php" />
</exec>
<property name= "phpunit-prepare.done" value= "true" />
</target>
<target name= "phpunit" unless= "phpunit.done" depends= "phpunit-prepare"
2018-02-26 21:35:04 +00:00
description="Run unit tests with PHPUnit">
2019-07-29 14:29:39 +00:00
<exec executable= "${phpunit}" failonerror= "true" resultproperty= "result.phpunit"
2018-02-26 21:35:04 +00:00
taskname="phpunit">
<arg value= "--configuration" />
<arg path= "${basedir}/phpunit.xml" />
2018-02-27 17:07:43 +00:00
<arg value= "--testsuite" />
<arg value= "froxlor" />
2019-06-06 08:18:03 +00:00
<arg value= "--prepend" />
<arg path= "${basedir}/tests/xdebug-filter.php" />
2018-02-26 21:35:04 +00:00
</exec>
<property name= "phpunit.done" value= "true" />
</target>
<target name= "phpunit-no-coverage" unless= "phpunit.done"
2018-12-23 09:39:27 +00:00
depends="composer"
2018-02-26 21:35:04 +00:00
description="Run unit tests with PHPUnit (without generating code coverage reports)">
2021-07-17 12:14:35 +00:00
<exec executable= "${phpunit}" failonerror= "true" resultproperty= "result.phpunit"
2018-12-21 11:24:07 +00:00
taskname="phpunit">
2018-02-26 21:35:04 +00:00
<arg value= "--configuration" />
<arg path= "${basedir}/phpunit.xml" />
2018-02-27 17:07:43 +00:00
<arg value= "--testsuite" />
<arg value= "froxlor" />
2018-02-26 21:35:04 +00:00
<arg value= "--no-coverage" />
</exec>
<property name= "phpunit.done" value= "true" />
</target>
<target name= "-check-failure" >
<fail message= "PHPUnit did not finish successfully" >
<condition >
<not >
<equals arg1= "${result.phpunit}" arg2= "0" />
</not>
</condition>
</fail>
</target>
</project>