package org.jenkinsci.plugins.unity3d; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; import hudson.EnvVars; import hudson.util.ArgumentListBuilder; import java.util.Hashtable; import java.util.List; import java.util.Map; import org.junit.Test; /** * @author Jerome Lacoste */ public class Unity3dBuilderTest { private String exe = "/Applications/Unity/Unity.app"; private String moduleRootRemote = "/Users/Shared/Jenkins/Home/jobs/project1/workspace"; private String argLine; private List<String> expectedArgs; @Test public void typicalExecuteMethodArgumentsAddMissingProjectPath() { argLine = "-quit -batchmode -nographics -executeMethod ExecuteClass.ExecuteMethod"; expectedArgs = asList(exe, "-projectPath", moduleRootRemote, "-quit", "-batchmode", "-nographics", "-executeMethod", "ExecuteClass.ExecuteMethod"); ensureCreateCommandlineArgs(expectedArgs); } @Test public void typicalExecuteMethodArgumentsWithCustomProjectPath() { argLine = "-quit -batchmode -nographics -executeMethod ExecuteClass.ExecuteMethod -projectPath XXXX"; expectedArgs = asList(exe, "-quit", "-batchmode", "-nographics", "-executeMethod", "ExecuteClass.ExecuteMethod", "-projectPath", "XXXX"); ensureCreateCommandlineArgs(expectedArgs); } @Test public void buildWindowsPlayerAddMissingProjectPath() { argLine = "-buildWindowsPlayer \"C:\\Temp\\The Win32.exe\""; expectedArgs = asList(exe, "-projectPath", moduleRootRemote, "-buildWindowsPlayer", "C:\\Temp\\The Win32.exe"); ensureCreateCommandlineArgs(expectedArgs); } @Test public void buildOSXPlayerAddMissingProjectPath() { argLine = "-buildOSXPlayer the\\ dir.app"; expectedArgs = asList(exe, "-projectPath", moduleRootRemote, "-buildOSXPlayer", "the dir.app"); ensureCreateCommandlineArgs(expectedArgs); } private void ensureCreateCommandlineArgs(List<String> expectedArgs1) { Unity3dBuilder builder = new Unity3dBuilder("Unity 3.5", argLine); ArgumentListBuilder commandlineArgs = builder.createCommandlineArgs(exe, moduleRootRemote, new EnvVars(), new Hashtable<String,String>()); assertEquals(expectedArgs1, commandlineArgs.toList()); } @Test public void environmentAndBuildVariablesParsing() { EnvVars vars = new EnvVars(); vars.put("param1", "value1"); vars.put("param2", "value2"); String param2overwrittenValue = "overwrittenValue"; Map<String,String> buildParameters = new Hashtable<String,String>(); buildParameters.put("param2", param2overwrittenValue); argLine = "-param1 $param1 -param2 $param2 -projectPath XXXX"; expectedArgs = asList(exe, "-param1", "value1", "-param2", param2overwrittenValue, "-projectPath", "XXXX"); Unity3dBuilder builder = new Unity3dBuilder("Unity 3.5", argLine); ArgumentListBuilder commandlineArgs = builder.createCommandlineArgs(exe, moduleRootRemote, vars, buildParameters); assertEquals(expectedArgs, commandlineArgs.toList()); assertEquals("Serialized arg line not modified", argLine, builder.getArgLine()); } }