Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.apache.maven.plugin.nar;
  
  /*
   * 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.
  */
 
 import java.io.File;
 import java.util.List;
 import java.util.Set;
 
Tests NAR files. Runs Native Tests and executables if produced.

Author(s):
Mark Donszelmann
Goal:
nar-test
Phase:
test
RequiresProject:
 
 public class NarTestMojo
     extends AbstractCompileMojo
 {
    
The classpath elements of the project being tested.

Parameter:
expression="${project.testClasspathElements}"
Required:
Readonly:
 
     private List classpathElements;
 
     public final void narExecute()
     {
         // run all tests
         for ( Iterator i = getTests().iterator(); i.hasNext(); )
         {
             runTest( (Testi.next() );
         }
 
         for ( Iterator i = getLibraries().iterator(); i.hasNext(); )
         {
             runExecutable( (Libraryi.next() );
         }
     }
 
     private void runTestTest test )
     {
         // run if requested
         if ( test.shouldRun() )
         {
             // NOTE should we use layout here ?
             String name = test.getName() + (getOS().equals. ) ? ".exe" : "");
             File path = new FilegetTestTargetDirectory(), "bin" );
             path = new FilepathgetAOL().toString() );
             path = new Filepathname );
             if ( !path.exists() )
             {
                 getLog().warn"Skipping non-existing test " + path );
                 return;
             }
             
             File workingDir = new FilegetTestTargetDirectory(), "test-reports" );
             workingDir.mkdirs();
             getLog().info"Running test " + name + " in " + workingDir );
 
             List args = test.getArgs();
             int result =
                 NarUtil.runCommandpath.toString(), (String[]) args.toArraynew String[args.size()] ), workingDir,
                                     generateEnvironment(), getLog() );
             if ( result != 0 )
             {
                 throw new MojoFailureException"Test " + name + " failed with exit code: " + result + " 0x"
                     + Integer.toHexStringresult ) );
             }
        }
    }
    private void runExecutableLibrary library )
    {
        if ( library.getType().equals. ) && library.shouldRun() )
        {
            MavenProject project = getMavenProject();
            // FIXME NAR-90, we could make sure we get the final name from layout
            String extension = getOS().equals. ) ? ".exe" : "";
            File executable =
                new FilegetLayout().getBinDirectorygetTargetDirectory(), getMavenProject().getArtifactId(),
                                                       getMavenProject().getVersion(), getAOL().toString() ),
                          project.getArtifactId() + extension );
            if ( !executable.exists() )
            {
                getLog().warn"Skipping non-existing executable " + executable );
                return;
            }
            getLog().info"Running executable " + executable );
            List args = library.getArgs();
            int result =
                NarUtil.runCommandexecutable.getPath(), (String[]) args.toArraynew String[args.size()] ), null,
                                    generateEnvironment(), getLog() );
            if ( result != 0 )
            {
                throw new MojoFailureException"Test " + executable + " failed with exit code: " + result + " 0x"
                    + Integer.toHexStringresult ) );
            }
        }
    }
    private String[] generateEnvironment()
    {
        List env = new ArrayList();
        Set/* <File> */sharedPaths = new HashSet();
        // add all shared libraries of this package
        for ( Iterator i = getLibraries().iterator(); i.hasNext(); )
        {
            Library lib = (Libraryi.next();
            if ( lib.getType().equals. ) )
            {
                File path =
                    getLayout().getLibDirectorygetTargetDirectory(), getMavenProject().getArtifactId(),
                                                 getMavenProject().getVersion(), getAOL().toString(), lib.getType() );
                getLog().debug"Adding path to shared library: " + path );
                sharedPaths.addpath );
            }
        }
        // add dependent shared libraries
        String classifier = getAOL() + "-shared";
        List narArtifacts = getNarManager().getNarDependencies"compile" );
        List dependencies = getNarManager().getAttachedNarDependenciesnarArtifactsclassifier );
        for ( Iterator d = dependencies.iterator(); d.hasNext(); )
        {
            Artifact dependency = (Artifactd.next();
            getLog().debug"Looking for dependency " + dependency );
            // FIXME reported to maven developer list, isSnapshot
            // changes behaviour
            // of getBaseVersion, called in pathOf.
            dependency.isSnapshot();
            File libDirectory =
                getLayout().getLibDirectorygetUnpackDirectory(), dependency.getArtifactId(), dependency.getVersion(),
                                             getAOL().toString(), . );
            sharedPaths.addlibDirectory );
        }
        // set environment
        if ( sharedPaths.size() > 0 )
        {
            String sharedPath = "";
            for ( Iterator i = sharedPaths.iterator(); i.hasNext(); )
            {
                sharedPath += ( (Filei.next() ).getPath();
                if ( i.hasNext() )
                {
                    sharedPath += .;
                }
            }
            String sharedEnv = NarUtil.addLibraryPathToEnvsharedPathnullgetOS() );
            env.addsharedEnv );
        }
        // necessary to find WinSxS
        if ( getOS().equals. ) )
        {
            env.add"SystemRoot=" + NarUtil.getEnv"SystemRoot""SystemRoot""C:\\Windows" ) );
        }
        // add CLASSPATH
        env.add"CLASSPATH=" + StringUtils.join.iterator(), . ) );
        return env.size() > 0 ? (String[]) env.toArraynew String[env.size()] ) : null;
    }
New to GrepCode? Check out our FAQ X