You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2019/01/18 13:35:54 UTC

[maven-jmod-plugin] 03/03: MJMOD-20: rewrite groovy, Jenkins Pipeline fails to execute jmod command directly and catch output

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

rfscholte pushed a commit to branch JMOD-20
in repository https://gitbox.apache.org/repos/asf/maven-jmod-plugin.git

commit a146d2c3221d15ca2f53f4e24e410d97df918004
Author: rfscholte <rf...@apache.org>
AuthorDate: Fri Jan 18 14:35:43 2019 +0100

    MJMOD-20: rewrite groovy, Jenkins Pipeline fails to execute jmod command directly and catch output
---
 src/it/mjmod-20-set-main-class/invoker.properties |  2 +-
 src/it/mjmod-20-set-main-class/verify.groovy      | 58 +++++++----------------
 2 files changed, 17 insertions(+), 43 deletions(-)

diff --git a/src/it/mjmod-20-set-main-class/invoker.properties b/src/it/mjmod-20-set-main-class/invoker.properties
index eb94c3e..8cefaba 100644
--- a/src/it/mjmod-20-set-main-class/invoker.properties
+++ b/src/it/mjmod-20-set-main-class/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 invoker.java.version = 9+
-invoker.goals = package
+invoker.goals = verify
diff --git a/src/it/mjmod-20-set-main-class/verify.groovy b/src/it/mjmod-20-set-main-class/verify.groovy
index 340a7c9..1a1aec3 100644
--- a/src/it/mjmod-20-set-main-class/verify.groovy
+++ b/src/it/mjmod-20-set-main-class/verify.groovy
@@ -23,48 +23,22 @@ import java.util.jar.JarFile
 validateArtifact( "world", [ "classes/module-info.class", "classes/myproject/world/World.class" ] )
 validateArtifact( "greetings", [ "classes/module-info.class", "classes/myproject/greetings/Main.class" ] )
 
-def sout = new StringBuilder(), serr = new StringBuilder()
-def proc = "jmod describe ${basedir}/greetings/target/jmods/myproject.greetings.jmod".execute()
-proc.consumeProcessOutput( sout, serr )
-proc.waitForOrKill( 1000 )
-if ( ! sout.toString().trim().isEmpty() && serr.toString().trim().isEmpty() )
-{
-    Set<String> expectedLines = new HashSet(
-            Arrays.asList(
-                    "myproject.greetings@99.0",
-                    "requires java.base mandated",
-                    "requires myproject.world",
-                    "contains myproject.greetings",
-                    "main-class myproject.greetings.Main" ) )
-    String[] lines = sout.toString().split("\n")
-    for ( String line : lines )
-    {
-        if ( ! line.trim().isEmpty() && !expectedLines.contains(line) )
-        {
-            System.err.println( "This line was not returned from jmod: ${line}" )
-            return false
-        }
-        else
-        {
-            expectedLines.remove(line)
-        }
-    }
-    if (!expectedLines.isEmpty()) {
-        System.err.println( "This module does not the following items:" )
-        for ( String line : expectedLines )
-        {
-            System.err.println( line )
-        }
-        return false
-    }
-}
-else
-{
-    System.err.println( "Some error happened while trying to run 'jmod describe "
-            + "${basedir}/greetings/target/jmods/myproject.greetings.jmod'" )
-    System.err.println( serr )
-    return false
-}
+def buildLog = new File(basedir,'build.log')
+
+def describeLines = buildLog.readLines()
+                            .dropWhile{ it != '[INFO] myproject.greetings@99.0' } // start line, inclusive
+                            .takeWhile{ !it.startsWith('[INFO] ---') }            // end line, inclusive
+                            .grep()                                               // remove empty lines
+                            .collect{ it - '[INFO] ' } as Set                        // strip loglevel
+
+def expectedLines = [
+                "myproject.greetings@99.0",
+                "requires java.base mandated",
+                "requires myproject.world",
+                "contains myproject.greetings",
+                "main-class myproject.greetings.Main"] as Set
+
+assert describeLines == expectedLines
 
 def validateArtifact(module, artifactNames)
 {