This is an automated email from the ASF dual-hosted git repository. jaikiran pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ant.git
The following commit(s) were added to refs/heads/master by this push: new 7efd6d0 bz-64912, bz-64790 Fix regression in javac task when using arguments file 7efd6d0 is described below commit 7efd6d0c4f62a39df452cc6e834a8e02f1e7f6ad Author: Jaikiran Pai <jaiki...@apache.org> AuthorDate: Wed Dec 9 10:21:16 2020 +0530 bz-64912, bz-64790 Fix regression in javac task when using arguments file --- CONTRIBUTORS | 1 + WHATSNEW | 4 ++++ contributors.xml | 4 ++++ .../taskdefs/compilers/DefaultCompilerAdapter.java | 5 ++++- src/tests/antunit/taskdefs/javac-test.xml | 20 ++++++++++++++++++++ 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 5b9639b..9d06fb7 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -427,6 +427,7 @@ Tim Stephenson Tim Whittington Timoteo Ohara Timothy Gerard Endres +TJ Rothwell Tom Ball Tom Brus Tom Cunningham diff --git a/WHATSNEW b/WHATSNEW index 4b01a53..bc08e16 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -7,6 +7,10 @@ Fixed bugs: * SCP (with sftp=true) task would fail if fetching file located in root directory Bugzilla Report 64742 + * javac task would fail if the arguments file it (internally) created didn't quote + the # character. This has now been fixed. + Bugzilla Reports 64912, 64790 + Other changes: -------------- diff --git a/contributors.xml b/contributors.xml index bbdb03c..a2969b5 100644 --- a/contributors.xml +++ b/contributors.xml @@ -1761,6 +1761,10 @@ <last>Endres</last> </name> <name> + <first>TJ</first> + <last>Rothwell</last> + </name> + <name> <first>Tom</first> <last>Ball</last> </name> diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java index 7b37a58..b5227f5 100644 --- a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java +++ b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java @@ -23,6 +23,7 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Optional; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -67,6 +68,8 @@ public abstract class DefaultCompilerAdapter protected static final String lSep = StringUtils.LINE_SEP; // CheckStyle:ConstantNameCheck ON + private static final Pattern JAVAC_ARG_FILE_CHARS_TO_QUOTE = Pattern.compile("[ #]"); // space or # character + protected Path src; protected File destDir; protected String encoding; @@ -549,7 +552,7 @@ public abstract class DefaultCompilerAdapter try (BufferedWriter out = new BufferedWriter(new FileWriter(tmpFile))) { for (int i = firstFileName; i < args.length; i++) { - if (quoteFiles && args[i].contains(" ")) { + if (quoteFiles && JAVAC_ARG_FILE_CHARS_TO_QUOTE.matcher(args[i]).find()) { args[i] = args[i].replace(File.separatorChar, '/'); out.write("\"" + args[i] + "\""); diff --git a/src/tests/antunit/taskdefs/javac-test.xml b/src/tests/antunit/taskdefs/javac-test.xml index cdd8382..ab5e3eb 100644 --- a/src/tests/antunit/taskdefs/javac-test.xml +++ b/src/tests/antunit/taskdefs/javac-test.xml @@ -193,6 +193,26 @@ public class Adapter implements CompilerAdapter { <au:assertLogContains text="adapter called" /> </target> + <target name="testSpaceCharInArgs" depends="setup" description="https://bz.apache.org/bugzilla/show_bug.cgi?id=64912"> + <delete dir="${javac-dir}/src" /> + <mkdir dir="${javac-dir}/src" /> + <echo file="${javac-dir}/src/Foo.java"> + public class Foo { } + </echo> + <mkdir dir="${output}/foo with space bar" /> + <javac srcdir="${javac-dir}/src" destdir="${output}/foo with space bar" fork="yes" failOnError="true"/> + </target> + + <target name="test#CharInArgs" depends="setup" description="https://bz.apache.org/bugzilla/show_bug.cgi?id=64912"> + <delete dir="${javac-dir}/src" /> + <mkdir dir="${javac-dir}/src" /> + <echo file="${javac-dir}/src/Foo.java"> + public class Foo { } + </echo> + <mkdir dir="${output}/foo#bar" /> + <javac srcdir="${javac-dir}/src" destdir="${output}/foo#bar" fork="yes" failOnError="true"/> + </target> + <target name="testCompilerAsNestedElement" depends="-create-javac-adapter"> <componentdef classname="org.example.Adapter" name="myjavac"> <classpath location="${resources}" />