aboutsummaryrefslogtreecommitdiffstats
path: root/lint/cli
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-01-15 11:56:05 -0800
committerTor Norbye <tnorbye@google.com>2013-01-15 12:43:13 -0800
commit9cb02a430d4763794a853e36d0cf630af234eeb3 (patch)
treede49c0f70123dfac61581ba1ec745a65712a8607 /lint/cli
parent3b69ed776287e703dc054c78a8759dbb63789d0b (diff)
downloadsdk-9cb02a430d4763794a853e36d0cf630af234eeb3.zip
sdk-9cb02a430d4763794a853e36d0cf630af234eeb3.tar.gz
sdk-9cb02a430d4763794a853e36d0cf630af234eeb3.tar.bz2
42798: lint miscounts String.format()
Change-Id: Ibd997301864981ceb863a30b36034a784ab13392
Diffstat (limited to 'lint/cli')
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java19
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/data/res/values/formatstrings5.xml4
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/data/src/test/pkg/StringFormat3.java.txt20
3 files changed, 43 insertions, 0 deletions
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java
index a49955b..47fbea1 100644
--- a/lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/StringFormatDetectorTest.java
@@ -163,6 +163,25 @@ public class StringFormatDetectorTest extends AbstractCheckTest {
"src/test/pkg/StringFormatActivity2.java.txt=>src/test/pkg/StringFormatActivity2.java"));
}
+ public void testIssue42798() throws Exception {
+ // http://code.google.com/p/android/issues/detail?id=42798
+ // String playsCount = String.format(Locale.FRANCE, this.context.getString(R.string.gridview_views_count), article.playsCount);
+ assertEquals(""
+ + "src/test/pkg/StringFormat3.java:12: Error: Wrong argument type for formatting argument '#1' in gridview_views_count: conversion is 'd', received String [StringFormatMatches]\n"
+ + " context.getString(R.string.gridview_views_count), \"wrong\");\n"
+ + " ~~~~~~~\n"
+ + " res/values/formatstrings5.xml:3: Conflicting argument declaration here\n"
+ + "src/test/pkg/StringFormat3.java:13: Error: Wrong argument type for formatting argument '#1' in gridview_views_count: conversion is 'd', received String [StringFormatMatches]\n"
+ + " String s4 = String.format(context.getString(R.string.gridview_views_count), \"wrong\");\n"
+ + " ~~~~~~~\n"
+ + " res/values/formatstrings5.xml:3: Conflicting argument declaration here\n"
+ + "2 errors, 0 warnings\n",
+
+ lintProject(
+ "res/values/formatstrings5.xml",
+ "src/test/pkg/StringFormat3.java.txt=>src/test/pkg/StringFormat3.java"));
+ }
+
public void testIsLocaleSpecific() throws Exception {
assertFalse(isLocaleSpecific(""));
assertFalse(isLocaleSpecific("Hello World!"));
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/values/formatstrings5.xml b/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/values/formatstrings5.xml
new file mode 100644
index 0000000..6b14570
--- /dev/null
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/res/values/formatstrings5.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="gridview_views_count">%d vues</string>
+</resources>
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/src/test/pkg/StringFormat3.java.txt b/lint/cli/src/test/java/com/android/tools/lint/checks/data/src/test/pkg/StringFormat3.java.txt
new file mode 100644
index 0000000..d1bfe44
--- /dev/null
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/src/test/pkg/StringFormat3.java.txt
@@ -0,0 +1,20 @@
+package test.pkg;
+
+import android.app.Activity;
+
+public class StringFormat3 extends Activity {
+ public final void test(Context context) {
+ String s1 = String.format(Locale.FRANCE,
+ context.getString(R.string.gridview_views_count), article.playsCount);
+ String s2 = String.format(Locale.FRANCE,
+ context.getString(R.string.gridview_views_count), 5);
+ String s3 = String.format(Locale.FRANCE,
+ context.getString(R.string.gridview_views_count), "wrong");
+ String s4 = String.format(context.getString(R.string.gridview_views_count), "wrong");
+ String s5 = String.format(context.getString(R.string.gridview_views_count), 5); // OK
+ String s6 = String.format(Locale.getDefault(),
+ context.getString(R.string.gridview_views_count), 5);
+ String s7 = String.format(null,
+ context.getString(R.string.gridview_views_count), 5);
+ }
+}