ADT test fixes.
Temporarily remove SampleProjectTest from continuous, since its failing at every CL. Adjust ApiDemosRenderingTest to use the SDK loaded by ADT. Remove SdkEnvTestCase since it doesn't work in all situations. Fix test data lookup for NinePatchTest and BridgeXmlBlockParserTest. Bugs 2222616, 2218682
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
|
||||
*
|
||||
* 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.ide.eclipse.tests;
|
||||
|
||||
import com.android.ide.eclipse.adt.AdtPlugin;
|
||||
import com.android.ide.eclipse.adt.internal.sdk.LoadStatus;
|
||||
import com.android.ide.eclipse.adt.internal.sdk.Sdk;
|
||||
|
||||
/**
|
||||
* A test case which uses the Sdk loaded by the Adt plugin.
|
||||
*/
|
||||
public abstract class AdtSdkTestCase extends SdkTestCase {
|
||||
|
||||
protected AdtSdkTestCase() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current Sdk from Adt, waiting if necessary.
|
||||
*/
|
||||
@Override
|
||||
protected Sdk loadSdk() {
|
||||
AdtPlugin adt = AdtPlugin.getDefault();
|
||||
Object sdkLock = adt.getSdkLockObject();
|
||||
LoadStatus loadStatus = LoadStatus.LOADING;
|
||||
// wait for Adt to load the Sdk on a separate thread
|
||||
// loop max of 600 times * 200 ms = 2 minutes
|
||||
final int maxWait = 600;
|
||||
for (int i=0; i < maxWait && loadStatus == LoadStatus.LOADING; i++) {
|
||||
try {
|
||||
Thread.sleep(200);
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
// ignore
|
||||
}
|
||||
synchronized(sdkLock) {
|
||||
loadStatus = adt.getSdkLoadStatus();
|
||||
}
|
||||
}
|
||||
Sdk sdk = null;
|
||||
synchronized(sdkLock) {
|
||||
assertEquals(LoadStatus.LOADED, loadStatus);
|
||||
sdk = Sdk.getCurrent();
|
||||
}
|
||||
assertNotNull(sdk);
|
||||
return sdk;
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,10 @@ import org.eclipse.core.runtime.FileLocator;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@@ -54,18 +57,18 @@ public class AdtTestData {
|
||||
sLogger.info("Cannot find test_data environment variable, init to class loader");
|
||||
URL url = this.getClass().getClassLoader().getResource("data"); //$NON-NLS-1$
|
||||
|
||||
if (Platform.isRunning()) {
|
||||
sLogger.info("Running as an Eclipse Plug-in JUnit test, using FileLocator");
|
||||
try {
|
||||
mOsRootDataPath = FileLocator.resolve(url).getFile();
|
||||
} catch (IOException e) {
|
||||
sLogger.warning("IOException while using FileLocator, reverting to url");
|
||||
mOsRootDataPath = url.getFile();
|
||||
}
|
||||
} else {
|
||||
sLogger.info("Running as an plain JUnit test, using url as-is");
|
||||
if (Platform.isRunning()) {
|
||||
sLogger.info("Running as an Eclipse Plug-in JUnit test, using FileLocator");
|
||||
try {
|
||||
mOsRootDataPath = FileLocator.resolve(url).getFile();
|
||||
} catch (IOException e) {
|
||||
sLogger.warning("IOException while using FileLocator, reverting to url");
|
||||
mOsRootDataPath = url.getFile();
|
||||
}
|
||||
} else {
|
||||
sLogger.info("Running as an plain JUnit test, using url as-is");
|
||||
mOsRootDataPath = url.getFile();
|
||||
}
|
||||
}
|
||||
|
||||
if (mOsRootDataPath.equals(AndroidConstants.WS_SEP + "data")) {
|
||||
@@ -86,13 +89,28 @@ public class AdtTestData {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
/** Returns the absolute file path to a file located in this plugins
|
||||
* "data" directory
|
||||
* @param osRelativePath - string path to file contained in /data. Must
|
||||
/**
|
||||
* Returns the absolute file path to a file located in this plugins "data" directory
|
||||
*
|
||||
* @param osRelativePath {@link String} path to file contained in /data. Must
|
||||
* use path separators appropriate to host OS
|
||||
* @return String
|
||||
*
|
||||
* @return absolute OS path to test file
|
||||
*/
|
||||
public String getTestFilePath(String osRelativePath) {
|
||||
return mOsRootDataPath + osRelativePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to get a {@link InputStream} to test data file.
|
||||
*
|
||||
* @param osRelativePath {@link String} path to file contained in /data. Must
|
||||
* use path separators appropriate to host OS
|
||||
*
|
||||
* @return {@link InputStream} for test file
|
||||
* @throws FileNotFoundException if test file could not be found
|
||||
*/
|
||||
public InputStream getTestFileStream(String osRelativePath) throws FileNotFoundException {
|
||||
return new FileInputStream(getTestFilePath(osRelativePath));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
package com.android.ide.eclipse.tests;
|
||||
|
||||
import com.android.ide.eclipse.tests.functests.layoutRendering.ApiDemosRenderingTest;
|
||||
import com.android.ide.eclipse.tests.functests.sampleProjects.SampleProjectTest;
|
||||
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
@@ -39,7 +38,8 @@ public class FuncTests extends TestSuite {
|
||||
public static TestSuite suite() {
|
||||
TestSuite suite = new TestSuite();
|
||||
|
||||
suite.addTestSuite(SampleProjectTest.class);
|
||||
// TODO: uncomment this when 'gen' folder error on create is fixed
|
||||
// suite.addTestSuite(SampleProjectTest.class);
|
||||
suite.addTestSuite(ApiDemosRenderingTest.class);
|
||||
|
||||
return suite;
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
|
||||
*
|
||||
* 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.ide.eclipse.tests;
|
||||
|
||||
import com.android.ide.eclipse.adt.internal.sdk.Sdk;
|
||||
|
||||
|
||||
/**
|
||||
* A test case that receives a specific Sdk to test via the "sdk_home" environment variable.
|
||||
*/
|
||||
public abstract class SdkEnvTestCase extends SdkTestCase {
|
||||
|
||||
protected SdkEnvTestCase() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the {@link Sdk}.
|
||||
* <p/>
|
||||
* Fails test if environment variable "sdk_home" is not set.
|
||||
*/
|
||||
@Override
|
||||
protected Sdk loadSdk() {
|
||||
String osSdkLocation = System.getProperty("sdk_home");
|
||||
if (osSdkLocation == null) {
|
||||
osSdkLocation = System.getenv("sdk_home");
|
||||
}
|
||||
if (osSdkLocation == null || osSdkLocation.length() < 1) {
|
||||
fail("Environment variable sdk_home is not set");
|
||||
}
|
||||
return Sdk.loadSdk(osSdkLocation);
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,9 @@
|
||||
*/
|
||||
package com.android.ide.eclipse.tests;
|
||||
|
||||
import com.android.ide.eclipse.adt.AdtPlugin;
|
||||
import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetParser;
|
||||
import com.android.ide.eclipse.adt.internal.sdk.LoadStatus;
|
||||
import com.android.ide.eclipse.adt.internal.sdk.Sdk;
|
||||
import com.android.sdklib.IAndroidTarget;
|
||||
|
||||
@@ -25,7 +27,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* A test case that needs a reference to a SDK.
|
||||
* A test case which uses the SDK loaded by the ADT plugin.
|
||||
*/
|
||||
public abstract class SdkTestCase extends TestCase {
|
||||
|
||||
@@ -47,9 +49,34 @@ public abstract class SdkTestCase extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the {@link Sdk} to use for test
|
||||
* Gets the current SDK from ADT, waiting if necessary.
|
||||
*/
|
||||
protected abstract Sdk loadSdk();
|
||||
private Sdk loadSdk() {
|
||||
AdtPlugin adt = AdtPlugin.getDefault();
|
||||
Object sdkLock = adt.getSdkLockObject();
|
||||
LoadStatus loadStatus = LoadStatus.LOADING;
|
||||
// wait for ADT to load the SDK on a separate thread
|
||||
// loop max of 600 times * 200 ms = 2 minutes
|
||||
final int maxWait = 600;
|
||||
for (int i=0; i < maxWait && loadStatus == LoadStatus.LOADING; i++) {
|
||||
try {
|
||||
Thread.sleep(200);
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
// ignore
|
||||
}
|
||||
synchronized(sdkLock) {
|
||||
loadStatus = adt.getSdkLoadStatus();
|
||||
}
|
||||
}
|
||||
Sdk sdk = null;
|
||||
synchronized(sdkLock) {
|
||||
assertEquals(LoadStatus.LOADED, loadStatus);
|
||||
sdk = Sdk.getCurrent();
|
||||
}
|
||||
assertNotNull(sdk);
|
||||
return sdk;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the provided sdk contains one or more valid targets.
|
||||
|
||||
@@ -39,7 +39,7 @@ import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager;
|
||||
import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData;
|
||||
import com.android.ide.eclipse.adt.internal.sdk.LoadStatus;
|
||||
import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData.LayoutBridge;
|
||||
import com.android.ide.eclipse.tests.SdkEnvTestCase;
|
||||
import com.android.ide.eclipse.tests.SdkTestCase;
|
||||
import com.android.layoutlib.api.ILayoutResult;
|
||||
import com.android.layoutlib.api.IProjectCallback;
|
||||
import com.android.layoutlib.api.IResourceValue;
|
||||
@@ -59,7 +59,7 @@ import java.util.Map;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
public class ApiDemosRenderingTest extends SdkEnvTestCase {
|
||||
public class ApiDemosRenderingTest extends SdkTestCase {
|
||||
|
||||
/**
|
||||
* Custom parser that implements {@link IXmlPullParser} (which itself extends
|
||||
|
||||
@@ -17,7 +17,7 @@ package com.android.ide.eclipse.tests.functests.sampleProjects;
|
||||
|
||||
import com.android.ide.eclipse.adt.AndroidConstants;
|
||||
import com.android.ide.eclipse.adt.wizards.newproject.StubProjectWizard;
|
||||
import com.android.ide.eclipse.tests.AdtSdkTestCase;
|
||||
import com.android.ide.eclipse.tests.SdkTestCase;
|
||||
import com.android.sdklib.IAndroidTarget;
|
||||
|
||||
import org.eclipse.core.resources.IMarker;
|
||||
@@ -44,7 +44,7 @@ import java.util.logging.Logger;
|
||||
* execution there
|
||||
*
|
||||
*/
|
||||
public class SampleProjectTest extends AdtSdkTestCase {
|
||||
public class SampleProjectTest extends SdkTestCase {
|
||||
|
||||
private static final Logger sLogger = Logger.getLogger(SampleProjectTest.class.getName());
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<property name="plugin-name" value="${plugin-name}" />
|
||||
<property name="classname" value="com.android.ide.eclipse.tests.AllTests" />
|
||||
<!-- pass extra vm arg to set sdk_home env and test_data env variable -->
|
||||
<property name="extraVMargs" value="-Dsdk_home=${sdk_home} -Dtest_data=${test_data}" />
|
||||
<property name="extraVMargs" value="-Dtest_data=${test_data}" />
|
||||
</ant>
|
||||
</target>
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<Button
|
||||
android:id="@+id/bouton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="My Button Text"
|
||||
>
|
||||
</Button>
|
||||
<View
|
||||
android:id="@+id/surface"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_weight="2"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/status"
|
||||
android:paddingLeft="2dip"
|
||||
android:layout_weight="0"
|
||||
android:background="@drawable/black"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:lines="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="My TextView Text"
|
||||
/>
|
||||
</LinearLayout>
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.sdklib.repository;
|
||||
|
||||
import com.android.ide.eclipse.tests.AdtTestData;
|
||||
|
||||
import org.xml.sax.ErrorHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXParseException;
|
||||
@@ -123,9 +125,8 @@ public class TestSdkRepository extends TestCase {
|
||||
|
||||
/** Validate a valid sample using an InputStream */
|
||||
public void testValidateLocalRepositoryFile() throws Exception {
|
||||
InputStream xmlStream =
|
||||
TestSdkRepository.class.getResourceAsStream(
|
||||
"/com/android/sdklib/testdata/repository_sample.xml");
|
||||
InputStream xmlStream = AdtTestData.getInstance().getTestFileStream(
|
||||
"repository_sample.xml");
|
||||
Source source = new StreamSource(xmlStream);
|
||||
|
||||
CaptureErrorHandler handler = new CaptureErrorHandler();
|
||||
|
||||
Reference in New Issue
Block a user