aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager/app/tests/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'sdkmanager/app/tests/com/android')
-rw-r--r--sdkmanager/app/tests/com/android/sdkmanager/AvdManagerTest.java90
-rw-r--r--sdkmanager/app/tests/com/android/sdkmanager/MainTest.java100
-rw-r--r--sdkmanager/app/tests/com/android/sdkmanager/MockLog.java57
-rw-r--r--sdkmanager/app/tests/com/android/sdkmanager/SdkCommandLineTest.java36
-rw-r--r--sdkmanager/app/tests/com/android/sdkmanager/SdkManagerTestUtil.java88
5 files changed, 366 insertions, 5 deletions
diff --git a/sdkmanager/app/tests/com/android/sdkmanager/AvdManagerTest.java b/sdkmanager/app/tests/com/android/sdkmanager/AvdManagerTest.java
new file mode 100644
index 0000000..bb1ba75
--- /dev/null
+++ b/sdkmanager/app/tests/com/android/sdkmanager/AvdManagerTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed 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.
+ */
+
+package com.android.sdkmanager;
+
+import static java.io.File.createTempFile;
+
+import com.android.sdklib.IAndroidTarget;
+import com.android.sdklib.SdkManager;
+import com.android.sdklib.internal.avd.AvdManager;
+import com.android.sdklib.internal.project.ProjectProperties;
+import com.android.sdklib.io.FileWrapper;
+
+import java.io.File;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+public class AvdManagerTest extends TestCase {
+
+ private AvdManager mAvdManager;
+ private SdkManager mSdkManager;
+ private MockLog mLog;
+ private File mFakeSdk;
+ private File mAvdFolder;
+ private IAndroidTarget mTarget;
+
+ @Override
+ public void setUp() throws Exception {
+ mLog = new MockLog();
+ mFakeSdk = SdkManagerTestUtil.makeFakeSdk(createTempFile(this.getClass().getSimpleName(), null));
+ mSdkManager = SdkManager.createManager(mFakeSdk.getAbsolutePath(), mLog);
+ assertNotNull("sdkManager location was invalid", mSdkManager);
+
+ mAvdManager = new AvdManager(mSdkManager, mLog);
+ mAvdFolder = new File(mFakeSdk, "avdData");
+ mTarget = mSdkManager.getTargets()[0];
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ SdkManagerTestUtil.deleteDir(mFakeSdk);
+ }
+
+ public void testCreateAvdWithoutSnapshot() {
+ mAvdManager.createAvd(
+ mAvdFolder, this.getName(), mTarget, null, null, null, false, false, mLog);
+
+ assertEquals("[P Created AVD '" + this.getName() + "' based on Android 0.0\n]",
+ mLog.toString());
+ assertTrue("Expected config.ini in " + mAvdFolder,
+ new File(mAvdFolder, "config.ini").exists());
+ Map<String, String> map = ProjectProperties.parsePropertyFile(
+ new FileWrapper(mAvdFolder, "config.ini"), mLog);
+ assertEquals("HVGA", map.get("skin.name"));
+ assertEquals("platforms/v0_0/skins/HVGA", map.get("skin.path"));
+ assertEquals("platforms/v0_0/images/", map.get("image.sysdir.1"));
+ assertEquals(null, map.get("snapshot.present"));
+ assertTrue("Expected userdata.img in " + mAvdFolder,
+ new File(mAvdFolder, "userdata.img").exists());
+ assertFalse("Expected NO snapshots.img in " + mAvdFolder,
+ new File(mAvdFolder, "snapshots.img").exists());
+ }
+
+ public void testCreateAvdWithSnapshot() {
+ mAvdManager.createAvd(
+ mAvdFolder, this.getName(), mTarget, null, null, null, false, true, mLog);
+
+ assertEquals("[P Created AVD '" + this.getName() + "' based on Android 0.0\n]",
+ mLog.toString());
+ assertTrue("Expected snapshots.img in " + mAvdFolder,
+ new File(mAvdFolder, "snapshots.img").exists());
+ Map<String, String> map = ProjectProperties.parsePropertyFile(
+ new FileWrapper(mAvdFolder, "config.ini"), mLog);
+ assertEquals("true", map.get("snapshot.present"));
+ }
+}
diff --git a/sdkmanager/app/tests/com/android/sdkmanager/MainTest.java b/sdkmanager/app/tests/com/android/sdkmanager/MainTest.java
new file mode 100644
index 0000000..f6e3bbe
--- /dev/null
+++ b/sdkmanager/app/tests/com/android/sdkmanager/MainTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed 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.
+ */
+
+package com.android.sdkmanager;
+
+
+import static java.io.File.createTempFile;
+
+import com.android.sdklib.IAndroidTarget;
+import com.android.sdklib.SdkManager;
+import com.android.sdklib.internal.avd.AvdManager;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+public class MainTest extends TestCase {
+
+ private File mFakeSdk;
+ private MockLog mLog;
+ private SdkManager mSdkManager;
+ private AvdManager mAvdManager;
+ private File mAvdFolder;
+ private IAndroidTarget mTarget;
+ private File fakeSdkDir;
+
+ @Override
+ public void setUp() throws Exception {
+ mLog = new MockLog();
+ fakeSdkDir = createTempFile(this.getClass().getSimpleName() + "_" + this.getName(), null);
+ mFakeSdk = SdkManagerTestUtil.makeFakeSdk(fakeSdkDir);
+ mSdkManager = SdkManager.createManager(mFakeSdk.getAbsolutePath(), mLog);
+ assertNotNull("sdkManager location was invalid", mSdkManager);
+
+ mAvdManager = new AvdManager(mSdkManager, mLog);
+ mAvdFolder = new File(mFakeSdk, "avdData");
+ mTarget = mSdkManager.getTargets()[0];
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ SdkManagerTestUtil.deleteDir(mFakeSdk);
+ }
+
+ public void txestDisplayEmptyAvdList() {
+ Main main = new Main();
+ main.setLogger(mLog);
+ mLog.clear();
+ main.displayAvdList(mAvdManager);
+ assertEquals("P Available Android Virtual Devices:\n", mLog.toString());
+ }
+
+ public void testDisplayAvdListOfOneNonSnapshot() {
+ Main main = new Main();
+ main.setLogger(mLog);
+ mAvdManager.createAvd(
+ mAvdFolder, this.getName(), mTarget, null, null, null, false, false, mLog);
+ mLog.clear();
+ main.displayAvdList(mAvdManager);
+ assertEquals(
+ "[P Available Android Virtual Devices:\n"
+ + ", P Name: " + this.getName() + "\n"
+ + ", P Path: " + mAvdFolder + "\n"
+ + ", P Target: Android 0.0 (API level 0)\n"
+ + ", P Skin: HVGA\n"
+ + "]",
+ mLog.toString());
+ }
+
+ public void testDisplayAvdListOfOneSnapshot() {
+ Main main = new Main();
+ main.setLogger(mLog);
+ mAvdManager.createAvd(
+ mAvdFolder, this.getName(), mTarget, null, null, null, false, true, mLog);
+ mLog.clear();
+ main.displayAvdList(mAvdManager);
+ assertEquals(
+ "[P Available Android Virtual Devices:\n"
+ + ", P Name: " + this.getName() + "\n"
+ + ", P Path: " + mAvdFolder + "\n"
+ + ", P Target: Android 0.0 (API level 0)\n"
+ + ", P Skin: HVGA\n"
+ + ", P Snapshot: true\n"
+ + "]",
+ mLog.toString());
+ }
+}
diff --git a/sdkmanager/app/tests/com/android/sdkmanager/MockLog.java b/sdkmanager/app/tests/com/android/sdkmanager/MockLog.java
new file mode 100644
index 0000000..a8ca90a
--- /dev/null
+++ b/sdkmanager/app/tests/com/android/sdkmanager/MockLog.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed 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.
+ */
+
+package com.android.sdkmanager;
+
+import com.android.sdklib.ISdkLog;
+
+import java.util.ArrayList;
+import java.util.Formatter;
+
+public class MockLog implements ISdkLog {
+ private ArrayList<String> mMessages = new ArrayList<String>();
+
+ private void add(String code, String format, Object... args) {
+ mMessages.add(new Formatter().format(code + format, args).toString());
+ }
+
+ @Override
+ public void warning(String format, Object... args) {
+ add("W ", format, args);
+ }
+
+ @Override
+ public void printf(String format, Object... args) {
+ add("P ", format, args);
+ }
+
+ @Override
+ public void error(Throwable t, String format, Object... args) {
+ if (t != null) {
+ add("T", "%s", t.toString());
+ }
+ add("E ", format, args);
+ }
+
+ @Override
+ public String toString() {
+ return mMessages.toString();
+ }
+
+ public void clear() {
+ mMessages.clear();
+ }
+}
diff --git a/sdkmanager/app/tests/com/android/sdkmanager/SdkCommandLineTest.java b/sdkmanager/app/tests/com/android/sdkmanager/SdkCommandLineTest.java
index 8206e2a..036d2ec 100644
--- a/sdkmanager/app/tests/com/android/sdkmanager/SdkCommandLineTest.java
+++ b/sdkmanager/app/tests/com/android/sdkmanager/SdkCommandLineTest.java
@@ -24,7 +24,7 @@ import junit.framework.TestCase;
public class SdkCommandLineTest extends TestCase {
private StdSdkLog mLog;
-
+
/**
* A mock version of the {@link SdkCommandLine} class that does not
* exits and discards its stdout/stderr output.
@@ -32,7 +32,7 @@ public class SdkCommandLineTest extends TestCase {
public static class MockSdkCommandLine extends SdkCommandLine {
private boolean mExitCalled;
private boolean mHelpCalled;
-
+
public MockSdkCommandLine(ISdkLog logger) {
super(logger);
}
@@ -48,12 +48,12 @@ public class SdkCommandLineTest extends TestCase {
protected void exit() {
mExitCalled = true;
}
-
+
@Override
protected void stdout(String format, Object... args) {
// discard
}
-
+
@Override
protected void stderr(String format, Object... args) {
// discard
@@ -62,7 +62,7 @@ public class SdkCommandLineTest extends TestCase {
public boolean wasExitCalled() {
return mExitCalled;
}
-
+
public boolean wasHelpCalled() {
return mHelpCalled;
}
@@ -139,4 +139,30 @@ public class SdkCommandLineTest extends TestCase {
assertEquals("target", c.getDirectObject());
assertFalse(c.isVerbose());
}
+
+ public final void testCreate_Avd() {
+ MockSdkCommandLine c = new MockSdkCommandLine(mLog);
+ c.parseArgs(new String[] { "create", "avd", "-t", "android-100", "-n", "myProject" });
+ assertFalse(c.wasHelpCalled());
+ assertFalse(c.wasExitCalled());
+ assertEquals("create", c.getVerb());
+ assertEquals("avd", c.getDirectObject());
+ assertFalse(c.getFlagSnapshot());
+ assertEquals("android-100", c.getParamTargetId());
+ assertEquals("myProject", c.getParamName());
+ assertFalse(c.isVerbose());
+ }
+
+ public final void testCreate_Avd_Snapshot() {
+ MockSdkCommandLine c = new MockSdkCommandLine(mLog);
+ c.parseArgs(new String[] { "create", "avd", "-t", "android-100", "-n", "myProject", "-a" });
+ assertFalse(c.wasHelpCalled());
+ assertFalse(c.wasExitCalled());
+ assertEquals("create", c.getVerb());
+ assertEquals("avd", c.getDirectObject());
+ assertTrue(c.getFlagSnapshot());
+ assertEquals("android-100", c.getParamTargetId());
+ assertEquals("myProject", c.getParamName());
+ assertFalse(c.isVerbose());
+ }
}
diff --git a/sdkmanager/app/tests/com/android/sdkmanager/SdkManagerTestUtil.java b/sdkmanager/app/tests/com/android/sdkmanager/SdkManagerTestUtil.java
new file mode 100644
index 0000000..96efb5c
--- /dev/null
+++ b/sdkmanager/app/tests/com/android/sdkmanager/SdkManagerTestUtil.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed 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.
+ */
+
+package com.android.sdkmanager;
+
+import com.android.prefs.AndroidLocation;
+import com.android.sdklib.SdkConstants;
+import com.android.sdklib.SdkManager;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+public class SdkManagerTestUtil {
+ /**
+ * Build enough of a skeleton SDK to make the tests pass.
+ *<p>
+ * Ideally this wouldn't touch the file system, but I'm not inclined to
+ * fiddle around with mock file systems just at the moment.
+ *
+ * @return an sdk manager to a fake sdk
+ * @throws IOException
+ */
+ public static File makeFakeSdk(File fakeSdk) throws IOException {
+ fakeSdk.delete();
+ fakeSdk.mkdirs();
+ AndroidLocation.resetFolder();
+ System.setProperty("user.home", fakeSdk.getAbsolutePath());
+ File addonsDir = new File(fakeSdk, SdkConstants.FD_ADDONS);
+ addonsDir.mkdir();
+ File toolsLibEmuDir = new File(fakeSdk, SdkConstants.OS_SDK_TOOLS_LIB_FOLDER + "emulator");
+ toolsLibEmuDir.mkdirs();
+ new File(toolsLibEmuDir, "snapshots.img").createNewFile();
+ File platformsDir = new File(fakeSdk, SdkConstants.FD_PLATFORMS);
+
+ // Creating a fake target here on down
+ File targetDir = new File(platformsDir, "v0_0");
+ targetDir.mkdirs();
+ new File(targetDir, SdkConstants.FN_FRAMEWORK_LIBRARY).createNewFile();
+ new File(targetDir, SdkConstants.FN_FRAMEWORK_AIDL).createNewFile();
+ new File(targetDir, SdkConstants.FN_SOURCE_PROP).createNewFile();
+ File buildProp = new File(targetDir, SdkConstants.FN_BUILD_PROP);
+ FileWriter out = new FileWriter(buildProp);
+ out.write(SdkManager.PROP_VERSION_RELEASE + "=0.0\n");
+ out.write(SdkManager.PROP_VERSION_SDK + "=0\n");
+ out.write(SdkManager.PROP_VERSION_CODENAME + "=REL\n");
+ out.close();
+ File imagesDir = new File(targetDir, "images");
+ imagesDir.mkdirs();
+ new File(imagesDir, "userdata.img").createNewFile();
+ File skinsDir = new File(targetDir, "skins");
+ File hvgaDir = new File(skinsDir, "HVGA");
+ hvgaDir.mkdirs();
+ return fakeSdk;
+ }
+
+ /**
+ * Recursive delete directory. Mostly for fake SDKs.
+ *
+ * @param root directory to delete
+ */
+ public static void deleteDir(File root) {
+ if (root.exists()) {
+ for (File file : root.listFiles()) {
+ if (file.isDirectory()) {
+ deleteDir(file);
+ } else {
+ file.delete();
+ }
+ }
+ root.delete();
+ }
+ }
+
+}