Browse Source

Merge branch '1.9.x'

master
Stefan Bodewig 7 years ago
parent
commit
f11bc4eaa3
3 changed files with 36 additions and 2 deletions
  1. +5
    -0
      WHATSNEW
  2. +11
    -2
      src/main/org/apache/tools/ant/types/AbstractFileSet.java
  3. +20
    -0
      src/tests/junit/org/apache/tools/ant/types/AbstractFileSetTest.java

+ 5
- 0
WHATSNEW View File

@@ -64,6 +64,11 @@ Fixed bugs:
streams of a process, could end up being truncated.
Bugzilla Report 58833, 58451

* <fileset>/<zipfileset>/<tarfileset> will now throw an exception
with a more useful error message when setFile is called twice on
the same instance.
Bugzilla Report 62071

Other changes:
--------------



+ 11
- 2
src/main/org/apache/tools/ant/types/AbstractFileSet.java View File

@@ -238,7 +238,16 @@ public abstract class AbstractFileSet extends DataType
if (isReference()) {
throw tooManyAttributes();
}
if (getDir() != null) {
if (fileAttributeUsed) {
if (getDir().equals(file.getParentFile())) {
String[] includes = defaultPatterns.getIncludePatterns(getProject());
if (includes.length == 1 && includes[0].equals(file.getName())) {
// NOOP, setFile has been invoked twice with the same parameter
return;
}
}
throw new BuildException("setFile cannot be called twice with different arguments");
} else if (getDir() != null) {
throw dirAndFileAreMutuallyExclusive();
}
setDir(file.getParentFile());
@@ -298,7 +307,7 @@ public abstract class AbstractFileSet extends DataType
}

/**
* Appends <code>excludes</code> to the current list of include
* Appends <code>excludes</code> to the current list of exclude
* patterns.
*
* @param excludes array containing the exclude patterns.


+ 20
- 0
src/tests/junit/org/apache/tools/ant/types/AbstractFileSetTest.java View File

@@ -244,4 +244,24 @@ public abstract class AbstractFileSetTest {
File dir = f1.getDir(project);
assertEquals("Dir is basedir", dir, project.getBaseDir());
}

@Test
public void canCallSetFileTwiceWithSameArgument() {
AbstractFileSet f = getInstance();
f.setFile(new File("/a"));
f.setFile(new File("/a"));
// really only asserts no exception is thrown
}

@Test
public void cantCallSetFileTwiceWithDifferentArguments() {
AbstractFileSet f = getInstance();
f.setFile(new File("/a"));
try {
f.setFile(new File("/b"));
fail("expected an exception");
} catch (BuildException ex) {
assertEquals("setFile cannot be called twice with different arguments", ex.getMessage());
}
}
}

Loading…
Cancel
Save