1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.jxr;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.nio.file.Files;
24
25 import org.apache.maven.plugin.LegacySupport;
26 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
27 import org.apache.maven.plugin.testing.ArtifactStubFactory;
28 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
29 import org.apache.maven.project.DefaultProjectBuildingRequest;
30 import org.apache.maven.project.MavenProject;
31 import org.apache.maven.project.ProjectBuilder;
32 import org.apache.maven.project.ProjectBuildingRequest;
33 import org.eclipse.aether.DefaultRepositorySystemSession;
34 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
35 import org.eclipse.aether.repository.LocalRepository;
36
37
38
39
40 public abstract class AbstractJxrTestCase extends AbstractMojoTestCase {
41 private ArtifactStubFactory artifactStubFactory;
42
43
44
45
46 private MavenProject testMavenProject;
47
48 @Override
49 protected void setUp() throws Exception {
50
51 super.setUp();
52
53 artifactStubFactory = new DependencyArtifactStubFactory(getTestFile("target"), true, false);
54 artifactStubFactory.getWorkingDir().mkdirs();
55 }
56
57 @Override
58 protected void tearDown() throws Exception {
59 super.tearDown();
60 }
61
62
63
64
65
66
67 protected MavenProject getTestMavenProject() {
68 return testMavenProject;
69 }
70
71
72
73
74
75
76
77
78 protected File getGeneratedReport(String name) throws IOException {
79 String outputDirectory =
80 getBasedir() + "/target/test/unit/" + getTestMavenProject().getArtifactId();
81
82 File report = new File(outputDirectory, name);
83 if (!report.exists()) {
84 throw new IOException("File not found. Attempted: " + report);
85 }
86
87 return report;
88 }
89
90
91
92
93
94
95
96
97
98 protected File generateReport(String goal, String pluginXml) throws Exception {
99 File pluginXmlFile = new File(getBasedir(), "src/test/resources/unit/" + pluginXml);
100 AbstractJxrReport mojo = createReportMojo(goal, pluginXmlFile);
101 return generateReport(mojo, pluginXmlFile);
102 }
103
104 protected AbstractJxrReport createReportMojo(String goal, File pluginXmlFile) throws Exception {
105 AbstractJxrReport mojo = (AbstractJxrReport) lookupMojo(goal, pluginXmlFile);
106 assertNotNull("Mojo not found.", mojo);
107
108 LegacySupport legacySupport = lookup(LegacySupport.class);
109 legacySupport.setSession(newMavenSession(new MavenProjectStub()));
110 DefaultRepositorySystemSession repoSession =
111 (DefaultRepositorySystemSession) legacySupport.getRepositorySession();
112 repoSession.setLocalRepositoryManager(new SimpleLocalRepositoryManagerFactory()
113 .newInstance(repoSession, new LocalRepository(artifactStubFactory.getWorkingDir())));
114
115 setVariableValueToObject(mojo, "session", legacySupport.getSession());
116 setVariableValueToObject(mojo, "remoteRepositories", mojo.getProject().getRemoteArtifactRepositories());
117 return mojo;
118 }
119
120 protected File generateReport(AbstractJxrReport mojo, File pluginXmlFile) throws Exception {
121 mojo.execute();
122
123 ProjectBuilder builder = lookup(ProjectBuilder.class);
124
125 ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
126 buildingRequest.setRepositorySession(lookup(LegacySupport.class).getRepositorySession());
127
128 testMavenProject = builder.build(pluginXmlFile, buildingRequest).getProject();
129
130 File outputDir = mojo.getReportOutputDirectory();
131 String filename = mojo.getOutputName() + ".html";
132
133 return new File(outputDir, filename);
134 }
135
136
137
138
139 protected String readFile(File xrefTestDir, String fileName) throws IOException {
140 return new String(Files.readAllBytes(xrefTestDir.toPath().resolve(fileName)));
141 }
142 }