Merge changes from topic "am-a1205538-cc32-4ec0-9e68-c68e2ae82db6"
* changes:
[automerger] Support list styles for PagedListView. am: d0e9e80e8d
Support list styles for PagedListView.
diff --git a/buildSrc/build_dependencies.gradle b/buildSrc/build_dependencies.gradle
index d68b769..66121bd 100644
--- a/buildSrc/build_dependencies.gradle
+++ b/buildSrc/build_dependencies.gradle
@@ -29,6 +29,7 @@
build_libs.jarjar_gradle = 'org.anarres.jarjar:jarjar-gradle:1.0.0'
build_libs.error_prone = 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.13'
build_libs.jacoco = 'org.jacoco:org.jacoco.core:0.7.8'
+build_libs.jacoco_ant = 'org.jacoco:org.jacoco.ant:0.7.8'
build_libs.jetifier = 'androidx.tools.jetifier:gradle-plugin:0.1'
build_libs.kotlin = [gradle_plugin: "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.0"]
// jdiff dependencies
diff --git a/buildSrc/init.gradle b/buildSrc/init.gradle
index 64c5f3f..7ae5736 100644
--- a/buildSrc/init.gradle
+++ b/buildSrc/init.gradle
@@ -17,7 +17,6 @@
import android.support.DiffAndDocs
import android.support.gmaven.GMavenVersionChecker
-import com.android.build.gradle.internal.coverage.JacocoPlugin
import com.android.build.gradle.internal.coverage.JacocoReportTask
import com.android.build.gradle.internal.tasks.DeviceProviderInstrumentTestTask
import org.gradle.api.logging.configuration.ShowStacktrace
@@ -136,6 +135,29 @@
}
}
}
+ buildOnServerTask.dependsOn createJacocoAntUberJarTask()
+}
+
+def createJacocoAntUberJarTask() {
+ def myJacoco = project.configurations.create('myJacoco')
+ project.dependencies.add('myJacoco', build_libs.jacoco_ant)
+
+ return project.tasks.create(
+ name: "JacocoAntUberJar",
+ type: Jar) {
+ inputs.files myJacoco
+ from {
+ myJacoco
+ .resolvedConfiguration
+ .resolvedArtifacts.collect{ zipTree(it.getFile()) }} {
+ // exclude all the signatures the jar might have
+ exclude "META-INF/*.SF"
+ exclude "META-INF/*.DSA"
+ exclude "META-INF/*.RSA"
+ }
+ destinationDir file(project.distDir)
+ archiveName "jacocoant.jar"
+ }
}
def configureSubProjects() {
@@ -191,25 +213,8 @@
archiveName "${project.name}-${v.baseName}-allclasses.jar"
}
- def collectJacocoAntPackages = project.tasks.create(
- name: "collectJacocoAntPackages",
- type: Jar) {
- inputs.files project.configurations[JacocoPlugin.ANT_CONFIGURATION_NAME]
- from {
- project.configurations[JacocoPlugin.ANT_CONFIGURATION_NAME]
- .resolvedConfiguration
- .resolvedArtifacts.collect{ zipTree(it.getFile()) }} {
- // exclude all the signatures the jar might have
- exclude "META-INF/*.SF"
- exclude "META-INF/*.DSA"
- exclude "META-INF/*.RSA"
- }
- destinationDir file(project.distDir)
- archiveName "jacocoant.jar"
- }
-
jarifyTask.dependsOn v.getJavaCompiler()
- v.assemble.dependsOn jarifyTask , collectJacocoAntPackages
+ v.assemble.dependsOn jarifyTask
}
}
diff --git a/room/compiler/src/test/kotlin/android/arch/persistence/room/parser/SqlParserTest.kt b/room/compiler/src/test/kotlin/android/arch/persistence/room/parser/SqlParserTest.kt
index 1d31354..a1d03b6 100644
--- a/room/compiler/src/test/kotlin/android/arch/persistence/room/parser/SqlParserTest.kt
+++ b/room/compiler/src/test/kotlin/android/arch/persistence/room/parser/SqlParserTest.kt
@@ -17,6 +17,7 @@
package android.arch.persistence.room.parser
import org.hamcrest.CoreMatchers.`is`
+import org.hamcrest.CoreMatchers.not
import org.hamcrest.MatcherAssert.assertThat
import org.junit.Test
import org.junit.runner.RunWith
@@ -99,6 +100,36 @@
}
@Test
+ fun tablePrefixInInsert_set() {
+ // this is an invalid query, b/64539805
+ val query = SqlParser.parse("UPDATE trips SET trips.title=:title")
+ assertThat(query.errors, not(emptyList()))
+ }
+
+ @Test
+ fun tablePrefixInInsert_where() {
+ val query = SqlParser.parse("UPDATE trips SET title=:title WHERE trips.id=:id")
+ assertThat(query.errors, `is`(emptyList()))
+ }
+
+ @Test
+ fun tablePrefixInSelect_projection() {
+ val query = SqlParser.parse("SELECT a.name, b.last_name from user a, book b")
+ assertThat(query.errors, `is`(emptyList()))
+ assertThat(query.tables, `is`(setOf(Table("user", "a"),
+ Table("book", "b"))))
+ }
+
+ @Test
+ fun tablePrefixInSelect_where() {
+ val query = SqlParser.parse("SELECT a.name, b.last_name from user a, book b" +
+ " WHERE a.name = b.name")
+ assertThat(query.errors, `is`(emptyList()))
+ assertThat(query.tables, `is`(setOf(Table("user", "a"),
+ Table("book", "b"))))
+ }
+
+ @Test
fun findBindVariables() {
assertVariables("select * from users")
assertVariables("select * from users where name like ?", "?")
diff --git a/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/dao/UserDao.java b/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/dao/UserDao.java
index 0b184a9..f601a86 100644
--- a/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/dao/UserDao.java
+++ b/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/dao/UserDao.java
@@ -29,6 +29,7 @@
import android.arch.persistence.room.Update;
import android.arch.persistence.room.integration.testapp.TestDatabase;
import android.arch.persistence.room.integration.testapp.vo.AvgWeightByAge;
+import android.arch.persistence.room.integration.testapp.vo.NameAndLastName;
import android.arch.persistence.room.integration.testapp.vo.User;
import android.database.Cursor;
@@ -208,6 +209,9 @@
@Query("SELECT COUNT(*) from user")
public abstract Integer getUserCount();
+ @Query("SELECT u.mName, u.mLastName from user u where mId = :id")
+ public abstract NameAndLastName getNameAndLastName(int id);
+
@Transaction
public void insertBothByAnnotation(final User a, final User b) {
insert(a);
diff --git a/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/test/SimpleEntityReadWriteTest.java b/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/test/SimpleEntityReadWriteTest.java
index f8049f3..c5015f2 100644
--- a/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/test/SimpleEntityReadWriteTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/test/SimpleEntityReadWriteTest.java
@@ -35,6 +35,7 @@
import android.arch.persistence.room.integration.testapp.dao.UserDao;
import android.arch.persistence.room.integration.testapp.dao.UserPetDao;
import android.arch.persistence.room.integration.testapp.vo.BlobEntity;
+import android.arch.persistence.room.integration.testapp.vo.NameAndLastName;
import android.arch.persistence.room.integration.testapp.vo.Pet;
import android.arch.persistence.room.integration.testapp.vo.Product;
import android.arch.persistence.room.integration.testapp.vo.User;
@@ -524,4 +525,13 @@
assertTrue("SQLiteConstraintException expected", caught);
assertThat(mUserDao.count(), is(0));
}
+
+ @Test
+ public void tablePrefix_simpleSelect() {
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ NameAndLastName result = mUserDao.getNameAndLastName(3);
+ assertThat(result.getName(), is(user.getName()));
+ assertThat(result.getLastName(), is(user.getLastName()));
+ }
}
diff --git a/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/vo/NameAndLastName.java b/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/vo/NameAndLastName.java
new file mode 100644
index 0000000..29e2554
--- /dev/null
+++ b/room/integration-tests/testapp/src/androidTest/java/android/arch/persistence/room/integration/testapp/vo/NameAndLastName.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2017 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.
+ */
+
+package android.arch.persistence.room.integration.testapp.vo;
+
+
+public class NameAndLastName {
+ private String mName;
+ private String mLastName;
+
+ public NameAndLastName(String name, String lastName) {
+ mName = name;
+ mLastName = lastName;
+ }
+
+ public String getName() {
+ return mName;
+ }
+
+ public String getLastName() {
+ return mLastName;
+ }
+}