build.xml 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <project name="ext" default=".help">
  3. <!--
  4. The build-impl.xml file imported here contains the guts of the build process. It is
  5. a great idea to read that file to understand how the process works, but it is best to
  6. limit your changes to this file.
  7. -->
  8. <script language="javascript">
  9. <![CDATA[
  10. var dir = project.getProperty("basedir"),
  11. cmdDir = project.getProperty("cmd.dir"),
  12. cmdLoaded = project.getReference("senchaloader");
  13. if (!cmdLoaded) {
  14. function echo(message, file) {
  15. var e = project.createTask("echo");
  16. e.setMessage(message);
  17. if (file) {
  18. e.setFile(file);
  19. }
  20. e.execute();
  21. };
  22. if (!cmdDir) {
  23. function exec(args) {
  24. var process = java.lang.Runtime.getRuntime().exec(args),
  25. input = new java.io.BufferedReader(new java.io.InputStreamReader(process.getInputStream())),
  26. headerFound = false,
  27. line;
  28. while (line = input.readLine()) {
  29. line = line + '';
  30. java.lang.System.out.println(line);
  31. if (line.indexOf("Sencha Cmd") > -1) {
  32. headerFound = true;
  33. }
  34. else if (headerFound && !cmdDir) {
  35. cmdDir = line;
  36. project.setProperty("cmd.dir", cmdDir);
  37. }
  38. }
  39. process.waitFor();
  40. return !!cmdDir;
  41. }
  42. if (!exec(["sencha", "which"])) {
  43. var tmpFile = "tmp.sh";
  44. echo("source ~/.bash_profile; sencha " + whichArgs.join(" "), tmpFile);
  45. exec(["/bin/sh", tmpFile]);
  46. new java.io.File(tmpFile)['delete']();
  47. }
  48. }
  49. }
  50. if (cmdDir && !project.getTargets().containsKey("init-cmd")) {
  51. var importTask = project.createTask("import");
  52. importTask.setOwningTarget(self.getOwningTarget());
  53. importTask.setLocation(self.getLocation());
  54. importTask.setFile(cmdDir + "/ant/build/package/build-impl.xml");
  55. importTask.execute();
  56. }
  57. ]]>
  58. </script>
  59. <!--
  60. The following targets can be provided to inject logic before and/or after key steps
  61. of the build process:
  62. The "init-local" target is used to initialize properties that may be personalized
  63. for the local machine.
  64. <target name="-before-init-local"/>
  65. <target name="-after-init-local"/>
  66. The "clean" target is used to clean build output from the build.dir.
  67. <target name="-before-clean"/>
  68. <target name="-after-clean"/>
  69. The general "init" target is used to initialize all other properties, including
  70. those provided by Sencha Cmd.
  71. <target name="-before-init"/>
  72. <target name="-after-init"/>
  73. The "build" target performs the call to Sencha Cmd to build the application.
  74. <target name="-before-build"/>
  75. <target name="-after-build"/>
  76. -->
  77. <target name="-before-init">
  78. <property name="pkg.excludes"
  79. value="all-licenses/**/*,
  80. examples/**/*,
  81. welcome/**/*,
  82. build/welcome/**/*,
  83. build/classic/**/*,
  84. build/modern/**/*,
  85. build/packages/**/*,
  86. build/index.html,
  87. release-notes-*,
  88. build/temp/**/*,
  89. build/examples/**/*,
  90. ext-all*.js,
  91. ext-debug.js,
  92. ext.js,
  93. ext-modern*.js,
  94. packages/*/test/**/*,
  95. test_internal/**/*,
  96. bootstrap*.js"/>
  97. <condition property="repo.dev.mode" value="true">
  98. <available file="${basedir}/../attic" type="dir"/>
  99. </condition>
  100. </target>
  101. <target name="-after-init" depends="apply-production-settings"/>
  102. <macrodef name="x-set-license">
  103. <attribute name="license" default="${ext.license.name}"/>
  104. <attribute name="version" default="${build.version}"/>
  105. <sequential>
  106. <replaceregexp replace="ext.license.name=@{license}"
  107. file="${basedir}/cmd/sencha.cfg" byline="true">
  108. <regexp pattern="ext.license.name=(.*)"/>
  109. </replaceregexp>
  110. <replaceregexp replace="$ext-version: '@{version}'"
  111. file="${package.dir}/classic/theme-base/sass/etc/all.scss">
  112. <regexp pattern="\$ext-version: '(.*)'"/>
  113. </replaceregexp>
  114. <replaceregexp replace="$ext-version: '@{version}'"
  115. file="${package.dir}/modern/theme-base/sass/etc/all.scss">
  116. <regexp pattern="\$ext-version: '(.*)'"/>
  117. </replaceregexp>
  118. <local name="watermark.setting"/>
  119. <condition property="watermark.beta.setting" value="$ext-beta: true !default;">
  120. <equals arg1="@{license}" arg2="beta"/>
  121. </condition>
  122. <property name="watermark.beta.setting" value="$ext-beta: false !default;"/>
  123. <condition property="watermark.setting" value="$ext-trial: true !default;">
  124. <equals arg1="@{license}" arg2="trial"/>
  125. </condition>
  126. <property name="watermark.setting" value="$ext-trial: false !default;"/>
  127. <replaceregexp replace="${watermark.setting}"
  128. file="${package.dir}/classic/theme-base/sass/etc/all.scss">
  129. <regexp pattern="\$ext-trial: (.*) !default;"/>
  130. </replaceregexp>
  131. <replaceregexp replace="${watermark.setting}"
  132. file="${package.dir}/modern/theme-base/sass/etc/all.scss">
  133. <regexp pattern="\$ext-trial: (.*) !default;"/>
  134. </replaceregexp>
  135. <replaceregexp replace="${watermark.beta.setting}"
  136. file="${package.dir}/classic/theme-base/sass/etc/all.scss">
  137. <regexp pattern="\$ext-beta: (.*) !default;"/>
  138. </replaceregexp>
  139. <replaceregexp replace="${watermark.beta.setting}"
  140. file="${package.dir}/modern/theme-base/sass/etc/all.scss">
  141. <regexp pattern="\$ext-beta: (.*) !default;"/>
  142. </replaceregexp>
  143. <if>
  144. <available file="${basedir}/all-licenses/@{license}" type="dir"/>
  145. <then>
  146. <copy todir="${basedir}/licenses" overwrite="true">
  147. <fileset dir="${basedir}/all-licenses/@{license}" includes="**/*"/>
  148. </copy>
  149. </then>
  150. </if>
  151. </sequential>
  152. </macrodef>
  153. <target name="beta" depends="init">
  154. <x-set-license license="beta"/>
  155. </target>
  156. <target name="commercial" depends="init">
  157. <x-set-license license="commercial"/>
  158. </target>
  159. <target name="gpl" depends="init">
  160. <x-set-license license="gpl"/>
  161. </target>
  162. <target name="trial" depends="init">
  163. <x-set-license license="trial"/>
  164. </target>
  165. <target name="dev" depends="init">
  166. <x-set-license license="dev"/>
  167. </target>
  168. <target name="init-version-properties" if="repo.dev.mode">
  169. <property name="build.number" value="12345"/>
  170. <property name="version.major" value="6"/>
  171. <property name="version.minor" value="0"/>
  172. <property name="version.patch" value="0"/>
  173. <property name="version.build" value="${build.number}"/>
  174. <property name="version.release" value="${version.major}.${version.minor}.${version.patch}"/>
  175. <property name="version.full" value="${version.release}.${version.build}"/>
  176. <property name="ext.version.number" value="${version.full}"/>
  177. <property name="ext.license.name" value="dev"/>
  178. </target>
  179. <target name="detect-git-hash" if="repo.dev.mode">
  180. <x-git-current-hash property="git.current.hash"/>
  181. </target>
  182. <target name="generate-version-properties"
  183. depends="detect-git-hash,init-version-properties"
  184. if="repo.dev.mode">
  185. <propertyfile file="${package.dir}/version.properties">
  186. <entry operation="="
  187. key="version.major"
  188. value="${version.major}"/>
  189. <entry operation="="
  190. key="version.minor"
  191. value="${version.minor}"/>
  192. <entry operation="="
  193. key="version.patch"
  194. value="${version.patch}"/>
  195. <entry operation="="
  196. key="version.build"
  197. value="${version.build}"/>
  198. <entry operation="="
  199. key="version.release"
  200. value="${version.release}"/>
  201. <entry operation="="
  202. key="version.full"
  203. value="${version.full}"/>
  204. <entry operation="="
  205. key="git.current.hash"
  206. value="${git.current.hash}"/>
  207. </propertyfile>
  208. </target>
  209. <target name="load-version-properties" depends="generate-version-properties">
  210. <property file="${package.dir}/version.properties"/>
  211. </target>
  212. <target name="set-build-production">
  213. <property name="build.production" value="1"/>
  214. <replace file="${basedir}/package.json"
  215. token="&quot;local&quot;: true"
  216. value="&quot;local&quot;: false"/>
  217. </target>
  218. <target name="apply-production-settings" if="build.production">
  219. <!--<x-property-file file="${package.dir}/.sencha/package/sencha.cfg">-->
  220. <!--<entry type="string" key="skip.examples" operation="=" value="1"/>-->
  221. <!--</x-property-file>-->
  222. </target>
  223. <target name="copy-license" depends="init,load-version-properties">
  224. <tstamp>
  225. <!-- sets DSTAMP=yyyyMMdd, TSTAMP=hhmm -->
  226. <format property="THIS_YEAR" pattern="yyyy"/>
  227. <format property="tstamp.datetime" pattern="yyyy-MM-dd HH:mm:ss"/>
  228. <format property="tstamp.pretty" pattern="MMMM d, yyyy"/>
  229. </tstamp>
  230. <property name="product.name" value="Ext JS ${package.version}"/>
  231. <!--
  232. Ext JS is distrubted under GPL and Commercial licenses as well as a Beta license.
  233. This target allows the package build to be leveraged while swapping out the files
  234. with license information.
  235. -->
  236. <condition property="ext.license"
  237. value="${package.dir}/../all-licenses/${ext.license.name}">
  238. <available file="${package.dir}/../all-licenses/${ext.license.name}" type="dir"/>
  239. </condition>
  240. <property name="ext.license" value="${package.licenses.dir}"/>
  241. <echo> loading file-header.txt </echo>
  242. <!-- Load the appropriate license file header -->
  243. <local name="file-header"/>
  244. <loadfile property="file-header" srcfile="${ext.license}/file-header.txt">
  245. <filterchain>
  246. <expandproperties/>
  247. </filterchain>
  248. </loadfile>
  249. <echo> expanding file-header.txt </echo>
  250. <copy file="${ext.license}/file-header.txt"
  251. tofile="${package.licenses.dir}/file-header.txt.final"
  252. overwrite="true">
  253. <filterchain>
  254. <expandproperties/>
  255. </filterchain>
  256. </copy>
  257. <rename src="${package.licenses.dir}/file-header.txt.final"
  258. dest="${package.licenses.dir}/file-header.txt"
  259. replace="true"/>
  260. <!--
  261. Create a JS/CSS compatible file with header inside a "/* */" block.
  262. -->
  263. <echo file="${package.licenses.dir}/file-header.js"
  264. message="/*&#10;${file-header}&#10;*/&#10;"/>
  265. <fixcrlf file="${package.licenses.dir}/file-header.js"/>
  266. <!--
  267. Copy in the appropriate license.txt file
  268. -->
  269. <mkdir dir="${package.licenses.dir}"/>
  270. <copy file="${ext.license}/license.txt"
  271. tofile="${package.licenses.dir}/license.txt.final"
  272. overwrite="true">
  273. <filterchain>
  274. <expandproperties/>
  275. </filterchain>
  276. </copy>
  277. <rename src="${package.licenses.dir}/license.txt.final"
  278. dest="${package.licenses.dir}/license.txt"
  279. replace="true"/>
  280. <copy file="${package.licenses.dir}/license.txt"
  281. tofile="${package.dir}/license.txt" overwrite="true"/>
  282. <copy file="${package.licenses.dir}/license-include.txt"
  283. tofile="${package.dir}/license-include.txt" overwrite="true"
  284. failonerror="false"/>
  285. <!--
  286. Lay down the file header so we can append the rest from the compiler.
  287. -->
  288. <for list="ext,ext-all,ext-all-rtl,ext-modern,ext-modern-all"
  289. param="file">
  290. <sequential>
  291. <for list=".js,-debug.js" param="sfx">
  292. <sequential>
  293. <concat destfile="${build.dir}/@{file}@{sfx}.tmp" overwrite="true">
  294. <fileset file="${package.licenses.dir}/file-header.js"/>
  295. <fileset file="${build.dir}/@{file}@{sfx}"/>
  296. </concat>
  297. <delete>
  298. <fileset file="${build.dir}/@{file}@{sfx}"/>
  299. </delete>
  300. <move file="${build.dir}/@{file}@{sfx}.tmp" tofile="${build.dir}/@{file}@{sfx}"/>
  301. </sequential>
  302. </for>
  303. </sequential>
  304. </for>
  305. </target>
  306. <target name="bootstrap-classic" depends="init"
  307. description="Build Ext JS Bootstrap (Classic)">
  308. <x-echo>=========================================</x-echo>
  309. <x-echo>Building framework bootstrap (Classic)</x-echo>
  310. <x-echo>=========================================</x-echo>
  311. <x-sencha-command
  312. dir="${package.dir}/classic/classic"
  313. inheritall="false">
  314. ant
  315. bootstrap
  316. </x-sencha-command>
  317. </target>
  318. <target name="bootstrap-modern" depends="init"
  319. description="Build Ext JS Bootstrap (Modern)">
  320. <x-echo>=========================================</x-echo>
  321. <x-echo>Building framework bootstrap (Modern)</x-echo>
  322. <x-echo>=========================================</x-echo>
  323. <x-sencha-command
  324. dir="${package.dir}/modern/modern"
  325. inheritall="false">
  326. ant
  327. bootstrap
  328. </x-sencha-command>
  329. </target>
  330. <target name="bootstrap" depends="bootstrap-classic,bootstrap-modern"
  331. description="Build Ext JS Bootstrap"/>
  332. <target name="build-examples-index">
  333. <copy todir="${build.dir}/examples/" overwrite="true">
  334. <fileset dir="${basedir}/examples/">
  335. <include name="index.html"/>
  336. <include name="main.css"/>
  337. <include name="main.js"/>
  338. <include name="examples.js"/>
  339. </fileset>
  340. </copy>
  341. <copy todir="${build.dir}/examples/resources/" overwrite="true">
  342. <fileset dir="${basedir}/examples/resources/" includes="**/*"/>
  343. </copy>
  344. </target>
  345. <target name="build-non-app-examples">
  346. <for param="example">
  347. <dirset dir="${package.dir}/examples/classic" includes="*"/>
  348. <sequential>
  349. <if>
  350. <not>
  351. <available file="@{example}/app.json"/>
  352. </not>
  353. <then>
  354. <local name="example.name"/>
  355. <basename property="example.name" file="@{example}"/>
  356. <copy todir="${build.dir}/examples/classic/${example.name}" overwrite="true">
  357. <fileset dir="@{example}" includes="**/*"/>
  358. </copy>
  359. </then>
  360. </if>
  361. </sequential>
  362. </for>
  363. </target>
  364. <target name="prep-build-folder" depends="init,build-examples-index,build-non-app-examples">
  365. <copy todir="${build.dir}/welcome" overwrite="true">
  366. <fileset dir="${basedir}/welcome"/>
  367. </copy>
  368. <copy file="${basedir}/index.html"
  369. tofile="${build.dir}/index.html"
  370. overwrite="true"/>
  371. <replace file="${build.dir}/index.html"
  372. token="build/examples/classic/index.html"
  373. value="examples/classic/index.html"/>
  374. <replace file="${build.dir}/examples/classic/shared/include-ext.js"
  375. token="Ext.devMode = 2;"
  376. value="Ext.devMode = 0;"/>
  377. <replace file="${build.dir}/examples/classic/shared/include-ext.js"
  378. token="Ext.devMode = 1;"
  379. value="Ext.devMode = 0;"/>
  380. </target>
  381. <target name="-before-pkg" depends="init,copy-license">
  382. <if>
  383. <available file="${basedir}/release-notes.html"/>
  384. <then>
  385. <copy file="${basedir}/release-notes.html"
  386. tofile="${build.dir}/release-notes.html"
  387. overwrite="true"/>
  388. </then>
  389. </if>
  390. </target>
  391. <!--
  392. ******************************************************************
  393. Targets to easily run builds for specific items
  394. ******************************************************************
  395. -->
  396. <target name="build-classic"
  397. description="Build the Classic Theme (needed by unit tests)"
  398. depends="init">
  399. <x-sencha-command dir="${package.dir}/classic/theme-classic" inheritall="false">
  400. package
  401. build
  402. </x-sencha-command>
  403. </target>
  404. <target name="build-crisp"
  405. description="Build the Crisp Theme"
  406. depends="init">
  407. <x-sencha-command dir="${package.dir}/classic/theme-crisp" inheritall="false">
  408. package
  409. build
  410. </x-sencha-command>
  411. </target>
  412. <target name="build-gray"
  413. description="Build the Gray Theme"
  414. depends="init">
  415. <x-sencha-command dir="${package.dir}/classic/theme-gray" inheritall="false">
  416. package
  417. build
  418. </x-sencha-command>
  419. </target>
  420. <target name="build-neptune"
  421. description="Build the Neptune Theme"
  422. depends="init">
  423. <x-sencha-command dir="${package.dir}/classic/theme-neptune" inheritall="false">
  424. package
  425. build
  426. </x-sencha-command>
  427. </target>
  428. <target name="build-triton"
  429. description="Build the Triton Theme"
  430. depends="init">
  431. <x-sencha-command dir="${package.dir}/classic/theme-triton" inheritall="false">
  432. package
  433. build
  434. </x-sencha-command>
  435. </target>
  436. <target name="themes"
  437. description="Build all theme packages"
  438. depends="build-neptune,build-crisp,build-triton,build-classic,build-gray"/>
  439. <!--
  440. ******************************************************************
  441. Targets used to produce deployment builds
  442. ******************************************************************
  443. -->
  444. <target name="docs" depends="init" description="Builds docs for Ext JS and sub-packages">
  445. <mkdir dir="${package.build.dir}/docs"/>
  446. <exec executable="jsduck">
  447. <arg value="--output=${package.build.dir}/docs"/>
  448. <arg value="--config=${package.dir}/docs/config.json"/>
  449. </exec>
  450. </target>
  451. <!-- FIXME core should be the only package here, but we still have dependencies in the examples -->
  452. <property name="static.packages" value="core,amf,charts,soap"/>
  453. <target name="zip-impl" depends="init">
  454. <property name="staging.dir" value="${workspace.dir}/staging"/>
  455. <property name="display.version" value="${package.version}"/>
  456. <property name="folder.display.version" value="${display.version}"/>
  457. <property name="zip.display.version" value="${display.version}"/>
  458. <property name="ext.staging.dir" value="${staging.dir}/${package.name}-${folder.display.version}"/>
  459. <property name="ext.zip" value="${pkg.build.dir}/${package.name}-${zip.display.version}-${ext.license.name}.zip"/>
  460. <delete dir="${staging.dir}"/>
  461. <delete file="${ext.zip}"/>
  462. <mkdir dir="${ext.staging.dir}"/>
  463. <unzip src="${pkg.build.dir}/${pkg.file.name}" dest="${ext.staging.dir}"/>
  464. <copy todir="${ext.staging.dir}">
  465. <fileset dir="${package.dir}" includes="examples/**/*,build/examples/**/*"/>
  466. </copy>
  467. <copy todir="${ext.staging.dir}">
  468. <fileset dir="${package.dir}" includes="examples/**/*,build/examples/**/*"/>
  469. </copy>
  470. <if>
  471. <equals arg1="${repo.dev.mode}" arg2="true"/>
  472. <then>
  473. <copy todir="${ext.staging.dir}/.sencha/workspace">
  474. <fileset dir="${package.dir}/../deployment_workspace"
  475. includes="**/*"/>
  476. </copy>
  477. </then>
  478. </if>
  479. <copy todir="${ext.staging.dir}">
  480. <fileset dir="${package.dir}"
  481. includes="welcome/**/*,
  482. build/**/*,
  483. packages/core/test/specs*/**/*,
  484. packages/core/test/resources/**/*,
  485. packages/charts/test/specs*/**/*,
  486. classic/classic/test/*.*,
  487. classic/classic/test/resources/**/*,
  488. classic/classic/test/local/**/*,
  489. classic/classic/test/specs*/**/*,
  490. modern/modern/test/*.*,
  491. modern/modern/test/local/**/*,
  492. modern/modern/test/specs*/**/*"/>
  493. </copy>
  494. <delete dir="${ext.staging.dir}/build/temp"/>
  495. <delete dir="${ext.staging.dir}/build/ext"/>
  496. <replace file="${ext.staging.dir}/examples/classic/shared/include-ext.js"
  497. token="Ext.devMode = 2;"
  498. value="Ext.devMode = 1;"/>
  499. <zip destfile="${ext.zip}" basedir="${staging.dir}" level="9"/>
  500. </target>
  501. <target name="zip" depends="set-build-production,build,prep-build-folder,zip-impl"
  502. description="Build package and create distribution ZIP file">
  503. </target>
  504. <target name="sass-rebuild" depends="init" if="false">
  505. <x-process-sub-packages>
  506. <x-sub-build dir="@{pkg-dir}"
  507. target="sass"
  508. inherit-version="${build.subpkgs.inherit.version}"/>
  509. </x-process-sub-packages>
  510. <x-process-examples>
  511. <x-sencha-command dir="@{example-dir}" inheritall="false">
  512. app
  513. each
  514. ant
  515. sass
  516. </x-sencha-command>
  517. </x-process-examples>
  518. </target>
  519. <target name="quick-build" depends="init,js,prep-build-folder,pkg"/>
  520. <target name="zip-only" depends="quick-build,zip-impl">
  521. </target>
  522. <macrodef name="x-sandbox">
  523. <attribute name="file"/>
  524. <attribute name="outfile" default="@{file}"/>
  525. <attribute name="jsPrefix"/>
  526. <attribute name="cssPrefix"/>
  527. <sequential>
  528. <concat destfile="@{outfile}">
  529. <header trimleading="yes" filtering="no">
  530. (function(Ext) {
  531. Ext.sandboxName = '@{jsPrefix}';
  532. Ext.isSandboxed = true;
  533. Ext.buildSettings = { baseCSSPrefix: "@{cssPrefix}", scopeResetCSS: true };
  534. </header>
  535. <filelist files="@{file}"/>
  536. <footer trimleading="yes" filtering="no">
  537. })(this.@{jsPrefix} || (this.@{jsPrefix} = {}));
  538. </footer>
  539. </concat>
  540. </sequential>
  541. </macrodef>
  542. <target name="-after-build">
  543. <for list="ext-all,ext-all-rtl,ext-modern-all" param="file">
  544. <sequential>
  545. <for list=".js,-debug.js" param="sfx">
  546. <sequential>
  547. <x-sandbox file="${build.dir}/@{file}@{sfx}"
  548. outfile="${build.dir}/@{file}-sandbox@{sfx}"
  549. jsPrefix="Ext6"
  550. cssPrefix="x6-"/>
  551. </sequential>
  552. </for>
  553. </sequential>
  554. </for>
  555. </target>
  556. <!--
  557. ******************************************************************
  558. Targets for Test
  559. ******************************************************************
  560. -->
  561. <!--
  562. <target name="test-ext" depends="bootstrap,build-classic,test-run"/>
  563. <target name="test-all" depends="test-ext"/>
  564. <target name="coverage-run" depends="init">
  565. <x-sencha-command dir="${package.dir}">
  566. <![CDATA[
  567. config
  568. -prop
  569. cmd-test.specs.test-json=${package.dir}/test/specs/coverageTest.json
  570. -prop
  571. cmd-test.coverage.results.dir=${workspace.dir}/test/coverage-results
  572. then
  573. package
  574. test
  575. run
  576. ]]>
  577. </x-sencha-command>
  578. </target>
  579. <target name="coverage-report" depends="init">
  580. <x-shell dir="${workspace.dir}/test">
  581. node istanbul_report.js ${workspace.dir}/test/coverage-results ${workspace.dir}
  582. </x-shell>
  583. </target>
  584. <target name="coverage" depends="coverage-run,coverage-report"/>
  585. -->
  586. </project>