1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.io;
18
19 import java.io.File;
20 import java.util.Collection;
21 import java.util.Iterator;
22
23 import org.apache.commons.io.filefilter.FileFilterUtils;
24 import org.apache.commons.io.filefilter.IOFileFilter;
25 import org.apache.commons.io.testtools.FileBasedTestCase;
26
27
28
29
30 public class FileUtilsListFilesTestCase extends FileBasedTestCase {
31
32 public FileUtilsListFilesTestCase(String name) {
33 super(name);
34 }
35
36 private File getLocalTestDirectory() {
37 return new File(getTestDirectory(), "list-files");
38 }
39
40
41
42
43 protected void setUp() throws Exception {
44 File dir = getLocalTestDirectory();
45 if (dir.exists()) {
46 FileUtils.deleteDirectory(dir);
47 }
48 dir.mkdirs();
49 File file = new File(dir, "dummy-build.xml");
50 FileUtils.touch(file);
51 file = new File(dir, "README");
52 FileUtils.touch(file);
53
54 dir = new File(dir, "subdir1");
55 dir.mkdirs();
56 file = new File(dir, "dummy-build.xml");
57 FileUtils.touch(file);
58 file = new File(dir, "dummy-readme.txt");
59 FileUtils.touch(file);
60
61 dir = new File(dir, "subsubdir1");
62 dir.mkdirs();
63 file = new File(dir, "dummy-file.txt");
64 FileUtils.touch(file);
65 file = new File(dir, "dummy-index.html");
66 FileUtils.touch(file);
67
68 dir = dir.getParentFile();
69 dir = new File(dir, "CVS");
70 dir.mkdirs();
71 file = new File(dir, "Entries");
72 FileUtils.touch(file);
73 file = new File(dir, "Repository");
74 FileUtils.touch(file);
75 }
76
77
78
79
80 protected void tearDown() throws Exception {
81 File dir = getLocalTestDirectory();
82 FileUtils.deleteDirectory(dir);
83 }
84
85 private Collection filesToFilenames(Collection files) {
86 Collection filenames = new java.util.ArrayList(files.size());
87 Iterator i = files.iterator();
88 while (i.hasNext()) {
89 filenames.add(((File)i.next()).getName());
90 }
91 return filenames;
92 }
93
94 public void testListFilesByExtension() throws Exception {
95 String[] extensions = {"xml", "txt"};
96
97 Collection files = FileUtils.listFiles(getLocalTestDirectory(), extensions, false);
98 assertEquals(1, files.size());
99 Collection filenames = filesToFilenames(files);
100 assertTrue(filenames.contains("dummy-build.xml"));
101 assertFalse(filenames.contains("README"));
102 assertFalse(filenames.contains("dummy-file.txt"));
103
104 files = FileUtils.listFiles(getLocalTestDirectory(), extensions, true);
105 filenames = filesToFilenames(files);
106 assertEquals(4, filenames.size());
107 assertTrue(filenames.contains("dummy-file.txt"));
108 assertFalse(filenames.contains("dummy-index.html"));
109
110 files = FileUtils.listFiles(getLocalTestDirectory(), null, false);
111 assertEquals(2, files.size());
112 filenames = filesToFilenames(files);
113 assertTrue(filenames.contains("dummy-build.xml"));
114 assertTrue(filenames.contains("README"));
115 assertFalse(filenames.contains("dummy-file.txt"));
116
117 }
118
119 public void testListFiles() throws Exception {
120 Collection files;
121 Collection filenames;
122 IOFileFilter fileFilter;
123 IOFileFilter dirFilter;
124
125
126 fileFilter = FileFilterUtils.trueFileFilter();
127 files = FileUtils.listFiles(getLocalTestDirectory(), fileFilter, null);
128 filenames = filesToFilenames(files);
129 assertTrue("'dummy-build.xml' is missing", filenames.contains("dummy-build.xml"));
130 assertFalse("'dummy-index.html' shouldn't be found", filenames.contains("dummy-index.html"));
131 assertFalse("'Entries' shouldn't be found", filenames.contains("Entries"));
132
133
134 fileFilter = FileFilterUtils.trueFileFilter();
135 dirFilter = FileFilterUtils.notFileFilter(FileFilterUtils.nameFileFilter("CVS"));
136 files = FileUtils.listFiles(getLocalTestDirectory(), fileFilter, dirFilter);
137 filenames = filesToFilenames(files);
138 assertTrue("'dummy-build.xml' is missing", filenames.contains("dummy-build.xml"));
139 assertTrue("'dummy-index.html' is missing", filenames.contains("dummy-index.html"));
140 assertFalse("'Entries' shouldn't be found", filenames.contains("Entries"));
141
142
143 fileFilter = FileFilterUtils.trueFileFilter();
144 dirFilter = FileFilterUtils.makeCVSAware(null);
145 files = FileUtils.listFiles(getLocalTestDirectory(), fileFilter, dirFilter);
146 filenames = filesToFilenames(files);
147 assertTrue("'dummy-build.xml' is missing", filenames.contains("dummy-build.xml"));
148 assertTrue("'dummy-index.html' is missing", filenames.contains("dummy-index.html"));
149 assertFalse("'Entries' shouldn't be found", filenames.contains("Entries"));
150
151
152 fileFilter = FileFilterUtils.trueFileFilter();
153 dirFilter = FileFilterUtils.prefixFileFilter("sub");
154 dirFilter = FileFilterUtils.makeCVSAware(dirFilter);
155 files = FileUtils.listFiles(getLocalTestDirectory(), fileFilter, dirFilter);
156 filenames = filesToFilenames(files);
157 assertTrue("'dummy-build.xml' is missing", filenames.contains("dummy-build.xml"));
158 assertTrue("'dummy-index.html' is missing", filenames.contains("dummy-index.html"));
159 assertFalse("'Entries' shouldn't be found", filenames.contains("Entries"));
160
161 try {
162 FileUtils.listFiles(getLocalTestDirectory(), null, null);
163 fail("Expected error about null parameter");
164 } catch (Exception e) {
165
166 }
167 }
168
169
170 }