1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.filtering;
20
21 import java.io.IOException;
22 import java.io.Reader;
23 import java.nio.charset.StandardCharsets;
24 import java.nio.file.Files;
25 import java.nio.file.Path;
26 import java.nio.file.Paths;
27 import java.nio.file.StandardCopyOption;
28
29 import org.junit.jupiter.api.Test;
30
31 import static org.apache.maven.api.di.testing.MavenDIExtension.getBasedir;
32 import static org.junit.jupiter.api.Assertions.assertEquals;
33
34
35
36
37
38
39
40 public class FilteringUtilsTest {
41 private static Path testDirectory = Paths.get(getBasedir(), "target/test-classes/");
42
43 @Test
44 public void testMSHARED1213CopyWithTargetAlreadyExisting0ByteFile() throws IOException {
45 Path fromFile = Paths.get(getBasedir() + "/src/test/units-files/MSHARED-1213/enunciate.xml");
46 Path toFile = testDirectory.resolve("MSHARED-1213-enunciate.xml");
47 Files.write(toFile, "".getBytes(StandardCharsets.UTF_8));
48 FilteringUtils.copyFile(
49 fromFile,
50 toFile,
51 "UTF-8",
52 new FilterWrapper[] {
53 new FilterWrapper() {
54 @Override
55 public Reader getReader(Reader fileReader) {
56 return fileReader;
57 }
58 }
59 },
60 false);
61 assertEquals(
62 Files.readAllLines(fromFile, StandardCharsets.UTF_8),
63 Files.readAllLines(toFile, StandardCharsets.UTF_8));
64 }
65
66 @Test
67 public void testMSHARED1213CopyWithTargetAlreadyExistingJunkFile() throws IOException {
68 Path fromFile = Paths.get(getBasedir() + "/src/test/units-files/MSHARED-1213/enunciate.xml");
69 Path toFile = testDirectory.resolve("MSHARED-1213-enunciate.xml");
70 Files.write(toFile, "junk".getBytes(StandardCharsets.UTF_8));
71 FilteringUtils.copyFile(
72 fromFile,
73 toFile,
74 "UTF-8",
75 new FilterWrapper[] {
76 new FilterWrapper() {
77 @Override
78 public Reader getReader(Reader fileReader) {
79 return fileReader;
80 }
81 }
82 },
83 false);
84 assertEquals(
85 Files.readAllLines(fromFile, StandardCharsets.UTF_8),
86 Files.readAllLines(toFile, StandardCharsets.UTF_8));
87 }
88
89 @Test
90 public void testMSHARED1213CopyWithTargetAlreadyExistingSameFile() throws IOException {
91 Path fromFile = Paths.get(getBasedir() + "/src/test/units-files/MSHARED-1213/enunciate.xml");
92 Path toFile = testDirectory.resolve("MSHARED-1213-enunciate.xml");
93 Files.copy(fromFile, toFile, StandardCopyOption.REPLACE_EXISTING);
94 FilteringUtils.copyFile(
95 fromFile,
96 toFile,
97 "UTF-8",
98 new FilterWrapper[] {
99 new FilterWrapper() {
100 @Override
101 public Reader getReader(Reader fileReader) {
102 return fileReader;
103 }
104 }
105 },
106 false);
107 assertEquals(
108 Files.readAllLines(fromFile, StandardCharsets.UTF_8),
109 Files.readAllLines(toFile, StandardCharsets.UTF_8));
110 }
111
112 @Test
113 public void testEscapeWindowsPathStartingWithDrive() {
114 assertEquals("C:\\\\Users\\\\Administrator", FilteringUtils.escapeWindowsPath("C:\\Users\\Administrator"));
115 }
116
117 @Test
118 public void testEscapeWindowsPathMissingDriveLetter() {
119 assertEquals(":\\Users\\Administrator", FilteringUtils.escapeWindowsPath(":\\Users\\Administrator"));
120 }
121
122 @Test
123 public void testEscapeWindowsPathInvalidDriveLetter() {
124 assertEquals("4:\\Users\\Administrator", FilteringUtils.escapeWindowsPath("4:\\Users\\Administrator"));
125 }
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144 @Test
145 public void testEscapeWindowsPathNotAtBeginning() throws Exception {
146 assertEquals(
147 "jdbc:derby:C:\\\\Users\\\\Administrator/test;create=true",
148 FilteringUtils.escapeWindowsPath("jdbc:derby:C:\\Users\\Administrator/test;create=true"));
149 }
150 }