1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.dependency.analyzer.asm;
20
21 import java.io.IOException;
22 import java.net.URL;
23 import java.nio.file.Path;
24 import java.nio.file.Paths;
25 import java.util.Collections;
26 import java.util.Set;
27
28 import org.apache.maven.shared.dependency.analyzer.ClassesPatterns;
29 import org.apache.maven.shared.dependency.analyzer.DependencyAnalyzer;
30 import org.junit.jupiter.api.Test;
31
32 import static org.assertj.core.api.Assertions.assertThat;
33
34 class ASMDependencyAnalyzerTest {
35 private final DependencyAnalyzer analyzer = new ASMDependencyAnalyzer();
36
37 @Test
38 void test() throws Exception {
39 URL jarUrl = this.getClass().getResource("/org/objectweb/asm/ClassReader.class");
40 assertThat(jarUrl).isNotNull();
41 String fileUrl =
42 jarUrl.toString().substring("jar:".length(), jarUrl.toString().indexOf("!/"));
43
44 Set<String> result = analyzer.analyze(new URL(fileUrl));
45
46 assertThat(result).isNotEmpty();
47 }
48
49 @Test
50 void verify_implicit_class_reference_included_in_used_classes() throws IOException {
51 Path file = Paths.get("target/test-classes/org/apache/maven/shared/dependency/analyzer/testcases/analyze");
52
53 Set<String> result = analyzer.analyze(file.toUri().toURL());
54 assertThat(result).contains("org.apache.maven.artifact.resolver.ArtifactResolutionRequest");
55 assertThat(result).contains("java.util.regex.Pattern");
56 }
57
58 @Test
59 void verify_excluded_classes() throws IOException {
60 Path file = Paths.get("target/test-classes/org/apache/maven/shared/dependency/analyzer/testcases/analyze");
61
62 Set<String> result =
63 analyzer.analyze(file.toUri().toURL(), new ClassesPatterns(Collections.singleton("ClassToExclude")));
64 assertThat(result).contains("org.apache.maven.artifact.resolver.ArtifactResolutionRequest");
65 assertThat(result).doesNotContain("java.util.regex.Pattern");
66 assertThat(result)
67 .doesNotContain("org.apache.maven.shared.dependency.analyzer.testcases.analyze.ClassToExclude");
68 }
69 }