diff --git a/src/main/org/apache/tools/ant/DirectoryScanner.java b/src/main/org/apache/tools/ant/DirectoryScanner.java index d5a777504..ecd4e8726 100644 --- a/src/main/org/apache/tools/ant/DirectoryScanner.java +++ b/src/main/org/apache/tools/ant/DirectoryScanner.java @@ -1458,7 +1458,7 @@ public class DirectoryScanner * @param path the path to check. * @return whether all the specified directory's contents are excluded. */ - private boolean contentsExcluded(TokenizedPath path) { + /* package */ boolean contentsExcluded(TokenizedPath path) { for (int i = 0; i < excludePatterns.length; i++) { if (excludePatterns[i].endsWith(SelectorUtils.DEEP_TREE_MATCH) && excludePatterns[i].withoutLastToken() @@ -1783,7 +1783,7 @@ public class DirectoryScanner * * @since Ant 1.6.3 */ - private synchronized void ensureNonPatternSetsReady() { + /* package */ synchronized void ensureNonPatternSetsReady() { if (!areNonPatternSetsReady) { includePatterns = fillNonPatternSet(includeNonPatterns, includes); excludePatterns = fillNonPatternSet(excludeNonPatterns, excludes); diff --git a/src/tests/junit/org/apache/tools/ant/DirectoryScannerTest.java b/src/tests/junit/org/apache/tools/ant/DirectoryScannerTest.java index 59b8ff25d..112a03553 100644 --- a/src/tests/junit/org/apache/tools/ant/DirectoryScannerTest.java +++ b/src/tests/junit/org/apache/tools/ant/DirectoryScannerTest.java @@ -19,10 +19,10 @@ package org.apache.tools.ant; import org.apache.tools.ant.taskdefs.condition.Os; +import org.apache.tools.ant.types.selectors.TokenizedPath; import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.util.SymbolicLinkUtils; - import java.io.File; import java.io.IOException; import java.util.Arrays; @@ -555,4 +555,15 @@ public class DirectoryScannerTest extends BuildFileTest { files.contains("alpha/beta/gamma/gamma.xml" .replace('/', File.separatorChar))); } + + public void testContentsExcluded() { + DirectoryScanner ds = new DirectoryScanner(); + ds.setBasedir(new File(".")); + ds.setIncludes(new String[] {"**"}); + ds.addDefaultExcludes(); + ds.ensureNonPatternSetsReady(); + File f = new File(".svn"); + TokenizedPath p = new TokenizedPath(f.getAbsolutePath()); + assertTrue(ds.contentsExcluded(p)); + } } diff --git a/src/tests/junit/org/apache/tools/ant/types/selectors/TokenizedPatternTest.java b/src/tests/junit/org/apache/tools/ant/types/selectors/TokenizedPatternTest.java new file mode 100644 index 000000000..82df58fc5 --- /dev/null +++ b/src/tests/junit/org/apache/tools/ant/types/selectors/TokenizedPatternTest.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.types.selectors; + +import java.io.File; +import junit.framework.TestCase; + +public class TokenizedPatternTest extends TestCase { + private static final String DOT_SVN_PATTERN = + SelectorUtils.DEEP_TREE_MATCH + File.separator + ".svn" + + File.separator + SelectorUtils.DEEP_TREE_MATCH; + + public void testTokenization() { + TokenizedPattern pat = new TokenizedPattern(DOT_SVN_PATTERN); + assertEquals(3, pat.depth()); + assertEquals(DOT_SVN_PATTERN, pat.getPattern()); + assertTrue(pat.containsPattern(SelectorUtils.DEEP_TREE_MATCH)); + assertTrue(pat.containsPattern(".svn")); + } + + public void testEndsWith() { + assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) + .endsWith(SelectorUtils.DEEP_TREE_MATCH)); + } + + public void testWithoutLastToken() { + assertEquals(SelectorUtils.DEEP_TREE_MATCH + File.separatorChar + + ".svn" + File.separator, + new TokenizedPattern(DOT_SVN_PATTERN) + .withoutLastToken().getPattern()); + } + + public void testMatchPath() { + File f = new File(".svn"); + TokenizedPath p = new TokenizedPath(f.getAbsolutePath()); + assertTrue(new TokenizedPattern(DOT_SVN_PATTERN).matchPath(p, true)); + assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) + .withoutLastToken().matchPath(p, true)); + } + +}