aboutsummaryrefslogtreecommitdiffstats
path: root/lint/cli
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-12-14 22:37:48 -0800
committerTor Norbye <tnorbye@google.com>2012-12-19 09:14:06 -0800
commit75c40ee9e1d69ba6e494582f029e200a1c294999 (patch)
tree2dbf01c7b42f05554ab843caa3e0e8f35f3c6b22 /lint/cli
parentb849650d01557b2a6d408bd2aeae6dca58fbd0fa (diff)
downloadsdk-75c40ee9e1d69ba6e494582f029e200a1c294999.zip
sdk-75c40ee9e1d69ba6e494582f029e200a1c294999.tar.gz
sdk-75c40ee9e1d69ba6e494582f029e200a1c294999.tar.bz2
Lint: Flag using @dimen where not allowed in manifest
Adds a lint check which flags using resource ids for versionName, versionCode, minSdkVersion and targetSdkVersion in the manifest. Change-Id: I5b4e25d0b114cdf84f446a193fe5d3a095b2f415
Diffstat (limited to 'lint/cli')
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java32
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/data/illegal_version.xml23
-rw-r--r--lint/cli/src/test/java/com/android/tools/lint/checks/data/no_version.xml21
3 files changed, 76 insertions, 0 deletions
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java
index 8508d40..e845b57 100644
--- a/lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/ManifestOrderDetectorTest.java
@@ -287,4 +287,36 @@ public class ManifestOrderDetectorTest extends AbstractCheckTest {
checkLint(Arrays.asList(master, library)));
}
+ public void testMissingVersion() throws Exception {
+ mEnabled = Collections.singleton(ManifestOrderDetector.SET_VERSION);
+ assertEquals(""
+ + "AndroidManifest.xml:2: Warning: Should set android:versionCode to specify the application version [MissingVersion]\n"
+ + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n"
+ + "^\n"
+ + "AndroidManifest.xml:2: Warning: Should set android:versionName to specify the application version [MissingVersion]\n"
+ + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n"
+ + "^\n"
+ + "0 errors, 2 warnings\n",
+ lintProject("no_version.xml=>AndroidManifest.xml"));
+ }
+
+ public void testIllegalReference() throws Exception {
+ mEnabled = Collections.singleton(ManifestOrderDetector.ILLEGAL_REFERENCE);
+ assertEquals(""
+ + "AndroidManifest.xml:2: Warning: The android:versionCode cannot be a resource url, it must be a literal integer [IllegalResourceRef]\n"
+ + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n"
+ + "^\n"
+ + "AndroidManifest.xml:2: Warning: The android:versionName cannot be a resource url, it must be a literal string [IllegalResourceRef]\n"
+ + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n"
+ + "^\n"
+ + "AndroidManifest.xml:7: Warning: The android:minSdkVersion cannot be a resource url, it must be a literal integer (or string if a preview codename) [IllegalResourceRef]\n"
+ + " <uses-sdk android:minSdkVersion=\"@dimen/minSdkVersion\" android:targetSdkVersion=\"@dimen/targetSdkVersion\" />\n"
+ + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
+ + "AndroidManifest.xml:7: Warning: The android:targetSdkVersion cannot be a resource url, it must be a literal integer (or string if a preview codename) [IllegalResourceRef]\n"
+ + " <uses-sdk android:minSdkVersion=\"@dimen/minSdkVersion\" android:targetSdkVersion=\"@dimen/targetSdkVersion\" />\n"
+ + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
+ + "0 errors, 4 warnings\n",
+
+ lintProject("illegal_version.xml=>AndroidManifest.xml"));
+ }
}
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/illegal_version.xml b/lint/cli/src/test/java/com/android/tools/lint/checks/data/illegal_version.xml
new file mode 100644
index 0000000..3028117
--- /dev/null
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/illegal_version.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="foo.bar2"
+ android:versionCode="@dimen/versionCode"
+ android:versionName="@dimen/versionName" >
+
+ <uses-sdk android:minSdkVersion="@dimen/minSdkVersion" android:targetSdkVersion="@dimen/targetSdkVersion" />
+
+ <application
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name" >
+ <activity
+ android:label="@string/app_name"
+ android:name=".Foo2Activity" >
+ <intent-filter >
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/data/no_version.xml b/lint/cli/src/test/java/com/android/tools/lint/checks/data/no_version.xml
new file mode 100644
index 0000000..1c3c0a4
--- /dev/null
+++ b/lint/cli/src/test/java/com/android/tools/lint/checks/data/no_version.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="foo.bar2" >
+
+ <uses-sdk android:minSdkVersion="14" />
+
+ <application
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name" >
+ <activity
+ android:label="@string/app_name"
+ android:name=".Foo2Activity" >
+ <intent-filter >
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>