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)); | |||||
| } | |||||
| } | |||||