[MSHARED-547] added support for colorized output checks (ignoring ANSI escape codes)

git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1746888 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/it/Verifier.java b/src/main/java/org/apache/maven/it/Verifier.java
index aff9d2e..fdcd869 100644
--- a/src/main/java/org/apache/maven/it/Verifier.java
+++ b/src/main/java/org/apache/maven/it/Verifier.java
@@ -281,7 +281,7 @@
         for ( String line : lines )
         {
             // A hack to keep stupid velocity resource loader errors from triggering failure
-            if ( line.contains( "[ERROR]" ) && !isVelocityError( line ) )
+            if ( stripAnsi( line ).contains( "[ERROR]" ) && !isVelocityError( line ) )
             {
                 throw new VerificationException( "Error in execution: " + line );
             }
@@ -314,7 +314,7 @@
         boolean result = false;
         for ( String line : lines )
         {
-            if ( line.contains( text ) )
+            if ( stripAnsi( line ).contains( text ) )
             {
                 result = true;
                 break;
@@ -326,6 +326,11 @@
         }
     }
 
+    static String stripAnsi( String msg )
+    {
+        return msg.replaceAll( "\u001B\\[[;\\d]*[ -/]*[@-~]", "" );
+    }
+
     public Properties loadProperties( String filename )
         throws VerificationException
     {
diff --git a/src/test/java/org/apache/maven/it/VerifierTest.java b/src/test/java/org/apache/maven/it/VerifierTest.java
index 96aa371..75c8202 100644
--- a/src/test/java/org/apache/maven/it/VerifierTest.java
+++ b/src/test/java/org/apache/maven/it/VerifierTest.java
@@ -67,4 +67,10 @@
         verifier.assertFileNotPresent( "mshared104.jar!/fud.xml" );
     }
 
+    public void testStripAnsi()
+    {
+        assertEquals( "--- plugin:version:goal (id) @ artifactId ---",
+                      Verifier.stripAnsi( "\u001B[1m--- \u001B[0;32mplugin:version:goal\u001B[0;1m (id)\u001B[m @ "
+                          + "\u001B[36martifactId\u001B[0;1m ---\u001B[m" ) );
+    }
 }