diff options
author | Raphael Moll <ralf@android.com> | 2011-08-18 15:09:57 -0700 |
---|---|---|
committer | Raphael Moll <ralf@android.com> | 2011-08-18 15:52:24 -0700 |
commit | aed3bf34d3f5e62757b076e8b403b3b33fe05e34 (patch) | |
tree | 487bee7fc4ab1f1e46470e7d0ef90919674e5130 /sdkmanager/app | |
parent | 969eb605ac08c49b2c1994b5d60502b1ae5b4310 (diff) | |
download | sdk-aed3bf34d3f5e62757b076e8b403b3b33fe05e34.zip sdk-aed3bf34d3f5e62757b076e8b403b3b33fe05e34.tar.gz sdk-aed3bf34d3f5e62757b076e8b403b3b33fe05e34.tar.bz2 |
SDK: Expose Layoutlib Version through IAndroidTarget.
This changes PlatformTarget to parse the Layoutlib Version
(API + revision) stored by the SDK Manager in the source.properties
of the platform on disk. Then this introduces an helper method
in SdkManager to find the highest available layoutlib version.
Change-Id: I94990dabed6c7e5ad3f8f06ff3b16696edca8653
Diffstat (limited to 'sdkmanager/app')
3 files changed, 2 insertions, 182 deletions
diff --git a/sdkmanager/app/tests/com/android/sdkmanager/AvdManagerTest.java b/sdkmanager/app/tests/com/android/sdkmanager/AvdManagerTest.java index a5a8289..93b12c1 100644 --- a/sdkmanager/app/tests/com/android/sdkmanager/AvdManagerTest.java +++ b/sdkmanager/app/tests/com/android/sdkmanager/AvdManagerTest.java @@ -19,6 +19,7 @@ package com.android.sdkmanager; import com.android.io.FileWrapper; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.SdkConstants; +import com.android.sdklib.SdkManagerTestCase; import com.android.sdklib.internal.avd.AvdInfo; import com.android.sdklib.internal.project.ProjectProperties; diff --git a/sdkmanager/app/tests/com/android/sdkmanager/MainTest.java b/sdkmanager/app/tests/com/android/sdkmanager/MainTest.java index 4a17e32..ef5a715 100644 --- a/sdkmanager/app/tests/com/android/sdkmanager/MainTest.java +++ b/sdkmanager/app/tests/com/android/sdkmanager/MainTest.java @@ -19,6 +19,7 @@ package com.android.sdkmanager; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.SdkConstants; +import com.android.sdklib.SdkManagerTestCase; import com.android.sdklib.internal.avd.AvdInfo; import com.android.sdklib.repository.SdkAddonConstants; import com.android.sdklib.repository.SdkRepoConstants; diff --git a/sdkmanager/app/tests/com/android/sdkmanager/SdkManagerTestCase.java b/sdkmanager/app/tests/com/android/sdkmanager/SdkManagerTestCase.java deleted file mode 100755 index 9fdd852..0000000 --- a/sdkmanager/app/tests/com/android/sdkmanager/SdkManagerTestCase.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (C) 2011 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.prefs.AndroidLocation.AndroidLocationException; -import com.android.sdklib.ISdkLog; -import com.android.sdklib.SdkConstants; -import com.android.sdklib.SdkManager; -import com.android.sdklib.internal.avd.AvdManager; -import com.android.sdklib.mock.MockLog; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import junit.framework.TestCase; - -/** - * Test case that allocates a temporary SDK, a temporary AVD base folder - * with an SdkManager and an AvdManager that points to them. - */ -public abstract class SdkManagerTestCase extends TestCase { - - private File mFakeSdk; - private MockLog mLog; - private SdkManager mSdkManager; - private TmpAvdManager mAvdManager; - - /** Returns the {@link MockLog} for this test case. */ - public MockLog getLog() { - return mLog; - } - - /** Returns the {@link SdkManager} for this test case. */ - public SdkManager getSdkManager() { - return mSdkManager; - } - - /** Returns the {@link AvdManager} for this test case. */ - public TmpAvdManager getAvdManager() { - return mAvdManager; - } - - /** - * Sets up a {@link MockLog}, a fake SDK in a temporary directory - * and an AVD Manager pointing to an initially-empty AVD directory. - */ - @Override - public void setUp() throws Exception { - mLog = new MockLog(); - mFakeSdk = makeFakeSdk(); - mSdkManager = SdkManager.createManager(mFakeSdk.getAbsolutePath(), mLog); - assertNotNull("SdkManager location was invalid", mSdkManager); - - mAvdManager = new TmpAvdManager(mSdkManager, mLog); - } - - /** - * Removes the temporary SDK and AVD directories. - */ - @Override - public void tearDown() throws Exception { - deleteDir(mFakeSdk); - } - - /** - * An {@link AvdManager} that uses a temporary directory - * located <em>inside</em> the SDK directory for testing. - * The AVD list should be initially empty. - */ - protected static class TmpAvdManager extends AvdManager { - - /* - * Implementation detail: - * - When the super.AvdManager constructor is invoked, it will invoke - * the buildAvdFilesList() to fill the initial AVD list, which will in - * turn call getBaseAvdFolder(). - * - That's why mTmpAvdRoot is initialized in getAvdRoot() rather than - * in the constructor, since we can't initialize fields before the super() - * call. - */ - - /** - * AVD Root, initialized "lazily" when the AVD root is first requested. - */ - private File mTmpAvdRoot; - - public TmpAvdManager(SdkManager sdkManager, ISdkLog log) throws AndroidLocationException { - super(sdkManager, log); - } - - @Override - public String getBaseAvdFolder() throws AndroidLocationException { - if (mTmpAvdRoot == null) { - mTmpAvdRoot = new File(getSdkManager().getLocation(), "tmp_avds"); - mTmpAvdRoot.mkdirs(); - } - return mTmpAvdRoot.getAbsolutePath(); - } - } - - /** - * Build enough of a skeleton SDK to make the tests pass. - * <p/> - * Ideally this wouldn't touch the file system but the current - * structure of the SdkManager and AvdManager makes this difficult. - * - * @return Path to the temporary SDK root - * @throws IOException - */ - private File makeFakeSdk() throws IOException { - - File tmpFile = File.createTempFile( - this.getClass().getSimpleName() + '_' + this.getName(), null); - tmpFile.delete(); - tmpFile.mkdirs(); - - AndroidLocation.resetFolder(); - System.setProperty("user.home", tmpFile.getAbsolutePath()); - File addonsDir = new File(tmpFile, SdkConstants.FD_ADDONS); - addonsDir.mkdir(); - File toolsLibEmuDir = new File(tmpFile, SdkConstants.OS_SDK_TOOLS_LIB_FOLDER + "emulator"); - toolsLibEmuDir.mkdirs(); - new File(toolsLibEmuDir, "snapshots.img").createNewFile(); - File platformsDir = new File(tmpFile, 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 tmpFile; - } - - /** - * Recursive delete directory. Mostly for fake SDKs. - * - * @param root directory to delete - */ - private void deleteDir(File root) { - if (root.exists()) { - for (File file : root.listFiles()) { - if (file.isDirectory()) { - deleteDir(file); - } else { - file.delete(); - } - } - root.delete(); - } - } - -} |