OSDN Git Service

Fix unit test log usage
authorTor Norbye <tnorbye@google.com>
Mon, 22 Nov 2010 22:54:37 +0000 (14:54 -0800)
committerTor Norbye <tnorbye@google.com>
Mon, 22 Nov 2010 23:00:13 +0000 (15:00 -0800)
There were some test failures because unit tests were relying on
AdtPlugin's logger, which appears to be null during unit test
runs. Use a new test logger instead, which fails the current test if
anyone logs an error message, and dumps warnings to standard error and
prints to standard output.

Change-Id: I8e52fed554d49e98f7d6c8990d41831998f44640

eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/common/resources/platform/AttrsXmlParserManifestTest.java
eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/common/resources/platform/AttrsXmlParserTest.java
eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/sdk/LayoutParamsParserTest.java
eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/mock/TestLogger.java [new file with mode: 0644]

index b10f68d..cddd63e 100755 (executable)
@@ -16,7 +16,7 @@
 
 package com.android.ide.common.resources.platform;
 
-import com.android.ide.eclipse.adt.AdtPlugin;
+import com.android.ide.eclipse.mock.TestLogger;
 import com.android.ide.eclipse.tests.AdtTestData;
 
 import java.util.Arrays;
@@ -36,7 +36,7 @@ public class AttrsXmlParserManifestTest extends TestCase {
     @Override
     public void setUp() throws Exception {
         mFilePath = AdtTestData.getInstance().getTestFilePath(MOCK_DATA_PATH); //$NON-NLS-1$
-        mParser = new AttrsXmlParser(mFilePath, AdtPlugin.getDefault());
+        mParser = new AttrsXmlParser(mFilePath, new TestLogger());
     }
 
     @Override
index 3e47c35..6b0ddd3 100644 (file)
@@ -18,7 +18,7 @@ package com.android.ide.common.resources.platform;
 
 
 import com.android.ide.common.api.IAttributeInfo.Format;
-import com.android.ide.eclipse.adt.AdtPlugin;
+import com.android.ide.eclipse.mock.TestLogger;
 import com.android.ide.eclipse.tests.AdtTestData;
 
 import java.util.Map;
@@ -36,7 +36,7 @@ public class AttrsXmlParserTest extends TestCase {
     @Override
     public void setUp() throws Exception {
         mFilePath = AdtTestData.getInstance().getTestFilePath(MOCK_DATA_PATH); //$NON-NLS-1$
-        mParser = new AttrsXmlParser(mFilePath, AdtPlugin.getDefault());
+        mParser = new AttrsXmlParser(mFilePath, new TestLogger());
     }
 
     @Override
index 42f2455..9d87e2f 100644 (file)
@@ -19,9 +19,9 @@ package com.android.ide.eclipse.adt.internal.sdk;
 import com.android.ide.common.resources.platform.AttrsXmlParser;
 import com.android.ide.common.resources.platform.ViewClassInfo;
 import com.android.ide.common.resources.platform.ViewClassInfo.LayoutParamsInfo;
-import com.android.ide.eclipse.adt.AdtPlugin;
 import com.android.ide.eclipse.adt.internal.sdk.AndroidJarLoader.ClassWrapper;
 import com.android.ide.eclipse.adt.internal.sdk.IAndroidClassLoader.IClassDescriptor;
+import com.android.ide.eclipse.mock.TestLogger;
 import com.android.ide.eclipse.tests.AdtTestData;
 
 import java.lang.reflect.Constructor;
@@ -62,7 +62,7 @@ public class LayoutParamsParserTest extends TestCase {
             super(new MockFrameworkClassLoader(),
                   new AttrsXmlParser(
                           AdtTestData.getInstance().getTestFilePath(MOCK_DATA_PATH),
-                          AdtPlugin.getDefault()).preload());
+                          new TestLogger()).preload());
 
             mTopViewClass = new ClassWrapper(mock_android.view.View.class);
             mTopGroupClass = new ClassWrapper(mock_android.view.ViewGroup.class);
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/mock/TestLogger.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/mock/TestLogger.java
new file mode 100644 (file)
index 0000000..78919d4
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2010 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.mock;
+
+import com.android.ide.common.log.ILogger;
+
+import junit.framework.Assert;
+
+/**
+ * Implementation of {@link ILogger} suitable for test use; will fail the current test if
+ * {@link #error} is called, and prints everything else to standard error.
+ */
+public class TestLogger implements ILogger {
+
+    public void error(Throwable t, String errorFormat, Object... args) {
+        String message = String.format(errorFormat, args);
+        if (t != null) {
+            message = t.toString() + ":" + message; //$NON-NLS-1$
+        }
+        Assert.fail(message);
+    }
+
+    public void printf(String msgFormat, Object... args) {
+        System.out.println(String.format(msgFormat, args));
+    }
+
+    public void warning(String warningFormat, Object... args) {
+        System.err.println(String.format(warningFormat, args));
+    }
+
+}