aboutsummaryrefslogtreecommitdiffstats
path: root/lint/libs/lint_checks/tests
diff options
context:
space:
mode:
Diffstat (limited to 'lint/libs/lint_checks/tests')
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/MainTest.java7
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/AbstractCheckTest.java6
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/IconDetectorTest.java60
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/drawable-mdpi/sample_icon.jpgbin0 -> 2141 bytes
4 files changed, 66 insertions, 7 deletions
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/MainTest.java b/lint/libs/lint_checks/tests/src/com/android/tools/lint/MainTest.java
index 6bd8c2d..0ea384e 100644
--- a/lint/libs/lint_checks/tests/src/com/android/tools/lint/MainTest.java
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/MainTest.java
@@ -18,7 +18,6 @@ package com.android.tools.lint;
import com.android.tools.lint.checks.AbstractCheckTest;
import com.android.tools.lint.checks.AccessibilityDetector;
-import com.android.tools.lint.checks.BuiltinIssueRegistry;
import com.android.tools.lint.detector.api.Detector;
import java.io.ByteArrayOutputStream;
@@ -29,12 +28,6 @@ import java.util.List;
@SuppressWarnings("javadoc")
public class MainTest extends AbstractCheckTest {
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- BuiltinIssueRegistry.reset();
- }
-
public void testWrap() {
String s =
"Hardcoding text attributes directly in layout files is bad for several reasons:\n" +
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/AbstractCheckTest.java b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/AbstractCheckTest.java
index 8b06c4d..561e424 100644
--- a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/AbstractCheckTest.java
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/AbstractCheckTest.java
@@ -55,6 +55,12 @@ import junit.framework.TestCase;
/** Common utility methods for the various lint check tests */
@SuppressWarnings("javadoc")
public abstract class AbstractCheckTest extends TestCase {
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ BuiltinIssueRegistry.reset();
+ }
+
protected abstract Detector getDetector();
private Detector mDetector;
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/IconDetectorTest.java b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/IconDetectorTest.java
index f45ae08..1a84982 100644
--- a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/IconDetectorTest.java
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/IconDetectorTest.java
@@ -17,6 +17,12 @@
package com.android.tools.lint.checks;
import com.android.tools.lint.detector.api.Detector;
+import com.android.tools.lint.detector.api.Issue;
+import com.android.tools.lint.detector.api.Project;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
@SuppressWarnings("javadoc")
public class IconDetectorTest extends AbstractCheckTest {
@@ -25,7 +31,33 @@ public class IconDetectorTest extends AbstractCheckTest {
return new IconDetector();
}
+ private Set<Issue> mEnabled = new HashSet<Issue>();
+ private static Set<Issue> ALL = new HashSet<Issue>();
+ static {
+ ALL.add(IconDetector.DUPLICATES_CONFIGURATIONS);
+ ALL.add(IconDetector.DUPLICATES_NAMES);
+ ALL.add(IconDetector.GIF_USAGE);
+ ALL.add(IconDetector.ICON_DENSITIES);
+ ALL.add(IconDetector.ICON_DIP_SIZE);
+ ALL.add(IconDetector.ICON_EXPECTED_SIZE);
+ ALL.add(IconDetector.ICON_EXTENSION);
+ ALL.add(IconDetector.ICON_LOCATION);
+ ALL.add(IconDetector.ICON_MISSING_FOLDER);
+ ALL.add(IconDetector.ICON_NODPI);
+ }
+
+ @Override
+ protected TestConfiguration getConfiguration(Project project) {
+ return new TestConfiguration() {
+ @Override
+ public boolean isEnabled(Issue issue) {
+ return super.isEnabled(issue) && mEnabled.contains(issue);
+ }
+ };
+ }
+
public void test() throws Exception {
+ mEnabled = ALL;
assertEquals(
"res/drawable-mdpi/sample_icon.gif: Warning: Using the .gif format for bitmaps is discouraged [GifUsage]\n" +
"res/drawable/ic_launcher.png: Warning: The ic_launcher.png icon has identical contents in the following configuration folders: drawable-mdpi, drawable [IconDuplicatesConfig]\n" +
@@ -49,6 +81,7 @@ public class IconDetectorTest extends AbstractCheckTest {
}
public void testApi1() throws Exception {
+ mEnabled = ALL;
assertEquals(
"No warnings.",
@@ -59,6 +92,7 @@ public class IconDetectorTest extends AbstractCheckTest {
}
public void test2() throws Exception {
+ mEnabled = ALL;
assertEquals(
"res/drawable-hdpi/other.9.png: Warning: The following unrelated icon files have identical contents: appwidget_bg.9.png, other.9.png [IconDuplicates]\n" +
" res/drawable-hdpi/appwidget_bg.9.png: <No location-specific message\n" +
@@ -78,6 +112,7 @@ public class IconDetectorTest extends AbstractCheckTest {
}
public void testNoDpi() throws Exception {
+ mEnabled = ALL;
assertEquals(
"res/drawable-mdpi/frame.png: Warning: The following images appear in both -nodpi and in a density folder: frame.png [IconNoDpi]\n" +
"res/drawable-xlarge-nodpi-v11/frame.png: Warning: The frame.png icon has identical contents in the following configuration folders: drawable-mdpi, drawable-nodpi, drawable-xlarge-nodpi-v11 [IconDuplicatesConfig]\n" +
@@ -94,6 +129,7 @@ public class IconDetectorTest extends AbstractCheckTest {
}
public void testNoDpi2() throws Exception {
+ mEnabled = ALL;
// Having additional icon names in the no-dpi folder should not cause any complaints
assertEquals(
"res/drawable-xhdpi/frame.png: Warning: The image frame.png varies significantly in its density-independent (dip) size across the various density versions: drawable-ldpi/frame.png: 629x387 dp (472x290 px), drawable-mdpi/frame.png: 472x290 dp (472x290 px), drawable-hdpi/frame.png: 315x193 dp (472x290 px), drawable-xhdpi/frame.png: 236x145 dp (472x290 px) [IconDipSize]\n" +
@@ -119,6 +155,7 @@ public class IconDetectorTest extends AbstractCheckTest {
}
public void testNoDpiMix() throws Exception {
+ mEnabled = ALL;
assertEquals(
"res/drawable-mdpi/frame.xml: Warning: The following images appear in both -nodpi and in a density folder: frame.png, frame.xml [IconNoDpi]\n" +
" res/drawable-mdpi/frame.png: <No location-specific message\n" +
@@ -133,6 +170,7 @@ public class IconDetectorTest extends AbstractCheckTest {
public void testMixedFormat() throws Exception {
+ mEnabled = ALL;
// Test having a mixture of .xml and .png resources for the same name
// Make sure we don't get:
// drawable-hdpi: Warning: Missing the following drawables in drawable-hdpi: f.png (found in drawable-mdpi)
@@ -145,4 +183,26 @@ public class IconDetectorTest extends AbstractCheckTest {
"res/drawable/states.xml=>res/drawable-hdpi/f.xml",
"res/drawable/states.xml=>res/drawable-xhdpi/f.xml"));
}
+
+ public void testMisleadingFileName() throws Exception {
+ mEnabled = Collections.singleton(IconDetector.ICON_EXTENSION);
+ assertEquals(
+ "res/drawable-mdpi/frame.gif: Warning: Misleading file extension; named .gif but the file format is png [IconExtension]\n" +
+ "res/drawable-mdpi/frame.jpg: Warning: Misleading file extension; named .jpg but the file format is png [IconExtension]\n" +
+ "res/drawable-mdpi/myjpg.png: Warning: Misleading file extension; named .png but the file format is JPEG [IconExtension]\n" +
+ "res/drawable-mdpi/sample_icon.jpeg: Warning: Misleading file extension; named .jpeg but the file format is gif [IconExtension]\n" +
+ "res/drawable-mdpi/sample_icon.jpg: Warning: Misleading file extension; named .jpg but the file format is gif [IconExtension]\n" +
+ "res/drawable-mdpi/sample_icon.png: Warning: Misleading file extension; named .png but the file format is gif [IconExtension]\n" +
+ "0 errors, 6 warnings\n",
+
+ lintProject(
+ "res/drawable-mdpi/sample_icon.jpg=>res/drawable-mdpi/myjpg.jpg", // VALID
+ "res/drawable-mdpi/sample_icon.jpg=>res/drawable-mdpi/myjpg.jpeg", // VALID
+ "res/drawable-mdpi/frame.png=>res/drawable-mdpi/frame.gif",
+ "res/drawable-mdpi/frame.png=>res/drawable-mdpi/frame.jpg",
+ "res/drawable-mdpi/sample_icon.jpg=>res/drawable-mdpi/myjpg.png",
+ "res/drawable-mdpi/sample_icon.gif=>res/drawable-mdpi/sample_icon.jpg",
+ "res/drawable-mdpi/sample_icon.gif=>res/drawable-mdpi/sample_icon.jpeg",
+ "res/drawable-mdpi/sample_icon.gif=>res/drawable-mdpi/sample_icon.png"));
+ }
} \ No newline at end of file
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/drawable-mdpi/sample_icon.jpg b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/drawable-mdpi/sample_icon.jpg
new file mode 100644
index 0000000..f872487
--- /dev/null
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/drawable-mdpi/sample_icon.jpg
Binary files differ