View Javadoc

1   package org.apache.maven.plugins.enforcer;
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.IOException;
23  import java.util.ArrayList;
24  
25  import junit.framework.TestCase;
26  
27  import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
28  import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
29  import org.apache.maven.plugin.testing.ArtifactStubFactory;
30  
31  // TODO: Auto-generated Javadoc
32  /**
33   * The Class TestBannedDependencies.
34   *
35   * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
36   */
37  public class TestBannedDependencies
38      extends TestCase
39  {
40  
41      /**
42       * Test rule.
43       *
44       * @throws IOException Signals that an I/O exception has occurred.
45       */
46      public void testRule()
47          throws IOException
48      {
49          ArtifactStubFactory factory = new ArtifactStubFactory();
50          MockProject project = new MockProject();
51          EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
52          project.setArtifacts( factory.getMixedArtifacts() );
53          project.setDependencyArtifacts( factory.getScopedArtifacts() );
54          BannedDependencies rule = new BannedDependencies();
55  
56          ArrayList excludes = new ArrayList();
57          rule.setSearchTransitive( false );
58  
59          // test whole name
60          excludes.add( "testGroupId:release:1.0" );
61          rule.setExcludes( excludes );
62  
63          execute( rule, helper, false );
64  
65          // test group:artifact
66          excludes.clear();
67          excludes.add( "testGroupId:release" );
68          execute( rule, helper, false );
69  
70          // test group
71          excludes.clear();
72          excludes.add( "testGroupId" );
73          execute( rule, helper, false );
74  
75          // now check one that should be found in direct
76          // dependencies
77          excludes.clear();
78          excludes.add( "g:compile:1.0" );
79          execute( rule, helper, true );
80          rule.setSearchTransitive( true );
81  
82          // whole name
83          excludes.clear();
84          excludes.add( "testGroupId:release:1.0" );
85          execute( rule, helper, true );
86  
87          // group:artifact
88          excludes.clear();
89          excludes.add( "testGroupId:release" );
90          execute( rule, helper, true );
91  
92          // group
93          excludes.clear();
94          excludes.add( "testGroupId" );
95          execute( rule, helper, true );
96  
97          // now check wildcards
98          excludes.clear();
99          excludes.add( "*:release" );
100         execute( rule, helper, true );
101 
102         // now check wildcards
103         excludes.clear();
104         excludes.add( "*:*:1.0" );
105         execute( rule, helper, true );
106 
107         // now check wildcards
108         excludes.clear();
109         excludes.add( "*:release:*" );
110         execute( rule, helper, true );
111 
112         // now check wildcards
113         excludes.clear();
114         excludes.add( "*:release:1.2" );
115         execute( rule, helper, false );
116 
117         // now check multiple excludes
118         excludes.add( "*:release:*" );
119         execute( rule, helper, true );
120 
121         // now check space trimming
122         excludes.clear();
123         excludes.add( "  testGroupId  :  release   :   1.0    " );
124         execute( rule, helper, true );
125 
126         // now check weirdness
127         excludes.clear();
128         excludes.add( ":::" ); // null entry, won't match anything
129         execute( rule, helper, false );
130     }
131 
132     /**
133      * Test includes.
134      *
135      * @throws IOException Signals that an I/O exception has occurred.
136      */
137     public void testIncludes()
138         throws IOException
139     {
140         ArtifactStubFactory factory = new ArtifactStubFactory();
141         MockProject project = new MockProject();
142         EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
143         project.setArtifacts( factory.getMixedArtifacts() );
144         project.setDependencyArtifacts( factory.getScopedArtifacts() );
145         BannedDependencies rule = new BannedDependencies();
146 
147         ArrayList excludes = new ArrayList();
148         ArrayList includes = new ArrayList();
149 
150         rule.setSearchTransitive( false );
151 
152         excludes.add( "*" );
153         includes.add( "*" );
154 
155         rule.setExcludes( excludes );
156         rule.setIncludes( includes );
157 
158         execute( rule, helper, false );
159 
160         excludes.clear();
161         excludes.add( "*:runtime" );
162         rule.setExcludes( excludes );
163 
164         execute( rule, helper, false );
165 
166         includes.clear();
167         includes.add( "*:test" );
168         rule.setIncludes( includes );
169         execute( rule, helper, true );
170     }
171 
172     /**
173      * Simpler wrapper to execute and deal with the expected result.
174      *
175      * @param rule the rule
176      * @param helper the helper
177      * @param shouldFail the should fail
178      */
179     private void execute( BannedDependencies rule, EnforcerRuleHelper helper, boolean shouldFail )
180     {
181         try
182         {
183             rule.message = null;
184             rule.execute( helper );
185             if ( shouldFail )
186             {
187                 fail( "Exception expected." );
188             }
189         }
190         catch ( EnforcerRuleException e )
191         {
192             if ( !shouldFail )
193             {
194                 fail( "No Exception expected:" + e.getLocalizedMessage() );
195             }
196             // helper.getLog().debug(e.getMessage());
197         }
198     }
199 }