View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.enforcer.rules.version;
20  
21  import org.apache.maven.artifact.versioning.ArtifactVersion;
22  import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
23  import org.apache.maven.enforcer.rule.api.EnforcerLogger;
24  import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
25  import org.junit.jupiter.api.Test;
26  
27  import static org.junit.jupiter.api.Assertions.fail;
28  import static org.mockito.Mockito.mock;
29  
30  /**
31   * The Class TestAbstractVersionEnforcer.
32   *
33   * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
34   */
35  class TestAbstractVersionEnforcer {
36  
37      /**
38       * Enforce false.
39       *
40       * @param rule the rule
41       * @param var the var
42       * @param range the range
43       * @param version the version
44       */
45      private void enforceFalse(AbstractVersionEnforcer rule, String var, String range, ArtifactVersion version) {
46          try {
47              rule.enforceVersion(var, range, version);
48              fail("Expected to receive EnforcerRuleException because:" + version + " is not contained by " + range);
49          } catch (Exception e) {
50              if (e instanceof EnforcerRuleException) {
51                  // log.info( "Caught Expected Exception: " +
52                  // e.getLocalizedMessage() );
53              } else {
54                  fail("Received wrong exception. Expected EnforcerRuleExeption. Received:" + e);
55              }
56          }
57      }
58  
59      /**
60       * Test enforce version.
61       */
62      @Test
63      void testEnforceVersion() throws Exception {
64          RequireJavaVersion rule = new RequireJavaVersion();
65          rule.setLog(mock(EnforcerLogger.class));
66  
67          ArtifactVersion version = new DefaultArtifactVersion("2.0.5");
68  
69          // test ranges
70          rule.enforceVersion("test", "[2.0.5,)", version);
71          rule.enforceVersion("test", "[2.0.4,)", version);
72          rule.enforceVersion("test", "[2.0.4,2.0.5]", version);
73          rule.enforceVersion("test", "[2.0.4,2.0.6]", version);
74          rule.enforceVersion("test", "[2.0.4,2.0.6)", version);
75          rule.enforceVersion("test", "[2.0,)", version);
76          rule.enforceVersion("test", "[2.0.0,)", version);
77  
78          // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5
79          rule.enforceVersion("test", "2.0", version);
80          rule.enforceVersion("test", "2.0.4", version);
81          rule.enforceVersion("test", "2.0.5", version);
82  
83          enforceFalse(rule, "test", "[2.0.6,)", version);
84          enforceFalse(rule, "test", "(2.0.5,)", version);
85          enforceFalse(rule, "test", "2.0.6", version);
86  
87          enforceFalse(rule, "test", "[2.0.4,2.0.5)", version);
88  
89          // make sure to handle the invalid range specification
90          enforceFalse(rule, "test", "[[2.0.4,2.0.5)", version);
91      }
92  }