diff --git a/.travis.yml b/.travis.yml index bed811fd8..4272ce452 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,40 +1,28 @@ -language: java -jdk: oraclejdk7 env: ANDROID_SDK=android-16 ANDROID_ABI=armeabi-v7a +language: android +android: + components: + # The SDK version used to compile your project + - $ANDROID_SDK -before_install: - # Install ia32-libs (necessary for Android SDK to run on 64-bit linux) - # - sudo apt-get clean && sudo apt-get update - - sudo apt-get update -qq - - sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch + # Additional components + - extra-google-m2repository + - extra-android-m2repository + - extra-android-support - # Install Android SDK - - wget http://dl.google.com/android/android-sdk_r22.6.2-linux.tgz - - tar -zxf android-sdk_r22.6.2-linux.tgz - - ls - - export ANDROID_HOME=`pwd`/android-sdk-linux - - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools + # Specify at least one system image, + # if you need to run emulator(s) during your tests + - sys-img-$ANDROID_ABI-$ANDROID_SDK - # Install build-tools - - wget https://dl-ssl.google.com/android/repository/build-tools_r19.0.3-linux.zip - - unzip build-tools_r19.0.3-linux.zip -d $ANDROID_HOME - - mkdir -p $ANDROID_HOME/build-tools/ - - mv $ANDROID_HOME/android-4.4.2 $ANDROID_HOME/build-tools/19.0.1 + licenses: + - 'android-sdk-license-.+' - # Install required Android components - - android list sdk --extended - # Do you accept the license 'android-sdk-license-bcbbd656' [y/n]: - - echo -ne "y\n" | android update sdk --filter system-image,platform-tools,extra-android-support,$ANDROID_SDK --no-ui --force - - # Create and start emulator +before_script: - echo no | android create avd --force -n test -t $ANDROID_SDK --abi $ANDROID_ABI - android list avds - emulator -avd test -no-skin -no-audio -no-window & + - android-wait-for-emulator + - adb shell input keyevent 82 & + - mvn --version -before_script: - # Make sure the emulator has started before running tests - - chmod +x ./wait_for_emulator - - ./wait_for_emulator - -script: - - mvn clean install -e +script: mvn clean install diff --git a/android-wait-for-emulator b/android-wait-for-emulator new file mode 100755 index 000000000..aa6345d8b --- /dev/null +++ b/android-wait-for-emulator @@ -0,0 +1,25 @@ +#!/bin/bash + +# Originally written by Ralf Kistner , but placed in the public domain + +set +e + +bootanim="" +failcounter=0 +timeout_in_sec=360 + +until [[ "$bootanim" =~ "stopped" ]]; do + bootanim=`adb -e shell getprop init.svc.bootanim 2>&1 &` + if [[ "$bootanim" =~ "device not found" || "$bootanim" =~ "device offline" + || "$bootanim" =~ "running" ]]; then + let "failcounter += 1" + echo "Waiting for emulator to start" + if [[ $failcounter -gt timeout_in_sec ]]; then + echo "Timeout ($timeout_in_sec seconds) reached; failed to start emulator" + exit 1 + fi + fi + sleep 1 +done + +echo "Emulator is ready" diff --git a/pom.xml b/pom.xml index eafb111c5..e04aaec59 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ com.jayway.maven.plugins.android.generation2 android-maven-plugin - 3.8.2 + 3.9.0.rc.3 maven-compiler-plugin diff --git a/src/com/activeandroid/query/From.java b/src/com/activeandroid/query/From.java index ab3837a90..358c30366 100644 --- a/src/com/activeandroid/query/From.java +++ b/src/com/activeandroid/query/From.java @@ -156,12 +156,7 @@ public From offset(String offset) { } void addArguments(Object[] args) { - for(Object arg : args) { - if (arg.getClass() == boolean.class || arg.getClass() == Boolean.class) { - arg = (arg.equals(true) ? 1 : 0); - } - mArguments.add(arg); - } + SQLiteUtils.addArguments(mArguments, args); } private void addFrom(final StringBuilder sql) { diff --git a/src/com/activeandroid/query/Set.java b/src/com/activeandroid/query/Set.java index 183d99f0f..43c27611f 100644 --- a/src/com/activeandroid/query/Set.java +++ b/src/com/activeandroid/query/Set.java @@ -19,7 +19,6 @@ import com.activeandroid.util.SQLiteUtils; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public final class Set implements Sqlable { @@ -46,7 +45,7 @@ public Set(Update queryBase, String set, Object... args) { mSetArguments = new ArrayList(); mWhereArguments = new ArrayList(); - mSetArguments.addAll(Arrays.asList(args)); + SQLiteUtils.addArguments(mSetArguments, args); } public Set where(String where) { @@ -59,7 +58,7 @@ public Set where(String where) { public Set where(String where, Object... args) { mWhere = where; mWhereArguments.clear(); - mWhereArguments.addAll(Arrays.asList(args)); + SQLiteUtils.addArguments(mWhereArguments, args); return this; } diff --git a/src/com/activeandroid/util/SQLiteUtils.java b/src/com/activeandroid/util/SQLiteUtils.java index cbf41eaee..8b5e3802c 100644 --- a/src/com/activeandroid/util/SQLiteUtils.java +++ b/src/com/activeandroid/util/SQLiteUtils.java @@ -27,12 +27,11 @@ import com.activeandroid.annotation.Column.ConflictAction; import com.activeandroid.serializer.TypeSerializer; -import java.lang.Long; -import java.lang.String; import java.lang.reflect.Constructor; import java.lang.reflect.Field; -import java.util.Arrays; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -403,4 +402,13 @@ public static List lexSqlScript(String sqlScript) { return sl; } + + public static void addArguments(Collection argumentList, Object[] newArguments) { + for (Object arg : newArguments) { + if (arg.getClass() == boolean.class || arg.getClass() == Boolean.class) { + arg = (arg.equals(true) ? 1 : 0); + } + argumentList.add(arg); + } + } } diff --git a/tests/src/com/activeandroid/test/query/SqlableTestCase.java b/tests/src/com/activeandroid/test/query/SqlableTestCase.java index 361376007..0a0c4b073 100644 --- a/tests/src/com/activeandroid/test/query/SqlableTestCase.java +++ b/tests/src/com/activeandroid/test/query/SqlableTestCase.java @@ -21,10 +21,10 @@ public abstract class SqlableTestCase extends ActiveAndroidTestCase { public static void assertSqlEquals(String expected, Sqlable actual) { - assertEquals(expected, actual.toSql()); + assertEquals(expected.trim(), actual.toSql().trim()); } public static void assertSqlEquals(Sqlable expected, Sqlable actual) { - assertEquals(expected.toSql(), actual.toSql()); + assertSqlEquals(expected.toSql(), actual); } } diff --git a/tests/src/com/activeandroid/test/query/UpdateTest.java b/tests/src/com/activeandroid/test/query/UpdateTest.java index 814d34f7a..aa731a8dc 100644 --- a/tests/src/com/activeandroid/test/query/UpdateTest.java +++ b/tests/src/com/activeandroid/test/query/UpdateTest.java @@ -55,6 +55,18 @@ public void testUpdateWhereWithArguments() { assertSqlEquals(UPDATE_PREFIX + "SET Id = 5 WHERE Id IN (?, ?, ?) ", set); } + + public void performTestUpdateBoolean(boolean condition) { + Set set = update().set("booleanField = ?", condition); + assertArrayEquals(set.getArguments(), condition ? "1" : "0"); + assertSqlEquals(UPDATE_PREFIX + "SET booleanField = ?", + set); + } + + public void testUpdateBoolean() { + performTestUpdateBoolean(true); + performTestUpdateBoolean(false); + } private Update update() { return new Update(MockModel.class); diff --git a/wait_for_emulator b/wait_for_emulator deleted file mode 100644 index b30bc35c9..000000000 --- a/wait_for_emulator +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -bootanim="" -failcounter=0 -until [[ "$bootanim" =~ "stopped" ]]; do - bootanim=`adb -e shell getprop init.svc.bootanim 2>&1` - echo "$bootanim" - if [[ "$bootanim" =~ "not found" ]]; then - let "failcounter += 1" - if [[ $failcounter -gt 3 ]]; then - echo "Failed to start emulator" - exit 1 - fi - fi - sleep 1 -done - -echo "Done"