1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.plugins.antrun;
20  
21  import java.io.File;
22  import java.io.IOException;
23  import java.nio.file.Files;
24  import java.nio.file.Path;
25  
26  import org.codehaus.plexus.configuration.PlexusConfiguration;
27  import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
28  import org.junit.jupiter.api.BeforeEach;
29  import org.junit.jupiter.api.Test;
30  import org.junit.jupiter.api.io.TempDir;
31  import org.xmlunit.builder.Input;
32  
33  import static org.hamcrest.MatcherAssert.assertThat;
34  import static org.xmlunit.matchers.CompareMatcher.isIdenticalTo;
35  
36  
37  
38  
39  
40  public class AntrunXmlPlexusConfigurationWriterTest {
41  
42      private static final String TARGET_NAME = "main";
43  
44      @TempDir
45      Path folder;
46  
47      private AntrunXmlPlexusConfigurationWriter configurationWriter;
48  
49      private PlexusConfiguration configuration;
50  
51      private File file;
52  
53      @BeforeEach
54      void setUp() throws IOException {
55          configurationWriter = new AntrunXmlPlexusConfigurationWriter();
56          configuration = new XmlPlexusConfiguration("target");
57          configuration.setAttribute("name", TARGET_NAME);
58          file = Files.createTempFile(folder, "junit", "antrun").toFile();
59      }
60  
61      
62  
63  
64  
65  
66      @Test
67      public void testBasic() throws IOException {
68          configuration.getChild("echo", true).setAttribute("message", "Hello");
69          configurationWriter.write(configuration, file, "", TARGET_NAME);
70          assertXmlIsExpected("/configuration-writer/basic.xml", file);
71      }
72  
73      
74  
75  
76  
77  
78      @Test
79      public void testEmptyTarget() throws IOException {
80          configurationWriter.write(configuration, file, "", TARGET_NAME);
81          assertXmlIsExpected("/configuration-writer/empty-target.xml", file);
82      }
83  
84      
85  
86  
87  
88  
89      @Test
90      public void testCustomTaskPrefix() throws IOException {
91          PlexusConfiguration child = configuration.getChild("mvn:foo", true);
92          child.setAttribute("attr1", "val1");
93          child.setValue("The first value.");
94          child = configuration.getChild("bar", true);
95          child.setAttribute("attr2", "val2");
96          child.setValue("The second value.");
97          configurationWriter.write(configuration, file, "mvn", TARGET_NAME);
98          assertXmlIsExpected("/configuration-writer/custom-task-prefix.xml", file);
99      }
100 
101     
102 
103 
104 
105 
106 
107     @Test
108     public void testCombineAttributes() throws IOException {
109         configuration.setAttribute("combine.children", "append");
110         configuration.setAttribute("description", "foo");
111         configuration.getChild("child", true).setAttribute("combine.self", "override");
112         configurationWriter.write(configuration, file, "", TARGET_NAME);
113         assertXmlIsExpected("/configuration-writer/combine-attributes.xml", file);
114     }
115 
116     private void assertXmlIsExpected(String expected, File file) {
117         assertThat(Input.from(file), isIdenticalTo(Input.from(getClass().getResourceAsStream(expected))));
118     }
119 }