You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2023/01/13 15:46:50 UTC

[maven-enforcer] branch master updated: [MENFORCER-458] Move Require Property,Environment to new API

This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git


The following commit(s) were added to refs/heads/master by this push:
     new 5e7c61e  [MENFORCER-458] Move Require Property,Environment to new API
5e7c61e is described below

commit 5e7c61eca1590ae9ab005f087ab46dbb734175c7
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Thu Jan 12 20:18:12 2023 +0100

    [MENFORCER-458] Move Require Property,Environment to new API
---
 .../property}/AbstractPropertyEnforcerRule.java    | 17 +++----
 .../property}/RequireEnvironmentVariable.java      | 39 +++++++--------
 .../rules/property}/RequireProperty.java           | 42 ++++++++++------
 .../src/site/apt/requireEnvironmentVariable.apt.vm | 19 +++++---
 enforcer-rules/src/site/apt/requireProperty.apt.vm |  8 ++--
 .../property}/TestRequireEnvironmentVariable.java  | 32 ++++++-------
 .../rules/property}/TestRequireProperty.java       | 48 +++++++++++--------
 .../projects/require-environment-variable/pom.xml  | 56 ++++++++++++++++++++++
 .../require-environment-variable/verify.groovy     | 21 ++++++++
 .../src/it/projects/require-property/verify.groovy | 20 ++++++++
 10 files changed, 207 insertions(+), 95 deletions(-)

diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractPropertyEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/AbstractPropertyEnforcerRule.java
similarity index 87%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractPropertyEnforcerRule.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/AbstractPropertyEnforcerRule.java
index 1072ddd..4fd10dd 100755
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractPropertyEnforcerRule.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/AbstractPropertyEnforcerRule.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.property;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;
 
 /**
  * Abstract enforcer rule that give a foundation to validate properties from multiple sources.
@@ -27,7 +27,7 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
  * @author Paul Gier
  * @author <a href='mailto:marvin[at]marvinformatics[dot]com'>Marvin Froeder</a>
  */
-public abstract class AbstractPropertyEnforcerRule extends AbstractNonCacheableEnforcerRule {
+abstract class AbstractPropertyEnforcerRule extends AbstractStandardEnforcerRule {
 
     /**
      * Match the property value to a given regular expression. Defaults to <code>null</code> (any value is ok).
@@ -45,10 +45,6 @@ public abstract class AbstractPropertyEnforcerRule extends AbstractNonCacheableE
      */
     private String regexMessage = null;
 
-    public AbstractPropertyEnforcerRule() {
-        super();
-    }
-
     /**
      * Set the property value to a given regular expression. Defaults to <code>null</code> (any value is ok).
      *
@@ -86,8 +82,8 @@ public abstract class AbstractPropertyEnforcerRule extends AbstractNonCacheableE
     }
 
     @Override
-    public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
-        Object propValue = resolveValue(helper);
+    public void execute() throws EnforcerRuleException {
+        Object propValue = resolveValue();
 
         // Check that the property is not null or empty string
         if (propValue == null) {
@@ -123,8 +119,7 @@ public abstract class AbstractPropertyEnforcerRule extends AbstractNonCacheableE
     /**
      * Resolves the property value
      *
-     * @param helper
      * @throws EnforcerRuleException
      */
-    protected abstract Object resolveValue(EnforcerRuleHelper helper) throws EnforcerRuleException;
+    protected abstract Object resolveValue() throws EnforcerRuleException;
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireEnvironmentVariable.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/RequireEnvironmentVariable.java
similarity index 64%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireEnvironmentVariable.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/RequireEnvironmentVariable.java
index 4ad9380..14c8389 100755
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireEnvironmentVariable.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/RequireEnvironmentVariable.java
@@ -16,17 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.property;
 
-import org.apache.maven.enforcer.rule.api.EnforcerRule;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import javax.inject.Named;
 
 /**
  * This rule checks that certain environment variable is set.
  *
  * @author <a href='mailto:marvin[at]marvinformatics[dot]com'>Marvin Froeder</a>
  */
-public class RequireEnvironmentVariable extends AbstractPropertyEnforcerRule {
+@Named("requireEnvironmentVariable")
+public final class RequireEnvironmentVariable extends AbstractPropertyEnforcerRule {
 
     /**
      * Specify the required variable.
@@ -39,36 +39,22 @@ public class RequireEnvironmentVariable extends AbstractPropertyEnforcerRule {
      * @see #setVariableName(String)
      * @see #getVariableName()
      */
-    public final void setVariableName(String variableName) {
+    public void setVariableName(String variableName) {
         this.variableName = variableName;
     }
 
-    public final String getVariableName() {
+    public String getVariableName() {
         return variableName;
     }
 
     @Override
-    public String resolveValue(EnforcerRuleHelper helper) {
-        String envValue = System.getenv(variableName);
-        return envValue;
-    }
-
-    @Override
-    public boolean isCacheable() {
-        // environment variables won't change while maven is on the run
-        return true;
-    }
-
-    @Override
-    public boolean isResultValid(EnforcerRule cachedRule) {
-        // this rule shall always have the same result, since environment
-        // variables are set before maven is launched
-        return true;
+    public String resolveValue() {
+        return System.getenv(variableName);
     }
 
     @Override
     public String getCacheId() {
-        return variableName;
+        return String.valueOf(toString().hashCode());
     }
 
     @Override
@@ -80,4 +66,11 @@ public class RequireEnvironmentVariable extends AbstractPropertyEnforcerRule {
     public String getName() {
         return "Environment variable";
     }
+
+    @Override
+    public String toString() {
+        return String.format(
+                "RequireEnvironmentVariable[variableName=%s, message=%s, regex=%s, regexMessage=%s]",
+                variableName, getMessage(), getRegex(), getRegexMessage());
+    }
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/RequireProperty.java
similarity index 59%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/RequireProperty.java
index e465262..cdfe411 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/property/RequireProperty.java
@@ -16,10 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.property;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import java.util.Objects;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.enforcer.rules.utils.ExpressionEvaluator;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
 /**
@@ -27,7 +32,8 @@ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluatio
  *
  * @author Paul Gier
  */
-public class RequireProperty extends AbstractPropertyEnforcerRule {
+@Named("requireProperty")
+public final class RequireProperty extends AbstractPropertyEnforcerRule {
 
     /**
      * Specify the required property.
@@ -37,23 +43,24 @@ public class RequireProperty extends AbstractPropertyEnforcerRule {
      */
     private String property = null;
 
-    public final void setProperty(String property) {
+    private final ExpressionEvaluator evaluator;
+
+    @Inject
+    public RequireProperty(ExpressionEvaluator evaluator) {
+        this.evaluator = Objects.requireNonNull(evaluator);
+    }
+
+    public void setProperty(String property) {
         this.property = property;
     }
 
     @Override
-    public Object resolveValue(EnforcerRuleHelper helper) throws EnforcerRuleException {
-        Object propValue = null;
+    public Object resolveValue() throws EnforcerRuleException {
         try {
-            propValue = helper.evaluate("${" + property + "}");
-        } catch (ExpressionEvaluationException eee) {
-            throw new EnforcerRuleException("Unable to evaluate property: " + property, eee);
+            return evaluator.evaluate("${" + property + "}");
+        } catch (ExpressionEvaluationException e) {
+            throw new EnforcerRuleException(e);
         }
-        return propValue;
-    }
-
-    protected String resolveValue() {
-        return null;
     }
 
     @Override
@@ -65,4 +72,11 @@ public class RequireProperty extends AbstractPropertyEnforcerRule {
     public String getName() {
         return "Property";
     }
+
+    @Override
+    public String toString() {
+        return String.format(
+                "RequireProperty[property=%s, message=%s, regex=%s, regexMessage=%s]",
+                property, getMessage(), getRegex(), getRegexMessage());
+    }
 }
diff --git a/enforcer-rules/src/site/apt/requireEnvironmentVariable.apt.vm b/enforcer-rules/src/site/apt/requireEnvironmentVariable.apt.vm
index 1ec072a..79e63b4 100644
--- a/enforcer-rules/src/site/apt/requireEnvironmentVariable.apt.vm
+++ b/enforcer-rules/src/site/apt/requireEnvironmentVariable.apt.vm
@@ -27,16 +27,21 @@ Require Environment Variable
 
   This rule checks that a specified environment variable is set.
 
-
-   The following parameters are supported by this rule:
-   
-   * message - an optional message to the user if the rule fails.
+  The following parameters are supported by this rule:
    
-   * variableName - The name of the environment variable to be checked for.
+  * <<message>> - an optional message to the user if the rule fails.
    
-   []
+  * <<variableName>> - The name of the environment variable to be checked for.
+
+  * <<regex>> - an optional regular expression used to check the value of the property.
+
+  * <<regexMessage>> - an optional message to the user if the regex check fails.
+
+  []
+
+  The regex is applied to the entire value of the environment variable (i.e. using the regex "match" method),
+  and not just a substring of the environment variable value.
 
-   
   Sample Plugin Configuration:
   
 +---+
diff --git a/enforcer-rules/src/site/apt/requireProperty.apt.vm b/enforcer-rules/src/site/apt/requireProperty.apt.vm
index 0023056..9939395 100644
--- a/enforcer-rules/src/site/apt/requireProperty.apt.vm
+++ b/enforcer-rules/src/site/apt/requireProperty.apt.vm
@@ -29,13 +29,13 @@ Require Property
 
   The following parameters are supported by this rule:
    
-  * property - the property to evaluate.
+  * <<property>> - the property to evaluate.
    
-  * message - an optional message to the user if the rule fails. Default is: "Property 'xxx' is required for this build".	
+  * <<message>> - an optional message to the user if the rule fails. Default is: "Property 'xxx' is required for this build".
    
-  * regex - a regular expression used to check the value of the property.
+  * <<regex>> - an optional regular expression used to check the value of the property.
    
-  * regexMessage - an optional message to the user if the regex check fails.
+  * <<regexMessage>> - an optional message to the user if the regex check fails.
 
   []
 
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireEnvironmentVariable.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/property/TestRequireEnvironmentVariable.java
similarity index 74%
rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireEnvironmentVariable.java
rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/property/TestRequireEnvironmentVariable.java
index a962392..9e97fd4 100755
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireEnvironmentVariable.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/property/TestRequireEnvironmentVariable.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.property;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.fail;
@@ -29,24 +29,20 @@ import static org.junit.jupiter.api.Assertions.fail;
  *
  * @author <a href='mailto:marvin[at]marvinformatics[dot]com'>Marvin Froeder</a>
  */
-public class TestRequireEnvironmentVariable {
+class TestRequireEnvironmentVariable {
 
+    private RequireEnvironmentVariable rule = new RequireEnvironmentVariable();
     /**
      * Test rule.
      *
      */
     @Test
-    public void testRule() {
-        MockProject project = new MockProject();
-        project.setProperty("testProp", "This is a test.");
-        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(project);
-
-        RequireEnvironmentVariable rule = new RequireEnvironmentVariable();
+    void testRule() {
         // this env variable should not be set
         rule.setVariableName("JUNK");
 
         try {
-            rule.execute(helper);
+            rule.execute();
             fail("Expected an exception.");
         } catch (EnforcerRuleException e) {
             // expected to catch this.
@@ -55,7 +51,7 @@ public class TestRequireEnvironmentVariable {
         // PATH shall be common to windows and linux
         rule.setVariableName("PATH");
         try {
-            rule.execute(helper);
+            rule.execute();
         } catch (EnforcerRuleException e) {
             fail("This should not throw an exception");
         }
@@ -66,17 +62,15 @@ public class TestRequireEnvironmentVariable {
      *
      */
     @Test
-    public void testRuleWithRegex() {
-        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
+    void testRuleWithRegex() {
 
-        RequireEnvironmentVariable rule = new RequireEnvironmentVariable();
         rule.setVariableName("PATH");
         // This expression should not match the property
         // value
         rule.setRegex("[^abc]");
 
         try {
-            rule.execute(helper);
+            rule.execute();
             fail("Expected an exception.");
         } catch (EnforcerRuleException e) {
             // expected to catch this.
@@ -85,9 +79,15 @@ public class TestRequireEnvironmentVariable {
         // can't really predict what a PATH will looks like, just enforce it ain't empty
         rule.setRegex(".{1,}");
         try {
-            rule.execute(helper);
+            rule.execute();
         } catch (EnforcerRuleException e) {
             fail("This should not throw an exception");
         }
     }
+
+    @Test
+    void ruleShouldBeCached() {
+        rule.setVariableName("TEST");
+        Assertions.assertThat(rule.getCacheId()).isNotEmpty();
+    }
 }
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireProperty.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/property/TestRequireProperty.java
similarity index 68%
rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireProperty.java
rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/property/TestRequireProperty.java
index 68aba54..cf40ab3 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireProperty.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/property/TestRequireProperty.java
@@ -16,47 +16,58 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.property;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.enforcer.rules.utils.ExpressionEvaluator;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.fail;
+import static org.mockito.Mockito.when;
 
 /**
  * The Class TestRequireProperty.
  *
  * @author Paul Gier
  */
-public class TestRequireProperty {
+@ExtendWith(MockitoExtension.class)
+class TestRequireProperty {
+
+    @Mock
+    private ExpressionEvaluator evaluator;
+
+    @InjectMocks
+    private RequireProperty rule;
 
     /**
      * Test rule.
      *
      */
     @Test
-    public void testRule() {
-        MockProject project = new MockProject();
-        project.setProperty("testProp", "This is a test.");
-        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(project);
+    void testRule() throws Exception {
 
-        RequireProperty rule = new RequireProperty();
         // this property should not be set
         rule.setProperty("testPropJunk");
 
         try {
-            rule.execute(helper);
+            rule.execute();
             fail("Expected an exception.");
         } catch (EnforcerRuleException e) {
             // expected to catch this.
         }
 
+        when(evaluator.evaluate("${testProp}")).thenReturn("This is a test.");
+
         // this property should be set by the surefire
         // plugin
         rule.setProperty("testProp");
         try {
-            rule.execute(helper);
+            rule.execute();
         } catch (EnforcerRuleException e) {
             fail("This should not throw an exception");
         }
@@ -67,19 +78,17 @@ public class TestRequireProperty {
      *
      */
     @Test
-    public void testRuleWithRegex() {
-        MockProject project = new MockProject();
-        project.setProperty("testProp", "This is a test.");
-        EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(project);
+    void testRuleWithRegex() throws Exception {
+
+        when(evaluator.evaluate("${testProp}")).thenReturn("This is a test.");
 
-        RequireProperty rule = new RequireProperty();
         rule.setProperty("testProp");
         // This expression should not match the property
         // value
         rule.setRegex("[^abc]");
 
         try {
-            rule.execute(helper);
+            rule.execute();
             fail("Expected an exception.");
         } catch (EnforcerRuleException e) {
             // expected to catch this.
@@ -88,7 +97,7 @@ public class TestRequireProperty {
         // this expr should match the property
         rule.setRegex("[This].*[.]");
         try {
-            rule.execute(helper);
+            rule.execute();
         } catch (EnforcerRuleException e) {
             fail("This should not throw an exception");
         }
@@ -98,8 +107,7 @@ public class TestRequireProperty {
      * Test id.
      */
     @Test
-    public void testId() {
-        RequireProperty rule = new RequireProperty();
-        rule.getCacheId();
+    void ruleShouldNotBeCached() {
+        assertThat(rule.getCacheId()).isNull();
     }
 }
diff --git a/maven-enforcer-plugin/src/it/projects/require-environment-variable/pom.xml b/maven-enforcer-plugin/src/it/projects/require-environment-variable/pom.xml
new file mode 100644
index 0000000..fdc6d35
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/projects/require-environment-variable/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireEnvironmentVariable>
+                  <variableName>PATH</variableName>
+                </requireEnvironmentVariable>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/projects/require-environment-variable/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-environment-variable/verify.groovy
new file mode 100644
index 0000000..008b2de
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/projects/require-environment-variable/verify.groovy
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+File buildLog = new File(basedir, 'build.log')
+
+assert buildLog.text.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.property.RequireEnvironmentVariable executed')
diff --git a/maven-enforcer-plugin/src/it/projects/require-property/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-property/verify.groovy
new file mode 100644
index 0000000..e8bcceb
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/projects/require-property/verify.groovy
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+File buildLog = new File(basedir, 'build.log')
+assert buildLog.text.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.property.RequireProperty executed')