package org.codehaus.mojo.natives.msvc; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.codehaus.mojo.natives.NativeBuildException; import org.codehaus.mojo.natives.linker.LinkerConfiguration; import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.util.cli.Commandline; public class MSVCLinkerTest extends PlexusTestCase { private MSVCLinker linker; private LinkerConfiguration config; private static final File objectFile0 = new File( "source1.obj" ); private static final File objectFile1 = new File( "source2.obj" ); private List defautlObjectFiles; private String basedir; public void setUp() throws Exception { super.setUp(); this.defautlObjectFiles = new ArrayList(); this.defautlObjectFiles.add( objectFile0 ); this.defautlObjectFiles.add( objectFile1 ); this.linker = new MSVCLinker(); this.config = new LinkerConfiguration(); this.basedir = getBasedir(); config.setWorkingDirectory( new File( basedir ) ); config.setOutputDirectory( new File( basedir, "target" ) ); config.setOutputFileExtension( "exe" ); config.setOutputFileName( "test" ); } public void testDefaultLinkerExecutable() throws Exception { Commandline cl = this.getCommandline(); assertTrue( cl.getExecutable().endsWith("link.exe") ); assertEquals( basedir, cl.getWorkingDirectory().getPath() ); System.out.println( cl.toString() ); } public void testSimpleLinkerCommand() throws Exception { Commandline cl = this.getCommandline(); assertTrue( StringUtils.contains( cl.toString(), "link.exe /out:" + config.getOutputFile() + " source1.obj source2.obj" ) ); } /////////////////////////// HELPERS ////////////////////////////////////// private Commandline getCommandline() throws NativeBuildException { return this.linker.createLinkerCommandLine( defautlObjectFiles, config ); } }