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 java.io.File;
27  import java.util.ArrayList;
28  import java.util.Collections;
29  import java.util.List;
30  
31  import org.codehaus.plexus.compiler.CompilerConfiguration;
32  import org.junit.jupiter.api.Assertions;
33  import org.junit.jupiter.api.BeforeEach;
34  import org.junit.jupiter.api.Test;
35  
36  import static org.hamcrest.MatcherAssert.assertThat;
37  import static org.hamcrest.Matchers.contains;
38  import static org.hamcrest.Matchers.is;
39  
40  public class EclipseCompilerConfigurationTest {
41      private static final String PROPERTIES_FILE_NAME =
42              "src/test/resources".replace("/", File.separator) + File.separator
43                      + EclipseCompilerConfigurationTest.class.getName().replace(".", File.separator)
44                      + "-test.properties";
45  
46      private CompilerConfiguration configuration;
47  
48      @BeforeEach
49      protected void setUp() {
50          configuration = new CompilerConfiguration();
51      }
52  
53      @Test
54      public void testProcessCustomArgumentsWithMultipleAddExports() {
55          configuration.addCompilerCustomArgument("--add-exports", "FROM-MOD/package1=OTHER-MOD");
56          configuration.addCompilerCustomArgument("--add-exports", "FROM-MOD/package2=OTHER-MOD");
57          List<String> args = new ArrayList<>();
58          EclipseJavaCompiler.processCustomArguments(configuration, args);
59          assertThat(args.size(), is(4));
60          assertThat(
61                  args,
62                  contains(
63                          "--add-exports",
64                          "FROM-MOD/package1=OTHER-MOD",
65                          "--add-exports",
66                          "FROM-MOD/package2=OTHER-MOD"));
67          
68          
69          
70          
71      }
72  
73      @Test
74      public void testProcessCustomArgumentsWithProceedOnError() {
75          configuration.addCompilerCustomArgument("-proceedOnError", null);
76          List<String> args = new ArrayList<>();
77          EclipseJavaCompiler.processCustomArguments(configuration, args);
78          assertThat(args.size(), is(1));
79          assertThat(args, contains("-proceedOnError:Fatal"));
80      }
81  
82      @Test
83      public void testProcessCustomArgumentsWithErrorsAsWarnings() {
84          configuration.addCompilerCustomArgument("errorsAsWarnings", null);
85          List<String> args = new ArrayList<>();
86          final boolean errorsAsWarnings = EclipseJavaCompiler.processCustomArguments(configuration, args);
87          assertThat(errorsAsWarnings, is(true));
88      }
89  
90      @Test
91      public void testProcessCustomArgumentsWithErrorsAsWarningsAndMinus() {
92          configuration.addCompilerCustomArgument("-errorsAsWarnings", null);
93          List<String> args = new ArrayList<>();
94          final boolean errorsAsWarnings = EclipseJavaCompiler.processCustomArguments(configuration, args);
95          assertThat(errorsAsWarnings, is(true));
96      }
97  
98      @Test
99      public void testProcessCustomArgumentsWithPropertiesAndNonExistingFile() {
100         configuration.addCompilerCustomArgument("-properties", "fooBar.txt");
101         IllegalArgumentException expected = Assertions.assertThrows(
102                 IllegalArgumentException.class,
103                 () -> EclipseJavaCompiler.processCustomArguments(configuration, Collections.emptyList()));
104         assertThat(expected.getMessage(), is("Properties file specified by -properties fooBar.txt does not exist"));
105     }
106 
107     @Test
108     public void testProcessCustomArgumentsWithPropertiesAndValidFile() {
109         configuration.addCompilerCustomArgument("-properties", PROPERTIES_FILE_NAME);
110         List<String> args = new ArrayList<>();
111         EclipseJavaCompiler.processCustomArguments(configuration, args);
112         assertThat(args.size(), is(2));
113         assertThat(args, contains("-properties", PROPERTIES_FILE_NAME));
114     }
115 }