View Javadoc

1   package org.apache.maven.it;
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 org.apache.maven.it.Verifier;
23  import org.apache.maven.it.util.ResourceExtractor;
24  
25  import java.io.File;
26  import java.util.Iterator;
27  import java.util.List;
28  
29  /**
30   * This is a test set for <a href="http://jira.codehaus.org/browse/MNG-4005">MNG-4005</a>.
31   * 
32   * @author Benjamin Bentmann
33   */
34  public class MavenITmng4005UniqueDependencyKeyTest
35      extends AbstractMavenIntegrationTestCase
36  {
37  
38      public MavenITmng4005UniqueDependencyKeyTest()
39      {
40          super( "[3.0-beta-1,)" );
41      }
42  
43      /**
44       * Test that duplicate dependencies cause a validation error during building.
45       */
46      public void testitDependency()
47          throws Exception
48      {
49          test( "dep" );
50      }
51  
52      /**
53       * Test that duplicate managed dependencies cause a validation error during building.
54       */
55      public void testitManagedDependency()
56          throws Exception
57      {
58          test( "man-dep" );
59      }
60  
61      /**
62       * Test that duplicate dependencies in profiles cause a validation error during building.
63       */
64      public void testitProfileDependency()
65          throws Exception
66      {
67          test( "profile-dep" );
68      }
69  
70      /**
71       * Test that duplicate managed dependencies in profiles cause a validation error during building.
72       */
73      public void testitProfileManagedDependency()
74          throws Exception
75      {
76          test( "profile-man-dep" );
77      }
78  
79      private void test( String project )
80          throws Exception
81      {
82          File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4005/" + project );
83  
84          Verifier verifier = newVerifier( testDir.getAbsolutePath() );
85          verifier.setAutoclean( false );
86          verifier.deleteDirectory( "target" );
87          verifier.executeGoal( "validate" );
88          verifier.verifyErrorFreeLog();
89          verifier.resetStreams();
90  
91          List lines = verifier.loadLines( verifier.getLogFileName(), "UTF-8" );
92          boolean foundWarning = false;
93          for ( Iterator it = lines.iterator(); it.hasNext(); )
94          {
95              String line = (String) it.next();
96              
97              if ( line.startsWith( "[WARNING]" ) && line.indexOf( "must be unique: junit:junit:jar" ) > 0 )
98              {
99                  foundWarning = true;
100             }
101         }
102         
103         assertTrue( "Duplicate dependency warning wasn't generated.", foundWarning );
104     }
105 
106 }