git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@953046 13f79535-47bb-0310-9956-ffa450edef68master
@@ -1458,7 +1458,7 @@ public class DirectoryScanner | |||||
* @param path the path to check. | * @param path the path to check. | ||||
* @return whether all the specified directory's contents are excluded. | * @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++) { | for (int i = 0; i < excludePatterns.length; i++) { | ||||
if (excludePatterns[i].endsWith(SelectorUtils.DEEP_TREE_MATCH) | if (excludePatterns[i].endsWith(SelectorUtils.DEEP_TREE_MATCH) | ||||
&& excludePatterns[i].withoutLastToken() | && excludePatterns[i].withoutLastToken() | ||||
@@ -1783,7 +1783,7 @@ public class DirectoryScanner | |||||
* | * | ||||
* @since Ant 1.6.3 | * @since Ant 1.6.3 | ||||
*/ | */ | ||||
private synchronized void ensureNonPatternSetsReady() { | |||||
/* package */ synchronized void ensureNonPatternSetsReady() { | |||||
if (!areNonPatternSetsReady) { | if (!areNonPatternSetsReady) { | ||||
includePatterns = fillNonPatternSet(includeNonPatterns, includes); | includePatterns = fillNonPatternSet(includeNonPatterns, includes); | ||||
excludePatterns = fillNonPatternSet(excludeNonPatterns, excludes); | excludePatterns = fillNonPatternSet(excludeNonPatterns, excludes); | ||||
@@ -19,10 +19,10 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import org.apache.tools.ant.taskdefs.condition.Os; | 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.FileUtils; | ||||
import org.apache.tools.ant.util.SymbolicLinkUtils; | import org.apache.tools.ant.util.SymbolicLinkUtils; | ||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.util.Arrays; | import java.util.Arrays; | ||||
@@ -555,4 +555,15 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
files.contains("alpha/beta/gamma/gamma.xml" | files.contains("alpha/beta/gamma/gamma.xml" | ||||
.replace('/', File.separatorChar))); | .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)); | |||||
} | |||||
} | } |
@@ -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)); | |||||
} | |||||
} |