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.util.ResourceExtractor;
23
24 import java.io.File;
25 import java.util.List;
26
27 /**
28 * This is a test set for <a href="https://issues.apache.org/jira/browse/MNG-4005">MNG-4005</a>.
29 *
30 * @author Benjamin Bentmann
31 */
32 public class MavenITmng4005UniqueDependencyKeyTest
33 extends AbstractMavenIntegrationTestCase
34 {
35
36 public MavenITmng4005UniqueDependencyKeyTest()
37 {
38 super( "[3.0-beta-1,)" );
39 }
40
41 /**
42 * Test that duplicate dependencies cause a validation error during building.
43 *
44 * @throws Exception in case of failure
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 * @throws Exception in case of failure
56 */
57 public void testitManagedDependency()
58 throws Exception
59 {
60 test( "man-dep" );
61 }
62
63 /**
64 * Test that duplicate dependencies in profiles cause a validation error during building.
65 *
66 * @throws Exception in case of failure
67 */
68 public void testitProfileDependency()
69 throws Exception
70 {
71 test( "profile-dep" );
72 }
73
74 /**
75 * Test that duplicate managed dependencies in profiles cause a validation error during building.
76 *
77 * @throws Exception in case of failure
78 */
79 public void testitProfileManagedDependency()
80 throws Exception
81 {
82 test( "profile-man-dep" );
83 }
84
85 private void test( String project )
86 throws Exception
87 {
88 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4005/" + project );
89
90 Verifier verifier = newVerifier( testDir.getAbsolutePath() );
91 verifier.setAutoclean( false );
92 verifier.deleteDirectory( "target" );
93 try {
94 verifier.executeGoal( "validate" );
95 }
96 catch ( VerificationException e )
97 {
98 // expected with Maven 4+
99 }
100 verifier.resetStreams();
101
102 String logLevel;
103 if ( matchesVersionRange( "(,4.0.0-alpha-1)" ) )
104 {
105 logLevel = "WARNING";
106 }
107 else
108 {
109 logLevel = "ERROR";
110 }
111
112 List<String> lines = verifier.loadLines( verifier.getLogFileName(), "UTF-8" );
113 boolean foundMessage = false;
114 for ( String line : lines )
115 {
116 if ( line.startsWith( "[" + logLevel + "]" ) && line.indexOf( "must be unique: junit:junit:jar" ) > 0 )
117 {
118 foundMessage = true;
119 }
120 }
121
122 assertTrue( "Duplicate dependency message wasn't generated.", foundMessage );
123 }
124
125 }