diff --git a/src/main/java/com/jayway/maven/plugins/android/AbstractEmulatorMojo.java b/src/main/java/com/jayway/maven/plugins/android/AbstractEmulatorMojo.java index 5e21c8dd6..f31cd9456 100644 --- a/src/main/java/com/jayway/maven/plugins/android/AbstractEmulatorMojo.java +++ b/src/main/java/com/jayway/maven/plugins/android/AbstractEmulatorMojo.java @@ -115,7 +115,7 @@ public abstract class AbstractEmulatorMojo extends AbstractAndroidMojo { /** * file name for the pid file. */ - private static final String pidFileName = scriptFolder + "/maven-android-plugin-emulator.pid"; + private static final String pidFileName = scriptFolder + System.getProperty("file.separator") + "maven-android-plugin-emulator.pid"; /** * Are we running on a flavour of Windows. @@ -205,7 +205,7 @@ private String getRunningEmulatorName() throws MojoExecutionException, Execution */ private String writeEmulatorStartScriptWindows() throws MojoExecutionException { - String filename = scriptFolder + "\\maven-android-plugin-emulator-start.bat"; + String filename = scriptFolder + "\\maven-android-plugin-emulator-start.vbs"; File file = new File(filename); PrintWriter writer = null; @@ -217,10 +217,15 @@ private String writeEmulatorStartScriptWindows() throws MojoExecutionException { // and others. String command = assembleStartCommandLine(); String uniqueWindowTitle = "MavenAndroidPlugin-AVD" + parsedAvd; - writer.print("START /separate \"" + uniqueWindowTitle + "\" " + command); - writer.println(); - writer.println("FOR /F \"tokens=2\" %%I in ('TASKLIST /NH /FI \"WINDOWTITLE eq " + uniqueWindowTitle + "\"' ) DO SET PID=%%I"); - writer.println("ECHO %PID% > " + pidFileName); + writer.println("Dim oShell"); + writer.println("Set oShell = WScript.CreateObject(\"WScript.shell\")"); + String cmd = "cmd.exe /X /C START /SEPARATE \"\"" + + uniqueWindowTitle + "\"\" " + command.trim(); + writer.println("oShell.run \"" + cmd + "\""); + writer.println("wscript.sleep 1000"); + String cmd1 = "cmd.exe /X /C @ECHO OFF & FOR /F \"\"tokens=2\"\" %I in ('TASKLIST /NH /FI \"\"WINDOWTITLE eq " + + uniqueWindowTitle + "\"\"') DO ECHO %I> " + pidFileName; + writer.println("oShell.run \"" + cmd1 + "\""); } catch (IOException e) { getLog().error("Failure writing file " + filename); } finally { diff --git a/src/main/java/com/jayway/maven/plugins/android/AndroidSdk.java b/src/main/java/com/jayway/maven/plugins/android/AndroidSdk.java index 6f450759b..97c8978be 100644 --- a/src/main/java/com/jayway/maven/plugins/android/AndroidSdk.java +++ b/src/main/java/com/jayway/maven/plugins/android/AndroidSdk.java @@ -157,7 +157,7 @@ public String getPathForTool(String tool) { for (String possiblePath : possiblePaths) { File file = new File(possiblePath); if (file.exists() && !file.isDirectory()){ - return possiblePath; + return file.getAbsolutePath(); } } diff --git a/src/test/java/com/jayway/maven/plugins/android/AbstractEmulatorMojoTest.java b/src/test/java/com/jayway/maven/plugins/android/AbstractEmulatorMojoTest.java new file mode 100644 index 000000000..eaf25f92b --- /dev/null +++ b/src/test/java/com/jayway/maven/plugins/android/AbstractEmulatorMojoTest.java @@ -0,0 +1,35 @@ +package com.jayway.maven.plugins.android; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +public class AbstractEmulatorMojoTest { + + private AbstractEmulatorMojo mockMojo; + + @Before + public void setUp() throws Exception { + mockMojo = new mockAbstractEmulatorMojo(); + } + + @Ignore + @Test + public final void testStartAndStopAndroidEmulator() throws MojoExecutionException { + mockMojo.startAndroidEmulator(); + mockMojo.stopAndroidEmulator(); + } + + private class mockAbstractEmulatorMojo extends AbstractEmulatorMojo { + + public void execute() throws MojoExecutionException, + MojoFailureException { + // TODO Auto-generated method stub + + } + + } + +} diff --git a/src/test/java/com/jayway/maven/plugins/android/AndroidSdkTest.java b/src/test/java/com/jayway/maven/plugins/android/AndroidSdkTest.java index 36d55a777..29ad74d7a 100644 --- a/src/test/java/com/jayway/maven/plugins/android/AndroidSdkTest.java +++ b/src/test/java/com/jayway/maven/plugins/android/AndroidSdkTest.java @@ -42,20 +42,20 @@ public void setUp(){ @Test public void givenToolAdbThenPathIsPlatformTools() { - final String pathForTool =sdkTestSupport.getSdk_with_platform_1_5().getPathForTool("adb"); + final String pathForTool =sdkTestSupport.getSdk_with_platform_1_5().getPathForTool("adb").replaceAll(".exe$", ""); Assert.assertEquals(new File(sdkTestSupport.getEnv_ANDROID_HOME() + "/platform-tools/adb").getAbsolutePath(), pathForTool); } @Test public void givenToolAndroidThenPathIsCommon() { - final String pathForTool =sdkTestSupport.getSdk_with_platform_1_5().getPathForTool("android"); + final String pathForTool =sdkTestSupport.getSdk_with_platform_1_5().getPathForTool("android").replaceAll(".bat$", "");; Assert.assertEquals(new File(sdkTestSupport.getEnv_ANDROID_HOME() + "/tools/android").getAbsolutePath(), pathForTool); } @Test public void givenToolAaptAndPlatform1dot5ThenPathIsPlatformTools() { final AndroidSdk sdk = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "3"); - final String pathForTool = sdk.getPathForTool("aapt"); + final String pathForTool = sdk.getPathForTool("aapt").replaceAll(".exe$", "");; Assert.assertEquals(new File(sdkTestSupport.getEnv_ANDROID_HOME() + "/platform-tools/aapt"), new File(pathForTool)); }