1
2
3
4
5
6
7
8
9
10
11 package org.mule.util;
12
13 import org.mule.tck.AbstractMuleTestCase;
14
15 import java.io.File;
16
17 import junit.framework.TestCase;
18
19 public class FileUtilsTestCase extends AbstractMuleTestCase
20 {
21 private final String TEST_FILE = "testFile.txt";
22 private final String TEST_DIRECTORY = "target" + File.separator + "testDirectory";
23 private final File toDir = FileUtils.newFile(TEST_DIRECTORY);
24
25 protected void doSetUp() throws Exception
26 {
27 super.doSetUp();
28 if (!toDir.exists())
29 {
30 toDir.mkdirs();
31 }
32 }
33
34 protected void doTearDown() throws Exception
35 {
36 super.doTearDown();
37 toDir.delete();
38 }
39
40 public void testFileTools() throws Exception
41 {
42 File file = null;
43 try
44 {
45 file = FileUtils.stringToFile(TEST_FILE, "this is a test file");
46 assertNotNull(file);
47 assertTrue(file.exists());
48
49 file = FileUtils.stringToFile(TEST_FILE, " and this is appended content", true);
50
51 String content = FileUtils.readFileToString(FileUtils.newFile(TEST_FILE), null);
52
53 assertNotNull(content);
54 assertTrue(content.indexOf("this is a test file") > -1);
55 assertTrue(content.indexOf(" and this is appended content") > -1);
56
57 file = FileUtils.newFile(TEST_FILE);
58 assertNotNull(file);
59 assertTrue(file.exists());
60
61 file = FileUtils.createFile(TEST_FILE);
62 assertNotNull(file);
63 assertTrue(file.exists());
64
65 file = FileUtils.createFile(TEST_FILE + "2");
66 assertNotNull(file);
67 assertTrue(file.exists());
68 assertTrue(file.canRead());
69 file.delete();
70
71 file = FileUtils.newFile(TEST_FILE);
72 file.delete();
73
74 File dir = FileUtils.openDirectory("src");
75 assertNotNull(dir);
76 assertTrue(dir.exists());
77 assertTrue(dir.canRead());
78 assertTrue(dir.isDirectory());
79
80 dir = FileUtils.openDirectory("doesNotExist");
81 assertNotNull(dir);
82 assertTrue(dir.exists());
83 assertTrue(dir.canRead());
84 assertTrue(dir.isDirectory());
85 dir.delete();
86
87 }
88 finally
89 {
90 if (file != null)
91 {
92 file.delete();
93 }
94 }
95 }
96
97 public void testFileNameTools() throws Exception
98 {
99 String filename = "Blah<Blah>.txt";
100 String result = FileUtils.prepareWinFilename(filename);
101 assertEquals("Blah(Blah).txt", result);
102
103 filename = "Bla]h<Blah:a;b|c?d=e_f*g>.txt";
104 result = FileUtils.prepareWinFilename(filename);
105 assertEquals("Bla-h(Blah-a-b-c-d=e_f-g).txt", result);
106
107 filename = "B\"la-h<Blah:a;b|c?d=e_f*g>.txt";
108 result = FileUtils.prepareWinFilename(filename);
109 assertEquals("B-la-h(Blah-a-b-c-d=e_f-g).txt", result);
110 }
111
112 public void testDirectoryTools() throws Exception
113 {
114 File dir = FileUtils.openDirectory("src");
115 assertNotNull(dir);
116 assertTrue(dir.exists());
117 assertTrue(dir.canRead());
118 assertTrue(dir.isDirectory());
119
120 dir = FileUtils.openDirectory("doesNotExist");
121 assertNotNull(dir);
122 assertTrue(dir.exists());
123 assertTrue(dir.canRead());
124 assertTrue(dir.isDirectory());
125 FileUtils.deleteTree(dir);
126 }
127
128 public void testExtractResource() throws Exception
129 {
130 String testDir = TEST_DIRECTORY + File.separator + "Test-1";
131 File outputDir = FileUtils.newFile(testDir);
132 if (!outputDir.exists())
133 {
134 assertTrue("Failed to create output dirs.", outputDir.mkdirs());
135 }
136 String res = "META-INF/MANIFEST.MF";
137 FileUtils.extractResources(res, TestCase.class, outputDir, true);
138 File result = FileUtils.newFile(testDir, res);
139 assertNotNull(result);
140 assertTrue(result.exists());
141 assertTrue(result.canRead());
142 assertTrue(result.isFile());
143 assertTrue(result.length() > 0);
144 FileUtils.deleteTree(outputDir);
145 }
146
147 public void testExtractResources() throws Exception
148 {
149 String testDir = TEST_DIRECTORY + File.separator + "Test-2";
150 File outputDir = FileUtils.newFile(testDir);
151 if (!outputDir.exists())
152 {
153 outputDir.mkdirs();
154 }
155 String res = "META-INF/";
156 FileUtils.extractResources(res, TestCase.class, outputDir, true);
157 File result = FileUtils.newFile(testDir, res);
158 assertNotNull(result);
159 assertTrue(result.exists());
160 assertTrue(result.canRead());
161 assertTrue(result.isDirectory());
162 FileUtils.deleteTree(outputDir);
163 }
164
165 public void testExtractFileResource() throws Exception
166 {
167 String testDir = TEST_DIRECTORY + File.separator + "Test-3";
168 File outputDir = FileUtils.newFile(testDir);
169 if (!outputDir.exists())
170 {
171 outputDir.mkdirs();
172 }
173 String res = "org/mule/util/FileUtils.class";
174 FileUtils.extractResources(res, FileUtils.class, outputDir, true);
175 File result = FileUtils.newFile(testDir, res);
176 assertNotNull(result);
177 assertTrue(result.exists());
178 assertTrue(result.canRead());
179 assertTrue(result.isFile());
180 assertTrue(result.length() > 0);
181 FileUtils.deleteTree(outputDir);
182 }
183
184 public void testExtractFileResources() throws Exception
185 {
186 String testDir = TEST_DIRECTORY + File.separator + "Test-4";
187 File outputDir = FileUtils.newFile(testDir);
188 if (!outputDir.exists())
189 {
190 outputDir.mkdirs();
191 }
192 String res = "org/mule/util/";
193 FileUtils.extractResources(res, FileUtils.class, outputDir, true);
194 File result = FileUtils.newFile(testDir, res);
195 assertNotNull(result);
196 assertTrue(result.exists());
197 assertTrue(result.canRead());
198 assertTrue(result.isDirectory());
199 FileUtils.deleteTree(outputDir);
200 }
201
202 public void testExtractResourceWithoutKeepingDirStructure() throws Exception
203 {
204 String testDir = TEST_DIRECTORY + File.separator + "Test-5";
205 File outputDir = FileUtils.newFile(testDir);
206 if (!outputDir.exists())
207 {
208 outputDir.mkdirs();
209 }
210 String fileName = "MANIFEST.MF";
211 String res = "META-INF/" + fileName;
212 FileUtils.extractResources(res, TestCase.class, outputDir, false);
213 File result = FileUtils.newFile(testDir, fileName);
214 assertNotNull(result);
215 assertTrue(result.exists());
216 assertTrue(result.canRead());
217 assertTrue(result.isFile());
218 assertTrue(result.length() > 0);
219 FileUtils.deleteTree(outputDir);
220 }
221
222 public void testExtractResourcesWithoutKeepingDirStructure() throws Exception
223 {
224 String testDir = TEST_DIRECTORY + File.separator + "Test-6";
225 File outputDir = FileUtils.newFile(testDir);
226 if (!outputDir.exists())
227 {
228 outputDir.mkdirs();
229 }
230 String fileName = "util/FileUtilsTestCase.class";
231 String res = "org/mule/";
232 FileUtils.extractResources(res, FileUtilsTestCase.class, outputDir, false);
233 File result = FileUtils.newFile(testDir, fileName);
234 assertNotNull(result);
235 assertTrue(result.exists());
236 assertTrue(result.canRead());
237 assertTrue(result.isFile());
238 assertTrue(result.length() > 0);
239 FileUtils.deleteTree(outputDir);
240 }
241
242 public void testExtractFileResourceWithoutKeepingDirStructure() throws Exception
243 {
244 String testDir = TEST_DIRECTORY + File.separator + "Test-7";
245 File outputDir = FileUtils.newFile(testDir);
246 if (!outputDir.exists())
247 {
248 outputDir.mkdirs();
249 }
250 String fileName = "FileUtils.class";
251 String res = "org/mule/util/" + fileName;
252 FileUtils.extractResources(res, FileUtils.class, outputDir, false);
253 File result = FileUtils.newFile(testDir, fileName);
254 assertNotNull(result);
255 assertTrue(result.exists());
256 assertTrue(result.canRead());
257 assertTrue(result.isFile());
258 assertTrue(result.length() > 0);
259 FileUtils.deleteTree(outputDir);
260 }
261
262 public void testExtractFileResourcesWithoutKeepingDirStructure() throws Exception
263 {
264 String testDir = TEST_DIRECTORY + File.separator + "Test-8";
265 File outputDir = FileUtils.newFile(testDir);
266 if (!outputDir.exists())
267 {
268 outputDir.mkdirs();
269 }
270 String fileName = "util/FileUtilsTestCase.class";
271 String res = "org/mule/";
272 FileUtils.extractResources(res, FileUtilsTestCase.class, outputDir, false);
273 File result = FileUtils.newFile(testDir, fileName);
274 assertNotNull(result);
275 assertTrue(result.exists());
276 assertTrue(result.canRead());
277 assertTrue(result.isFile());
278 assertTrue(result.length() > 0);
279 FileUtils.deleteTree(outputDir);
280 }
281
282 public void testDeleteTreeWithIgnoredDirectories() throws Exception
283 {
284 final String testDir = TEST_DIRECTORY + File.separator + "Test-deleting";
285 File outputDir = FileUtils.newFile(testDir);
286 if (!outputDir.exists())
287 {
288 outputDir.mkdirs();
289 }
290
291 File toBeDeleted1 = FileUtils.newFile(outputDir, "toBeDeleted1/");
292 toBeDeleted1.mkdirs();
293 File toBeDeleted2 = FileUtils.newFile(outputDir, "toBeDeleted2/");
294 toBeDeleted2.mkdirs();
295
296 File keepMeIntact = FileUtils.newFile(outputDir, "keepMeIntact/");
297 keepMeIntact.mkdirs();
298
299 FileUtils.deleteTree(outputDir, new String[] {"keepMeIntact"});
300
301 assertTrue("Shouldn't have been deleted.", keepMeIntact.exists());
302
303 FileUtils.deleteTree(outputDir);
304 }
305 }