1 package org.codehaus.plexus.compiler.eclipse;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import javax.inject.Inject;
27 import javax.inject.Named;
28
29 import java.io.File;
30 import java.util.Collections;
31 import java.util.HashSet;
32 import java.util.List;
33 import java.util.Set;
34
35 import org.codehaus.plexus.compiler.Compiler;
36 import org.codehaus.plexus.compiler.CompilerConfiguration;
37 import org.codehaus.plexus.testing.PlexusTest;
38 import org.codehaus.plexus.util.FileUtils;
39 import org.hamcrest.MatcherAssert;
40 import org.hamcrest.Matchers;
41 import org.junit.jupiter.api.Assertions;
42 import org.junit.jupiter.api.Test;
43
44 import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
45
46
47
48
49
50 @PlexusTest
51 public class EclipseCompilerDashedArgumentsTest {
52
53 public static final String BAD_DOUBLEDASH_OPTION = "--grubbelparkplace";
54
55 @Inject
56 @Named("eclipse")
57 Compiler compiler;
58
59 private CompilerConfiguration getConfig() throws Exception {
60 String sourceDir = getBasedir() + "/src/test-input/src/main";
61
62 List<String> filenames = FileUtils.getFileNames(new File(sourceDir), "**/*.java", null, false, true);
63 Collections.sort(filenames);
64 Set<File> files = new HashSet<>();
65 for (String filename : filenames) {
66 files.add(new File(filename));
67 }
68
69 CompilerConfiguration compilerConfig = new CompilerConfiguration();
70 compilerConfig.setDebug(false);
71 compilerConfig.setShowDeprecation(false);
72
73
74 compilerConfig.addSourceLocation(sourceDir);
75 compilerConfig.setOutputLocation(getBasedir() + "/target/eclipse/classes");
76 FileUtils.deleteDirectory(compilerConfig.getOutputLocation());
77
78 compilerConfig.setForceJavacCompilerUse(false);
79 compilerConfig.setSourceFiles(files);
80
81 compilerConfig.setTargetVersion("1.8");
82 compilerConfig.setSourceVersion("1.8");
83 return compilerConfig;
84 }
85
86
87
88
89
90
91
92
93
94 @Test
95 public void testDoubleDashOptionsArePassedWithTwoDashes() throws Exception {
96 CompilerConfiguration config = getConfig();
97 config.addCompilerCustomArgument(BAD_DOUBLEDASH_OPTION, "b0rk3d");
98
99 EcjFailureException x =
100 Assertions.assertThrows(EcjFailureException.class, () -> compiler.performCompile(config));
101
102 MatcherAssert.assertThat(x.getEcjOutput(), Matchers.containsString(BAD_DOUBLEDASH_OPTION));
103 MatcherAssert.assertThat(x.getEcjOutput(), Matchers.not(Matchers.containsString("-" + BAD_DOUBLEDASH_OPTION)));
104 }
105 }