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 java.io.File;
23  import java.util.List;
24  
25  import org.apache.maven.it.Verifier;
26  import org.apache.maven.it.util.ResourceExtractor;
27  
28  /**
29   * This is a test set for <a href="http://jira.codehaus.org/browse/MNG-2045">MNG-2045</a>:
30   * Simple IT test invoking maven in a reactor with 2 projects -- 
31   * first project produces a test-jar, which is required to 
32   * compile second project. 
33   *
34   * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
35   * @author mikko.koponen@ri.fi
36   */
37  public class MavenITmng2045testJarDependenciesBrokenInReactorTest
38      extends AbstractMavenIntegrationTestCase 
39  {
40  
41      public MavenITmng2045testJarDependenciesBrokenInReactorTest()
42      {
43          super( "(2.0.7,)" ); // 2.0.8+
44      }
45  
46      public void testitMNG2045()
47          throws Exception
48      {
49          File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-2045" );
50  
51          Verifier verifier = newVerifier( testDir.getAbsolutePath() );
52          verifier.setAutoclean( false );
53          verifier.deleteDirectory( "test-user/target" );
54          verifier.deleteArtifacts( "org.apache.maven.its.mng2045" );
55          verifier.executeGoal( "validate" );
56          verifier.verifyErrorFreeLog();
57          verifier.resetStreams();
58  
59          List compile = verifier.loadLines( "test-user/target/compile.txt", "UTF-8" );
60          assertTestClasses( compile );
61          assertNotMainClasses( compile );
62  
63          List runtime = verifier.loadLines( "test-user/target/runtime.txt", "UTF-8" );
64          assertTestClasses( runtime );
65          assertNotMainClasses( runtime );
66  
67          List test = verifier.loadLines( "test-user/target/test.txt", "UTF-8" );
68          assertTestClasses( test );
69          assertNotMainClasses( test );
70      }
71  
72      private void assertTestClasses( List classpath )
73      {
74          /*
75           * Different Maven versions use the test-classes directory or the assembled test JAR but all that matters here
76           * is merely that we have the test classes on the classpath.
77           */
78          assertTrue( "test classes missing in " + classpath, 
79              classpath.contains( "test" ) || classpath.contains( "test.jar" )
80                  || classpath.contains( "test-jar-0.1-SNAPSHOT-tests.jar" ) );
81      }
82  
83      private void assertNotMainClasses( List classpath )
84      {
85          // When depending on the test JAR of some module, we shouldn't get its main classes
86          assertFalse( "main classes present in " + classpath, 
87              classpath.contains( "main" ) );
88      }
89  
90  }