1   package org.apache.maven.plugin.javadoc;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.util.regex.PatternSyntaxException;
23  
24  import org.apache.maven.settings.Proxy;
25  import org.apache.maven.settings.Settings;
26  
27  import junit.framework.TestCase;
28  
29  /**
30   * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
31   * @version $Id: JavadocUtilTest.html 829389 2012-08-19 17:23:07Z hboutemy $
32   */
33  public class JavadocUtilTest
34      extends TestCase
35  {
36      /**
37       * Method to test the javadoc version parsing.
38       *
39       * @throws Exception if any
40       */
41      public void testParseJavadocVersion()
42          throws Exception
43      {
44          String version = null;
45          try
46          {
47              JavadocUtil.parseJavadocVersion( version );
48              assertTrue( "Not catch null", false );
49          }
50          catch ( IllegalArgumentException e )
51          {
52              assertTrue( true );
53          }
54  
55          // Sun JDK 1.4
56          version = "java full version \"1.4.2_12-b03\"";
57          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.42f, 0 );
58  
59          // Sun JDK 1.5
60          version = "java full version \"1.5.0_07-164\"";
61          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
62  
63          // IBM JDK 1.4
64          version = "java full version \"J2RE 1.4.2 IBM Windows 32 build cn1420-20040626\"";
65          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.42f, 0 );
66  
67          // IBM JDK 1.5
68          version = "javadoc version complète de \"J2RE 1.5.0 IBM Windows 32 build pwi32pdev-20070426a\"";
69          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
70  
71          // IBM JDK 1.5
72          version = "J2RE 1.5.0 IBM Windows 32 build pwi32devifx-20070323 (ifix 117674: SR4 + 116644 + 114941 + 116110 + 114881)";
73          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
74  
75          // FreeBSD
76          version = "java full version \"diablo-1.5.0-b01\"";
77          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
78  
79          // BEA
80          version = "java full version \"1.5.0_11-b03\"";
81          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
82  
83          // Other tests
84          version = "java full version \"1.5.0_07-164\"" + System.getProperty( "line.separator" );
85          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
86          version = System.getProperty( "line.separator" ) + "java full version \"1.5.0_07-164\"";
87          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
88          version = System.getProperty( "line.separator" ) + "java full version \"1.5.0_07-164\""
89              + System.getProperty( "line.separator" );
90          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
91          version = "java full" + System.getProperty( "line.separator" ) + " version \"1.5.0_07-164\"";
92          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
93  
94          version = "java full version \"1.99.123-b01\"";
95          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.99123f, 0 );
96  
97          version = "java full version \"1.5.0.07-164\"";
98          assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
99  
100         version = "java full version \"1.4\"";
101         assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.4f, 0 );
102 
103         version = "java full version \"1.A.B_07-164\"";
104         try
105         {
106             JavadocUtil.parseJavadocVersion( version );
107             assertTrue( "Not catch wrong pattern", false );
108         }
109         catch ( PatternSyntaxException e )
110         {
111             assertTrue( true );
112         }
113 
114         version = "SCO-UNIX-J2SE-1.5.0_09*FCS-UW714-OSR6*_20061114";
115         assertEquals( JavadocUtil.parseJavadocVersion( version ), 1.5f, 0 );
116     }
117 
118     /**
119      * Method to test the javadoc memory parsing.
120      *
121      * @throws Exception if any
122      */
123     public void testParseJavadocMemory()
124         throws Exception
125     {
126         String memory = null;
127         try
128         {
129             JavadocUtil.parseJavadocMemory( memory );
130             assertTrue( "Not catch null", false );
131         }
132         catch ( IllegalArgumentException e )
133         {
134             assertTrue( true );
135         }
136 
137         memory = "128";
138         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128m" );
139 
140         memory = "128k";
141         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128k" );
142         memory = "128kb";
143         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128k" );
144 
145         memory = "128m";
146         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128m" );
147         memory = "128mb";
148         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128m" );
149 
150         memory = "1g";
151         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "1024m" );
152         memory = "1gb";
153         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "1024m" );
154 
155         memory = "1t";
156         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "1048576m" );
157         memory = "1tb";
158         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "1048576m" );
159 
160         memory = System.getProperty( "line.separator" ) + "128m";
161         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128m" );
162         memory = System.getProperty( "line.separator" ) + "128m" + System.getProperty( "line.separator" );
163         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128m" );
164 
165         memory = "     128m";
166         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128m" );
167         memory = "     128m     ";
168         assertEquals( JavadocUtil.parseJavadocMemory( memory ), "128m" );
169 
170         memory = "1m28m";
171         try
172         {
173             JavadocUtil.parseJavadocMemory( memory );
174             assertTrue( "Not catch wrong pattern", false );
175         }
176         catch ( IllegalArgumentException e )
177         {
178             assertTrue( true );
179         }
180         memory = "ABC128m";
181         try
182         {
183             JavadocUtil.parseJavadocMemory( memory );
184             assertTrue( "Not catch wrong pattern", false );
185         }
186         catch ( IllegalArgumentException e )
187         {
188             assertTrue( true );
189         }
190     }
191 
192     /**
193      * Method to test the validate encoding parsing.
194      *
195      * @throws Exception if any
196      */
197     public void testValidateEncoding()
198         throws Exception
199     {
200         assertFalse( "Not catch null", JavadocUtil.validateEncoding( null ) );
201         assertTrue( "UTF-8 not supported on this plateform", JavadocUtil.validateEncoding( "UTF-8" ) );
202         assertTrue( "ISO-8859-1 not supported on this plateform", JavadocUtil.validateEncoding( "ISO-8859-1" ) );
203         assertFalse( "latin is supported on this plateform???", JavadocUtil.validateEncoding( "latin" ) );
204         assertFalse( "WRONG is supported on this plateform???", JavadocUtil.validateEncoding( "WRONG" ) );
205     }
206 
207     /**
208      * Method to test the hiding proxy password.
209      *
210      * @throws Exception if any
211      */
212     public void testHideProxyPassword()
213         throws Exception
214     {
215         String cmdLine = "javadoc.exe " + "-J-Dhttp.proxySet=true " + "-J-Dhttp.proxyHost=http://localhost "
216         + "-J-Dhttp.proxyPort=80 " + "-J-Dhttp.nonProxyHosts=\"www.google.com|*.somewhere.com\" "
217         + "-J-Dhttp.proxyUser=\"toto\" " + "-J-Dhttp.proxyPassword=\"toto\" " + "@options @packages";
218         cmdLine = JavadocUtil.hideProxyPassword( cmdLine, null );
219         assertFalse( cmdLine.indexOf( "-J-Dhttp.proxyPassword=\"****\"" ) != -1 );
220 
221         Settings settings = new Settings();
222         Proxy proxy = new Proxy();
223         proxy.setActive( true );
224         proxy.setHost( "http://localhost" );
225         proxy.setPort( 80 );
226         proxy.setUsername( "toto" );
227         proxy.setPassword( "toto" );
228         proxy.setNonProxyHosts( "www.google.com|*.somewhere.com" );
229         settings.addProxy( proxy );
230 
231         cmdLine = "javadoc.exe " + "-J-Dhttp.proxySet=true " + "-J-Dhttp.proxyHost=http://localhost "
232             + "-J-Dhttp.proxyPort=80 " + "-J-Dhttp.nonProxyHosts=\"www.google.com|*.somewhere.com\" "
233             + "-J-Dhttp.proxyUser=\"toto\" " + "-J-Dhttp.proxyPassword=\"toto\" " + "@options @packages";
234         cmdLine = JavadocUtil.hideProxyPassword( cmdLine, settings );
235         assertTrue( cmdLine.indexOf( "-J-Dhttp.proxyPassword=\"****\"" ) != -1 );
236 
237         settings = new Settings();
238         proxy = new Proxy();
239         proxy.setActive( true );
240         proxy.setHost( "http://localhost" );
241         proxy.setPort( 80 );
242         proxy.setUsername( "toto" );
243         proxy.setNonProxyHosts( "www.google.com|*.somewhere.com" );
244         settings.addProxy( proxy );
245 
246         cmdLine = "javadoc.exe " + "-J-Dhttp.proxySet=true " + "-J-Dhttp.proxyHost=http://localhost "
247         + "-J-Dhttp.proxyPort=80 " + "-J-Dhttp.nonProxyHosts=\"www.google.com|*.somewhere.com\" "
248         + "-J-Dhttp.proxyUser=\"toto\" " + "-J-Dhttp.proxyPassword=\"toto\" " + "@options @packages";
249         cmdLine = JavadocUtil.hideProxyPassword( cmdLine, null );
250         assertFalse( cmdLine.indexOf( "-J-Dhttp.proxyPassword=\"****\"" ) != -1 );
251     }
252 }