1. Project Clover database mer. févr. 4 2026 12:48:28 CET
  2. Package org.apache.maven.doxia.siterenderer

File DefaultSiteRendererTest.java

 

Code metrics

0
38
4
1
169
100
4
0,11
9,5
4
1

Classes

Class Line # Actions
DefaultSiteRendererTest 57 38 0% 4 0
1.0100%
 

Contributing tests

This file is covered by 2 tests. .

Source view

1    /*
2    * Copyright 2012-2025 Christophe Friederich
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10    * Unless required by applicable law or agreed to in writing, software
11    * distributed under the License is distributed on an "AS IS" BASIS,
12    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13    * See the License for the specific language governing permissions and
14    * limitations under the License.
15    */
16    package org.apache.maven.doxia.siterenderer;
17   
18    import static org.apache.commons.io.IOUtils.closeQuietly;
19    import static org.apache.commons.io.IOUtils.copy;
20    import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
21    import static org.codehaus.plexus.testing.PlexusExtension.getTestFile;
22   
23    import java.io.ByteArrayInputStream;
24    import java.io.File;
25    import java.io.FileInputStream;
26    import java.io.FileOutputStream;
27    import java.io.IOException;
28    import java.io.InputStream;
29    import java.nio.charset.StandardCharsets;
30    import java.nio.file.Path;
31    import java.util.HashMap;
32    import java.util.Locale;
33    import java.util.Map;
34    import java.util.jar.JarOutputStream;
35    import java.util.zip.ZipEntry;
36    import javax.inject.Inject;
37    import org.apache.maven.artifact.Artifact;
38    import org.apache.maven.artifact.DefaultArtifact;
39    import org.apache.maven.artifact.versioning.VersionRange;
40    import org.apache.maven.doxia.site.SiteModel;
41    import org.apache.maven.doxia.site.io.xpp3.SiteXpp3Reader;
42    import org.apache.maven.doxia.siterenderer.SiteRenderingContext.SiteDirectory;
43    import org.codehaus.plexus.PlexusContainer;
44    import org.codehaus.plexus.testing.PlexusTest;
45    import org.codehaus.plexus.util.FileUtils;
46    import org.devacfr.testing.jupiter.TestCase;
47    import org.junit.jupiter.api.AfterEach;
48    import org.junit.jupiter.api.BeforeEach;
49    import org.junit.jupiter.api.Test;
50   
51    /**
52    * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
53    * @author <a href="mailto:evenisse@codehaus.org">Emmanuel Venisse</a>
54    */
55    @PlexusTest
56    // @Disabled("not work when clover report is enabled")
 
57    public class DefaultSiteRendererTest extends TestCase {
58   
59    /**
60    * All output produced by this test will go here.
61    */
62    private static final String OUTPUT = "target/output";
63   
64    /**
65    * The renderer used to produce output.
66    */
67    private SiteRenderer renderer;
68   
69    /**
70    * The locale before executing tests.
71    */
72    private Locale oldLocale;
73   
74    @Inject
75    private PlexusContainer container;
76   
77    private final File skinJar = new File(getBasedir(), "target/test-classes/skin.jar");
78   
79    private final File minimalSkinJar = new File(getBasedir(), "target/test-classes/minimal-skin.jar");
80   
81    /**
82    * @throws java.lang.Exception
83    * if something goes wrong.
84    */
 
85  2 toggle @BeforeEach
86    protected void setUp() throws Exception {
87  2 renderer = container.lookup(SiteRenderer.class);
88   
89  2 InputStream skinIS = getResource("velocity-toolmanager.vm").openStream();
90  2 JarOutputStream jarOS = new JarOutputStream(new FileOutputStream(skinJar));
91  2 try {
92  2 jarOS.putNextEntry(new ZipEntry("META-INF/maven/site.vm"));
93  2 copy(skinIS, jarOS);
94  2 jarOS.closeEntry();
95    } finally {
96  2 closeQuietly(skinIS);
97  2 closeQuietly(jarOS);
98    }
99   
100  2 skinIS = new ByteArrayInputStream("<main id=\"contentBox\">$bodyContent</main>".getBytes(StandardCharsets.UTF_8));
101  2 jarOS = new JarOutputStream(new FileOutputStream(minimalSkinJar));
102  2 try {
103  2 jarOS.putNextEntry(new ZipEntry("META-INF/maven/site.vm"));
104  2 copy(skinIS, jarOS);
105  2 jarOS.closeEntry();
106    } finally {
107  2 closeQuietly(skinIS);
108  2 closeQuietly(jarOS);
109    }
110   
111  2 oldLocale = Locale.getDefault();
112  2 Locale.setDefault(Locale.ENGLISH);
113    }
114   
115    /**
116    * @throws java.lang.Exception
117    * if something goes wrong.
118    */
 
119  2 toggle @AfterEach
120    protected void tearDown() throws Exception {
121  2 container.release(renderer);
122   
123  2 Locale.setDefault(oldLocale);
124    }
125   
126    /**
127    * @throws Exception
128    * if something goes wrong.
129    */
 
130  2 toggle @Test
131    public void shouldAcceptSnippet() throws Exception {
132    // Safety
133  2 FileUtils.deleteDirectory(getTestFile(OUTPUT));
134   
135    // ----------------------------------------------------------------------
136    // Render the site from src/test/resources/site to OUTPUT
137    // ----------------------------------------------------------------------
138  2 final SiteModel model = new SiteXpp3Reader()
139    .read(new FileInputStream(getTestFile("src/test/resources/site/site.xml")));
140   
141  2 final Path targetSite = getTestFile(OUTPUT).toPath();
142  2 final Path srcSite = getTestFile("src/test/resources/site").toPath();
143  2 final SiteRenderingContext ctxt = getSiteRenderingContext(model, srcSite, false);
144   
145  2 ctxt.setRootDirectory(getTestFile(""));
146  2 renderer.render(renderer.locateDocumentFiles(ctxt).values(), ctxt, targetSite.toFile());
147   
148  2 verify(targetSite.resolve("snippet.html"), getPackagePath().resolve("snippet.approved.html"));
149    }
150   
 
151  2 toggle private SiteRenderingContext getSiteRenderingContext(final SiteModel model,
152    final Path siteDir,
153    final boolean validate) throws RendererException, IOException {
154  2 final File skinFile = minimalSkinJar;
155   
156  2 final Map<String, String> attributes = new HashMap<>();
157  2 attributes.put("outputEncoding", "UTF-8");
158   
159  2 final Artifact skin = new DefaultArtifact("org.group", "artifact", VersionRange.createFromVersion("1.1"), null,
160    "jar", "", null);
161  2 skin.setFile(skinFile);
162  2 final SiteRenderingContext siteRenderingContext = renderer
163    .createContextForSkin(skin, attributes, model, "defaultWindowTitle", Locale.ENGLISH);
164  2 siteRenderingContext.addSiteDirectory(new SiteDirectory(siteDir.toFile(), true));
165  2 siteRenderingContext.setValidate(validate);
166   
167  2 return siteRenderingContext;
168    }
169    }