tboudreau@18301
|
1 |
package org.netbeans.lib.callgraph;
|
tboudreau@18301
|
2 |
|
tboudreau@18301
|
3 |
import java.io.File;
|
tboudreau@18301
|
4 |
import java.io.IOException;
|
tboudreau@18372
|
5 |
import java.util.ArrayList;
|
tboudreau@18372
|
6 |
import java.util.List;
|
tboudreau@18301
|
7 |
import org.junit.Test;
|
tboudreau@18301
|
8 |
import static org.junit.Assert.*;
|
tboudreau@18301
|
9 |
|
tboudreau@18301
|
10 |
/**
|
tboudreau@18301
|
11 |
* Tests argument parsing.
|
tboudreau@18301
|
12 |
*
|
tboudreau@18301
|
13 |
* @author Tim Boudreau
|
tboudreau@18301
|
14 |
*/
|
tboudreau@18301
|
15 |
public class ArgumentsTest {
|
tboudreau@18301
|
16 |
|
tboudreau@18301
|
17 |
@Test
|
tboudreau@18372
|
18 |
public void testBooleanSwitches() throws IOException {
|
tboudreau@18372
|
19 |
File tmpdir = new File(System.getProperty("java.io.tmpdir")).getCanonicalFile();
|
tboudreau@18301
|
20 |
String tmp = tmpdir.getAbsolutePath();
|
tboudreau@18301
|
21 |
|
tboudreau@18301
|
22 |
Arguments args = new Arguments("-s", tmp);
|
tboudreau@18301
|
23 |
assertFalse(args.isMaven());
|
tboudreau@18301
|
24 |
assertTrue(args.isShortNames());
|
tboudreau@18301
|
25 |
assertTrue(args.isSelfReferences());
|
tboudreau@18301
|
26 |
assertTrue(args.folders().contains(new File(tmp)));
|
tboudreau@18301
|
27 |
|
tboudreau@18301
|
28 |
args = new Arguments("-n", tmp);
|
tboudreau@18301
|
29 |
assertFalse(args.isShortNames());
|
tboudreau@18301
|
30 |
assertFalse(args.isSelfReferences());
|
tboudreau@18301
|
31 |
assertTrue(args.folders().contains(new File(tmp)));
|
tboudreau@18301
|
32 |
|
tboudreau@18372
|
33 |
args = new Arguments("-n", "-o", tmp + File.separator + "out.txt",
|
tboudreau@18301
|
34 |
"--exclude", "foo.bar,foo.baz", System.getProperty("java.io.tmpdir"));
|
tboudreau@18301
|
35 |
assertFalse(args.isShortNames());
|
tboudreau@18301
|
36 |
assertFalse(args.isSelfReferences());
|
tboudreau@18372
|
37 |
assertTrue("Looking for " + tmp + " but got " + args.folders().toString(), args.folders().contains(new File(tmp)));
|
tboudreau@18301
|
38 |
assertNotNull(args.methodGraphFile());
|
tboudreau@18301
|
39 |
assertEquals(new File(tmpdir, "out.txt"), args.methodGraphFile());
|
tboudreau@18301
|
40 |
assertFalse(args.excludePrefixes().isEmpty());
|
tboudreau@18301
|
41 |
assertTrue(args.excludePrefixes().contains("foo.bar"));
|
tboudreau@18301
|
42 |
assertTrue(args.excludePrefixes().contains("foo.baz"));
|
tboudreau@18301
|
43 |
}
|
tboudreau@18301
|
44 |
|
tboudreau@18301
|
45 |
@Test
|
tboudreau@18372
|
46 |
public void testBuilder() throws IOException {
|
tboudreau@18301
|
47 |
File tmpdir = new File(System.getProperty("java.io.tmpdir"));
|
tboudreau@18301
|
48 |
String tmp = tmpdir.getAbsolutePath();
|
tboudreau@18301
|
49 |
CallgraphControl ctrl = Callgraph.configure().classGraphOutput(new File(tmpdir, "classes.txt"))
|
tboudreau@18301
|
50 |
.excludePrefix("foo.bar").excludePrefix("baz.quux")
|
tboudreau@18301
|
51 |
.ignoreSelfReferences().quiet().methodGraphOutput(new File(tmpdir, "methods.txt"))
|
tboudreau@18301
|
52 |
.addSourceParent(tmpdir).packageGraphOutput(new File(tmpdir, "pkgs.txt")).build();
|
tboudreau@18301
|
53 |
}
|
tboudreau@18301
|
54 |
|
tboudreau@18301
|
55 |
@Test(expected = Arguments.InvalidArgumentsException.class)
|
tboudreau@18372
|
56 |
public void testNoArguments() throws IOException {
|
tboudreau@18301
|
57 |
new Arguments();
|
tboudreau@18301
|
58 |
}
|
tboudreau@18301
|
59 |
|
tboudreau@18301
|
60 |
@Test(expected = Arguments.InvalidArgumentsException.class)
|
tboudreau@18372
|
61 |
public void testQuietAndNoOuput() throws IOException {
|
tboudreau@18301
|
62 |
new Arguments("-q", System.getProperty("java.io.tmpdir"));
|
tboudreau@18301
|
63 |
}
|
tboudreau@18301
|
64 |
|
tboudreau@18301
|
65 |
@Test(expected = Arguments.InvalidArgumentsException.class)
|
tboudreau@18372
|
66 |
public void testNonExistentFolder() throws IOException {
|
tboudreau@18301
|
67 |
new Arguments("/" + System.currentTimeMillis());
|
tboudreau@18301
|
68 |
}
|
tboudreau@18372
|
69 |
|
tboudreau@18372
|
70 |
@Test
|
tboudreau@18372
|
71 |
public void testGradleScan() throws IOException {
|
tboudreau@18372
|
72 |
File tmp = new File(System.getProperty("java.io.tmpdir"));
|
tboudreau@18372
|
73 |
File dir = new File(tmp, ArgumentsTest.class.getSimpleName() + "_" + System.currentTimeMillis());
|
tboudreau@18372
|
74 |
File project1 = new File(dir, "prj");
|
tboudreau@18372
|
75 |
File project2 = new File(dir, "prj2");
|
tboudreau@18372
|
76 |
File build1 = new File(project1, "a.gradle");
|
tboudreau@18372
|
77 |
File build2 = new File(project2, "b.gradle");
|
tboudreau@18372
|
78 |
|
tboudreau@18372
|
79 |
File src1 = new File(project1, "src");
|
tboudreau@18372
|
80 |
File main1 = new File(src1, "main");
|
tboudreau@18372
|
81 |
File java1 = new File(main1, "java");
|
tboudreau@18372
|
82 |
|
tboudreau@18372
|
83 |
File src2 = new File(project2, "src");
|
tboudreau@18372
|
84 |
File main2 = new File(src2, "main");
|
tboudreau@18372
|
85 |
File java2 = new File(main2, "java");
|
tboudreau@18372
|
86 |
|
tboudreau@18372
|
87 |
assertTrue(java1.mkdirs());
|
tboudreau@18372
|
88 |
assertTrue(java2.mkdirs());
|
tboudreau@18372
|
89 |
build1.createNewFile();
|
tboudreau@18372
|
90 |
build2.createNewFile();
|
tboudreau@18372
|
91 |
java1 = java1.getCanonicalFile();
|
tboudreau@18372
|
92 |
java2 = java2.getCanonicalFile();
|
tboudreau@18372
|
93 |
|
tboudreau@18372
|
94 |
try {
|
tboudreau@18372
|
95 |
Arguments args = new Arguments(dir.getAbsolutePath());
|
tboudreau@18372
|
96 |
|
tboudreau@18372
|
97 |
assertTrue(args.hasGradleFile(project1));
|
tboudreau@18372
|
98 |
assertTrue(args.hasGradleFile(project2));
|
tboudreau@18372
|
99 |
|
tboudreau@18372
|
100 |
List<String> errors = new ArrayList<>();
|
tboudreau@18372
|
101 |
args.findGradleSubfolders(errors);
|
tboudreau@18372
|
102 |
assertFalse(args.folders().isEmpty());
|
tboudreau@18372
|
103 |
assertEquals(args.folders().toString(), 2, args.folders().size());
|
tboudreau@18372
|
104 |
assertTrue(errors + "", errors.isEmpty());
|
tboudreau@18372
|
105 |
|
tboudreau@18372
|
106 |
|
tboudreau@18372
|
107 |
args = new Arguments("--gradle", "-s", dir.getAbsolutePath());
|
tboudreau@18372
|
108 |
|
tboudreau@18372
|
109 |
assertTrue(args.isGradle());
|
tboudreau@18372
|
110 |
assertTrue(args.isShortNames());
|
tboudreau@18372
|
111 |
assertTrue(args.isSelfReferences());
|
tboudreau@18372
|
112 |
assertTrue(args.folders().contains(java1));
|
tboudreau@18372
|
113 |
assertTrue(args.folders().contains(java2));
|
tboudreau@18372
|
114 |
} finally {
|
tboudreau@18372
|
115 |
// Clean up
|
tboudreau@18372
|
116 |
assertTrue(build1.delete());
|
tboudreau@18372
|
117 |
assertTrue(build2.delete());
|
tboudreau@18372
|
118 |
assertTrue(java1.delete());
|
tboudreau@18372
|
119 |
assertTrue(java2.delete());
|
tboudreau@18372
|
120 |
assertTrue(main1.delete());
|
tboudreau@18372
|
121 |
assertTrue(main2.delete());
|
tboudreau@18372
|
122 |
assertTrue(src1.delete());
|
tboudreau@18372
|
123 |
assertTrue(src2.delete());
|
tboudreau@18372
|
124 |
assertTrue(project1.delete());
|
tboudreau@18372
|
125 |
assertTrue(project2.delete());
|
tboudreau@18372
|
126 |
assertTrue(dir.delete());
|
tboudreau@18372
|
127 |
}
|
tboudreau@18372
|
128 |
|
tboudreau@18372
|
129 |
}
|
tboudreau@18301
|
130 |
|
tboudreau@18301
|
131 |
@Test
|
tboudreau@18301
|
132 |
public void testMavenScan() throws IOException {
|
tboudreau@18301
|
133 |
File tmp = new File(System.getProperty("java.io.tmpdir"));
|
tboudreau@18301
|
134 |
File dir = new File(tmp, ArgumentsTest.class.getSimpleName() + "_" + System.currentTimeMillis());
|
tboudreau@18301
|
135 |
File project1 = new File(dir, "prj");
|
tboudreau@18301
|
136 |
File project2 = new File(dir, "prj2");
|
tboudreau@18301
|
137 |
File pom1 = new File(project1, "pom.xml");
|
tboudreau@18301
|
138 |
File pom2 = new File(project2, "pom.xml");
|
tboudreau@18301
|
139 |
|
tboudreau@18301
|
140 |
File src1 = new File(project1, "src");
|
tboudreau@18301
|
141 |
File main1 = new File(src1, "main");
|
tboudreau@18301
|
142 |
File java1 = new File(main1, "java");
|
tboudreau@18301
|
143 |
|
tboudreau@18301
|
144 |
File src2 = new File(project2, "src");
|
tboudreau@18301
|
145 |
File main2 = new File(src2, "main");
|
tboudreau@18301
|
146 |
File java2 = new File(main2, "java");
|
tboudreau@18301
|
147 |
|
tboudreau@18301
|
148 |
assertTrue(java1.mkdirs());
|
tboudreau@18301
|
149 |
assertTrue(java2.mkdirs());
|
tboudreau@18301
|
150 |
pom1.createNewFile();
|
tboudreau@18301
|
151 |
pom2.createNewFile();
|
tboudreau@18372
|
152 |
java1 = java1.getCanonicalFile();
|
tboudreau@18372
|
153 |
java2 = java2.getCanonicalFile();
|
tboudreau@18301
|
154 |
try {
|
tboudreau@18301
|
155 |
|
tboudreau@18301
|
156 |
Arguments args = new Arguments("--maven", "-s", dir.getAbsolutePath());
|
tboudreau@18301
|
157 |
assertTrue(args.isMaven());
|
tboudreau@18301
|
158 |
assertTrue(args.isShortNames());
|
tboudreau@18301
|
159 |
assertTrue(args.isSelfReferences());
|
tboudreau@18301
|
160 |
assertTrue(args.folders().contains(java1));
|
tboudreau@18301
|
161 |
assertTrue(args.folders().contains(java2));
|
tboudreau@18301
|
162 |
} finally {
|
tboudreau@18301
|
163 |
// Clean up
|
tboudreau@18301
|
164 |
assertTrue(pom1.delete());
|
tboudreau@18301
|
165 |
assertTrue(pom2.delete());
|
tboudreau@18301
|
166 |
assertTrue(java1.delete());
|
tboudreau@18301
|
167 |
assertTrue(java2.delete());
|
tboudreau@18301
|
168 |
assertTrue(main1.delete());
|
tboudreau@18301
|
169 |
assertTrue(main2.delete());
|
tboudreau@18301
|
170 |
assertTrue(src1.delete());
|
tboudreau@18301
|
171 |
assertTrue(src2.delete());
|
tboudreau@18301
|
172 |
assertTrue(project1.delete());
|
tboudreau@18301
|
173 |
assertTrue(project2.delete());
|
tboudreau@18301
|
174 |
assertTrue(dir.delete());
|
tboudreau@18301
|
175 |
}
|
tboudreau@18301
|
176 |
}
|
tboudreau@18301
|
177 |
|
tboudreau@18374
|
178 |
|
tboudreau@18374
|
179 |
@Test
|
tboudreau@18374
|
180 |
public void testAntScan() throws IOException {
|
tboudreau@18374
|
181 |
File tmp = new File(System.getProperty("java.io.tmpdir"));
|
tboudreau@18374
|
182 |
File dir = new File(tmp, ArgumentsTest.class.getSimpleName() + "_" + System.currentTimeMillis());
|
tboudreau@18374
|
183 |
File project1 = new File(dir, "prj");
|
tboudreau@18374
|
184 |
File project2 = new File(dir, "prj2");
|
tboudreau@18374
|
185 |
File pom1 = new File(project1, "build.xml");
|
tboudreau@18374
|
186 |
File pom2 = new File(project2, "build.xml");
|
tboudreau@18374
|
187 |
|
tboudreau@18374
|
188 |
File java1 = new File(project1, "src");
|
tboudreau@18374
|
189 |
File java2 = new File(project2, "src");
|
tboudreau@18374
|
190 |
|
tboudreau@18374
|
191 |
assertTrue(java1.mkdirs());
|
tboudreau@18374
|
192 |
assertTrue(java2.mkdirs());
|
tboudreau@18374
|
193 |
pom1.createNewFile();
|
tboudreau@18374
|
194 |
pom2.createNewFile();
|
tboudreau@18374
|
195 |
dir = dir.getCanonicalFile();
|
tboudreau@18374
|
196 |
java1 = java1.getCanonicalFile();
|
tboudreau@18374
|
197 |
java2 = java2.getCanonicalFile();
|
tboudreau@18374
|
198 |
|
tboudreau@18374
|
199 |
Arguments a = new Arguments("-v", dir.getAbsolutePath());
|
tboudreau@18374
|
200 |
assertEquals(1, a.folders().size());
|
tboudreau@18374
|
201 |
assertEquals(dir, a.folders().iterator().next());
|
tboudreau@18374
|
202 |
List<String> errors = new ArrayList<>();
|
tboudreau@18374
|
203 |
a.findAntSubfolders(errors);
|
tboudreau@18374
|
204 |
assertTrue(errors.isEmpty());
|
tboudreau@18374
|
205 |
System.out.println("FLDS: ");
|
tboudreau@18374
|
206 |
for (File f : a.folders()) {
|
tboudreau@18374
|
207 |
System.out.println(" " + f.getAbsolutePath());
|
tboudreau@18374
|
208 |
}
|
tboudreau@18374
|
209 |
assertEquals(2, a.folders().size());
|
tboudreau@18374
|
210 |
assertFalse(a.folders().isEmpty());
|
tboudreau@18374
|
211 |
assertTrue(a.folders().contains(java1));
|
tboudreau@18374
|
212 |
assertTrue(a.folders().contains(java2));
|
tboudreau@18374
|
213 |
try {
|
tboudreau@18374
|
214 |
|
tboudreau@18374
|
215 |
Arguments args = new Arguments("--ant", "-s", dir.getAbsolutePath());
|
tboudreau@18374
|
216 |
assertTrue(args.isAnt());
|
tboudreau@18374
|
217 |
assertTrue(args.isShortNames());
|
tboudreau@18374
|
218 |
assertTrue(args.isSelfReferences());
|
tboudreau@18374
|
219 |
assertTrue(args.folders().contains(java1));
|
tboudreau@18374
|
220 |
assertTrue(args.folders().contains(java2));
|
tboudreau@18374
|
221 |
} finally {
|
tboudreau@18374
|
222 |
// Clean up
|
tboudreau@18374
|
223 |
assertTrue(pom1.delete());
|
tboudreau@18374
|
224 |
assertTrue(pom2.delete());
|
tboudreau@18374
|
225 |
assertTrue(java1.delete());
|
tboudreau@18374
|
226 |
assertTrue(java2.delete());
|
tboudreau@18374
|
227 |
assertTrue(project1.delete());
|
tboudreau@18374
|
228 |
assertTrue(project2.delete());
|
tboudreau@18374
|
229 |
assertTrue(dir.delete());
|
tboudreau@18374
|
230 |
}
|
tboudreau@18374
|
231 |
}
|
tboudreau@18374
|
232 |
|
tboudreau@18301
|
233 |
}
|