2010-05-08 21:47:19 +00:00
<?xml version="1.0"?>
2020-05-07 23:17:51 +02:00
<project name= "Arduino PDE" xmlns:if= "ant:if" xmlns:unless= "ant:unless" default= "build" >
2012-12-04 13:38:02 +01:00
2013-02-19 13:40:10 +01:00
<path id= "class.path" >
<fileset dir= "lib" >
<include name= "*.jar" />
</fileset>
<pathelement path= "${env.JAVA_HOME}/lib/tools.jar" />
2014-09-24 11:35:30 +02:00
<pathelement path= "../arduino-core/arduino-core.jar" />
2013-02-19 13:40:10 +01:00
</path>
<path id= "class.path.test" >
<path refid= "class.path" />
<pathelement location= "bin/" />
2013-02-20 10:02:17 +01:00
<fileset dir= "test-lib" >
<include name= "*.jar" />
</fileset>
2013-02-19 13:40:10 +01:00
</path>
2010-05-08 21:47:19 +00:00
<target name= "clean" description= "Clean the build directories" >
<delete dir= "bin" />
2012-12-04 13:43:21 +01:00
<delete dir= "test-bin" />
2010-05-08 21:47:19 +00:00
<delete file= "pde.jar" />
</target>
<target name= "compile" description= "Compile sources" >
2014-09-24 11:35:30 +02:00
<condition property= "core-built" >
<available file= "../arduino-core/arduino-core.jar" />
</condition>
<fail unless= "core-built" message= "Please build the Arduino-core library first and make sure it sits in ../arduino-core/arduino-core.jar" />
2010-05-08 21:47:19 +00:00
<mkdir dir= "bin" />
<!-- ant seems to nuke ${java.home} for some reason, pointing at the JRE
subfolder instead of the actual JDK found at JAVA_HOME.
To avoid this, we grab the actual JAVA_HOME environment variable
and use that to specify the location of tools.jar. -->
<!-- if someone is better with ant please help clean this up -->
<property environment= "env" />
<property name= "java_home" value= "${env.JAVA_HOME}" />
<condition property= "linux" > <os family= "unix" /> </condition>
2012-12-04 13:38:02 +01:00
<fail if= "linux" unless= "java_home"
2010-05-08 21:47:19 +00:00
message="The JAVA_HOME variable must be set to the location of a full JDK. For instance, on Ubuntu Linux, this might be /usr/lib/jvm/java-6-sun." />
<condition property= "windows" > <os family= "windows" /> </condition>
2012-12-04 13:38:02 +01:00
<fail if= "windows" unless= "java_home"
2010-05-08 21:47:19 +00:00
message="The JAVA_HOME variable must be set to the location of a full JDK. For instance, on Windows, this might be c:\jdk1.6.0_18." />
2015-03-26 09:59:40 +01:00
<condition property= "work.dir" value= "../build/macosx/work/Arduino.app/Contents/Java/" >
2013-02-20 10:28:57 +01:00
<os family= "mac" />
</condition>
2013-02-20 10:56:48 +01:00
<condition property= "java.additional.library.path" value= "." >
2013-02-20 10:28:57 +01:00
<os family= "mac" />
</condition>
2013-02-20 10:02:17 +01:00
<condition property= "work.dir" value= "../build/windows/work/" >
<os family= "windows" />
</condition>
2013-02-20 10:56:48 +01:00
<condition property= "java.additional.library.path" value= "." >
2013-02-20 10:28:57 +01:00
<os family= "windows" />
</condition>
<condition property= "work.dir" value= "../build/linux/work/" >
<os family= "unix" />
</condition>
2013-02-20 10:56:48 +01:00
<condition property= "java.additional.library.path" value= "lib" >
<os family= "unix" />
</condition>
2013-02-20 10:02:17 +01:00
2013-01-28 16:33:18 +01:00
<!--
<dirname property= "blah" file= "${java.home}" />
<echo message= "here! ${java.home}/lib/tools.jar or there: ${blah}" />
<echo message= "override ${env.JAVA_HOME}/lib/tools.jar" />
<fail />
-->
2015-06-16 09:24:34 +02:00
<javac source= "1.8" target= "1.8"
2012-12-04 13:38:02 +01:00
srcdir="src"
destdir="bin"
2010-05-08 21:47:19 +00:00
encoding="UTF-8"
includeAntRuntime="false"
2010-11-27 11:54:07 -06:00
debug="true"
2013-02-19 13:40:10 +01:00
classpathref="class.path" />
2019-07-05 10:02:07 +02:00
<!-- If you want to add files in the jars -->
<copy todir= "bin" overwrite= "true" verbose= "true" >
<fileset dir= "src" includes= "log4j2.xml" />
</copy>
2010-05-08 21:47:19 +00:00
</target>
2012-12-04 13:38:02 +01:00
2012-12-04 13:43:21 +01:00
<target name= "test" depends= "compile" description= "Runs the test" >
2012-12-04 13:38:02 +01:00
<mkdir dir= "test-bin" />
2015-06-16 09:24:34 +02:00
<javac source= "1.8" target= "1.8"
2012-12-04 13:38:02 +01:00
srcdir="test"
destdir="test-bin"
encoding="UTF-8"
includeAntRuntime="false"
2013-02-19 13:40:10 +01:00
debug="true"
classpathref="class.path.test">
2012-12-04 13:38:02 +01:00
</javac>
<copy todir= "test-bin" overwrite= "true" verbose= "true" >
<fileset dir= "test" includes= "**/*.zip" />
<fileset dir= "test" includes= "**/*.txt" />
2013-02-19 13:43:28 +01:00
<fileset dir= "test" includes= "**/*.properties" />
2013-10-22 17:51:54 +02:00
<fileset dir= "test" includes= "**/*.ino" />
2015-04-30 11:17:27 +02:00
<fileset dir= "test" includes= "**/*.json*" />
<fileset dir= "test" includes= "**/*.key" />
2015-06-18 12:22:55 +02:00
<fileset dir= "test" includes= "**/*.hex" />
2015-08-13 11:09:31 +02:00
<fileset dir= "test" includes= "**/*.pac" />
2012-12-04 13:38:02 +01:00
</copy>
2020-05-05 21:52:39 +02:00
<!-- XML and TXT reports will be written here -->
<property name= "test.reportdir" value= "test-bin/results" />
<!-- Summary HTML report will be written here -->
<property name= "test.htmldir" value= "test-bin/results/html" />
<!-- Remove the reportdir, so the HTML report only includes tests from this run -->
<delete dir= "${test.reportdir}" />
<mkdir dir= "${test.reportdir}" />
<mkdir dir= "${test.htmldir}" />
<!-- Sanity check: when single - test - methods is set, but single - test - class is not, raise an error -->
<fail message= "Need single-test-class if single-test-methods is set" if= "single-test-methods" unless= "single-test-class" />
<junit printsummary= "yes" dir= "${work.dir}" fork= "true" showoutput= "no" failureproperty= "test.failed" >
2013-02-20 10:56:48 +01:00
<jvmarg value= "-Djava.library.path=${java.additional.library.path}" />
2015-02-03 17:00:51 +01:00
<jvmarg value= "-DWORK_DIR=." />
2015-05-12 15:22:56 +02:00
<jvmarg value= "-ea" />
2012-12-04 13:38:02 +01:00
<classpath >
<pathelement location= "bin" />
<pathelement location= "test-bin" />
2016-11-03 15:01:36 +02:00
<pathelement location= "${work.dir}/lib/jna-4.2.2.jar" />
<pathelement location= "${work.dir}/lib/jna-platform-4.2.2.jar" />
2013-02-19 13:40:10 +01:00
<path refid= "class.path.test" />
2012-12-04 13:38:02 +01:00
</classpath>
2020-05-05 21:52:39 +02:00
<!-- Write XML files (for report - generation) and TXT files (for manual review) for every test class -->
<formatter type= "plain" />
2012-12-04 13:43:21 +01:00
<formatter type= "xml" />
2020-05-05 21:52:39 +02:00
<!-- Print full details to stdout when running a single test -->
<formatter type= "plain" usefile= "false" if= "single-test-class" />
<!-- When running all tests, print details for failing tests and a summary for each test class (printsummary=yes above) -->
<formatter type= "brief" usefile= "false" unless= "single-test-class" />
<!-- When both single - test - class and single - test - methods are specified, pass both to unit -->
<test name= "${single-test-class}" methods= "${single-test-methods}" todir= "${test.reportdir}" if= "single-test-methods" />
<!-- When just single - test - class is specified, omit methods to run the entire class -->
<test name= "${single-test-class}" todir= "${test.reportdir}" if= "single-test-class" unless= "single-test-methods" />
<!-- When neither are specified, run *all* testcases -->
<batchtest fork= "yes" todir= "${test.reportdir}" unless= "single-test-class" >
2012-12-04 13:38:02 +01:00
<fileset dir= "test" >
<include name= "**/*Test.java" />
2013-02-20 10:02:17 +01:00
<exclude name= "**/Abstract*.java" />
2012-12-04 13:38:02 +01:00
</fileset>
</batchtest>
</junit>
2020-05-05 21:52:39 +02:00
<!-- Convert generated XML reports to browsable HTML -->
<junitreport todir= "${test.reportdir}" >
<fileset dir= "${test.reportdir}" >
<include name= "TEST-*.xml" />
</fileset>
2020-05-07 23:17:51 +02:00
<!-- Create a browsable frame - based HTML -->
<report format= "frames" todir= "${test.htmldir}" />
<!-- Also create a single - page version, to use as CI test result -->
<report format= "noframes" todir= "${test.htmldir}" />
2020-05-05 21:52:39 +02:00
</junitreport>
<!-- Make these paths relative to user.dir, which is the current directory when invoking ant (so the resulting paths are relative to the environment of the user. -->
<property name= "test.htmldir.display" location= "${test.htmldir}" relative= "true" basedir= "${user.dir}" />
<property name= "test.reportdir.display" location= "${test.reportdir}" relative= "true" basedir= "${user.dir}" />
2020-05-07 23:17:51 +02:00
<echo unless:set= "running-from-github-action" message= "Detailed test results can be found in ${test.reportdir.display}" />
<echo unless:set= "running-from-github-action" message= "A browsable HTML summary is generated in ${test.htmldir.display}/index.html" />
<echo if:set= "running-from-github-action" message= "Detailed test results can be downloaded as an asset from this github action. Easiest to view is the single-file version in junit-noframes.html. Alternatively, the multi-file version can be viewed from index.html and includes full stdout/stderr output of tests." />
2020-05-05 21:52:39 +02:00
2020-01-31 16:00:04 +01:00
<fail if= "test.failed" />
2012-12-04 13:38:02 +01:00
</target>
2013-02-19 15:07:16 +01:00
<target name= "build" depends= "compile" description= "Build PDE" >
2010-05-08 21:47:19 +00:00
<jar basedir= "bin" destfile= "pde.jar" />
</target>
</project>