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