1 package com.atlassian.plugin.util.resource;
2
3 import junit.framework.TestCase;
4
5 import java.net.MalformedURLException;
6 import java.io.File;
7 import java.io.IOException;
8 import java.io.InputStream;
9
10 import org.apache.commons.io.IOUtils;
11 import org.apache.commons.io.FileUtils;
12 import com.atlassian.plugin.util.resource.AlternativeDirectoryResourceLoader;
13 import com.atlassian.plugin.util.resource.AlternativeResourceLoader;
14
15 public class TestAlternativeDirectoryResourceLoader extends TestCase
16 {
17 File base;
18 File kid;
19
20 @Override
21 public void setUp() throws IOException
22 {
23 base = new File("target");
24 if (!base.exists())
25 {
26 base = File.createTempFile("tests", ".tmp");
27 base.delete();
28 base.mkdir();
29 File classes = new File(base, "classes");
30 classes.mkdir();
31 new File(classes, "com").mkdir();
32 }
33 kid = new File(base, "kid.txt");
34 kid.createNewFile();
35 }
36
37 @Override
38 protected void tearDown() throws Exception
39 {
40 if (!"target".equals(base.getName()))
41 {
42 FileUtils.deleteDirectory(base);
43 }
44 kid.delete();
45 }
46
47 public void testGetResource() throws MalformedURLException
48 {
49 try
50 {
51 System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES, base.getAbsolutePath());
52 AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
53 assertEquals(new File(base, "classes").toURL(), loader.getResource("classes"));
54 assertNull(loader.getResource("asdfasdfasf"));
55 }
56 finally
57 {
58 System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
59 }
60 }
61
62 public void testGetResourceWithTwoDefined() throws MalformedURLException
63 {
64 try
65 {
66 File classesDir = new File(base, "classes");
67 System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES,
68 base.getAbsolutePath()+","+classesDir.getAbsolutePath());
69 AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
70 assertEquals(new File(base, "classes").toURL(), loader.getResource("classes"));
71 assertEquals(new File(classesDir, "com").toURL(), loader.getResource("com"));
72 assertNull(loader.getResource("asdfasdfasf"));
73 }
74 finally
75 {
76 System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
77 }
78 }
79
80 public void testGetResourceNoProperty() throws MalformedURLException
81 {
82 AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
83 assertNull(loader.getResource("classes"));
84 assertNull(loader.getResource("asdfasdfasf"));
85 }
86
87 public void testGetResourceAsStream() throws MalformedURLException
88 {
89 InputStream in = null;
90 try
91 {
92 System.setProperty(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES, base.getAbsolutePath());
93 AlternativeResourceLoader loader = new AlternativeDirectoryResourceLoader();
94 in = loader.getResourceAsStream("kid.txt");
95 assertNotNull(in);
96 assertNull(loader.getResource("asdfasdfasf"));
97 }
98 finally
99 {
100 System.getProperties().remove(AlternativeDirectoryResourceLoader.PLUGIN_RESOURCE_DIRECTORIES);
101 IOUtils.closeQuietly(in);
102 }
103 }
104 }