diff --git a/circle.yml b/circle.yml new file mode 100644 index 000000000..a99ac5e59 --- /dev/null +++ b/circle.yml @@ -0,0 +1,21 @@ +machine: + java: + version: oraclejdk8 + environment: + GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx1024m -XX:+HeapDumpOnOutOfMemoryError" -Dkotlin.compiler.execution.strategy="out-of-process" -Djava.util.concurrent.ForkJoinPool.common.parallelism=2' + +dependencies: + pre: + - sudo pip install -U crcmod + - echo y | android update sdk --no-ui --all --filter "tools,platform-tools,build-tools-26.0.2,android-26,extra-android-m2repository" + - echo ${GCLOUD_SERVICE_KEY} | base64 --decode > ${HOME}/client-secret.json + - sudo /opt/google-cloud-sdk/bin/gcloud config set project android-devrel-ci + - sudo /opt/google-cloud-sdk/bin/gcloud --quiet components update + - sudo /opt/google-cloud-sdk/bin/gcloud auth activate-service-account travis-ci-for-blueprints@android-devrel-ci.iam.gserviceaccount.com --key-file ${HOME}/client-secret.json + +test: + override: + - ./test_all_ftl.sh + post: + - mkdir -p $CIRCLE_TEST_REPORTS/junit/ + - find $CIRCLE_ARTIFACTS -name \*.xml -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \; diff --git a/integration/ServiceTestRuleSample/build.gradle b/integration/ServiceTestRuleSample/build.gradle index 201fef834..1de6011cc 100644 --- a/integration/ServiceTestRuleSample/build.gradle +++ b/integration/ServiceTestRuleSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" } diff --git a/runner/AndroidJunitRunnerSample/build.gradle b/runner/AndroidJunitRunnerSample/build.gradle index d6680037b..1e8252ab4 100644 --- a/runner/AndroidJunitRunnerSample/build.gradle +++ b/runner/AndroidJunitRunnerSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/test_all_ftl.sh b/test_all_ftl.sh new file mode 100755 index 000000000..8a7ffab94 --- /dev/null +++ b/test_all_ftl.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +set -e # Exit immediately if a command exits with a non-zero status. + +for line in $(find . -name 'gradlew'); do + p=$(dirname "${line}"); + name="${p##*/}"; + echo + echo + echo Running unit and Android tests in $name + echo "=====================================================================" + + pushd $p > /dev/null # Silent pushd + ./gradlew :app:assembleDebug -PdisablePreDex | sed "s@^@$name @" # Prefix every line with directory + code=${PIPESTATUS[0]} + if [ "$code" -ne "0" ]; then + exit $code + fi + + ./gradlew :app:assembleAndroidTest -PdisablePreDex | sed "s@^@$name @" # Prefix every line with directory + ./gradlew test -PdisablePreDex | sed "s@^@$name @" # Prefix every line with directory + + apkfile=app/build/outputs/apk/app-debug.apk + testapkfile=app/build/outputs/apk/app-debug-androidTest.apk + if [ ! -f $apkfile ] || [ ! -f $testapkfile ] ; then + echo "APKs not found, probably no UI tests present. Skipping $name" + popd > /dev/null # Silent popd + continue + fi + echo "Sending APKs to Firebase..." + + echo "y" | sudo /opt/google-cloud-sdk/bin/gcloud firebase test android run --app $apkfile --test $testapkfile -d Nexus5X -v 26 -l fr --results-bucket=android-testing-samples-test-results --results-dir=$CIRCLE_BUILD_NUM/$name + + code=${PIPESTATUS[0]} + if [ "$code" -ne "0" ]; then + exit $code + fi + + # Copy the test results to the build artifacts folder in CircleCI + sudo /opt/google-cloud-sdk/bin/gsutil -m cp -r -U `sudo /opt/google-cloud-sdk/bin/gsutil ls gs://android-testing-samples-test-results/$CIRCLE_BUILD_NUM/$name/**/test_result*.xml | tail -1` $CIRCLE_ARTIFACTS/ | true + popd > /dev/null # Silent popd +done + +echo +echo "ALL TESTS PASS" diff --git a/ui/espresso/BasicSample/build.gradle b/ui/espresso/BasicSample/build.gradle index d6680037b..1e8252ab4 100644 --- a/ui/espresso/BasicSample/build.gradle +++ b/ui/espresso/BasicSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/ui/espresso/CustomMatcherSample/build.gradle b/ui/espresso/CustomMatcherSample/build.gradle index d6680037b..1e8252ab4 100644 --- a/ui/espresso/CustomMatcherSample/build.gradle +++ b/ui/espresso/CustomMatcherSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/ui/espresso/DataAdapterSample/build.gradle b/ui/espresso/DataAdapterSample/build.gradle index d6680037b..1e8252ab4 100644 --- a/ui/espresso/DataAdapterSample/build.gradle +++ b/ui/espresso/DataAdapterSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/ui/espresso/IdlingResourceSample/build.gradle b/ui/espresso/IdlingResourceSample/build.gradle index 359614090..0a0283834 100644 --- a/ui/espresso/IdlingResourceSample/build.gradle +++ b/ui/espresso/IdlingResourceSample/build.gradle @@ -41,8 +41,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/ui/espresso/IntentsAdvancedSample/build.gradle b/ui/espresso/IntentsAdvancedSample/build.gradle index d6680037b..1e8252ab4 100644 --- a/ui/espresso/IntentsAdvancedSample/build.gradle +++ b/ui/espresso/IntentsAdvancedSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/ui/espresso/IntentsBasicSample/app/build.gradle b/ui/espresso/IntentsBasicSample/app/build.gradle index 655622fa4..68a96ebd2 100644 --- a/ui/espresso/IntentsBasicSample/app/build.gradle +++ b/ui/espresso/IntentsBasicSample/app/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId "com.example.android.testing.espresso.BasicSample" - minSdkVersion 9 + minSdkVersion 14 targetSdkVersion 26 versionCode 1 versionName "1.0" diff --git a/ui/espresso/IntentsBasicSample/build.gradle b/ui/espresso/IntentsBasicSample/build.gradle index d6680037b..1e8252ab4 100644 --- a/ui/espresso/IntentsBasicSample/build.gradle +++ b/ui/espresso/IntentsBasicSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/ui/espresso/MultiProcessSample/app/build.gradle b/ui/espresso/MultiProcessSample/app/build.gradle index 82c02262c..67782cf44 100644 --- a/ui/espresso/MultiProcessSample/app/build.gradle +++ b/ui/espresso/MultiProcessSample/app/build.gradle @@ -18,7 +18,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 26 - buildToolsVersion "26.0.0" + buildToolsVersion "26.0.2" defaultConfig { applicationId "com.example.android.testing.espresso.multiprocesssample" minSdkVersion 26 diff --git a/ui/espresso/MultiWindowSample/build.gradle b/ui/espresso/MultiWindowSample/build.gradle index d6680037b..1e8252ab4 100644 --- a/ui/espresso/MultiWindowSample/build.gradle +++ b/ui/espresso/MultiWindowSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/ui/espresso/RecyclerViewSample/app/build.gradle b/ui/espresso/RecyclerViewSample/app/build.gradle index f0360f96f..95e9b1fd3 100644 --- a/ui/espresso/RecyclerViewSample/app/build.gradle +++ b/ui/espresso/RecyclerViewSample/app/build.gradle @@ -21,7 +21,7 @@ android { buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId "com.example.android.testing.espresso.RecyclerViewSample" - minSdkVersion 9 + minSdkVersion 14 targetSdkVersion 26 versionCode 1 versionName "1.0" @@ -37,6 +37,7 @@ dependencies { // App dependencies compile 'com.android.support:support-annotations:' + rootProject.supportLibVersion; compile 'com.android.support:recyclerview-v7:' + rootProject.supportLibVersion; + compile 'com.android.support:design:' + rootProject.supportLibVersion; // Testing-only dependencies androidTestCompile 'com.android.support.test:runner:' + rootProject.runnerVersion; @@ -47,4 +48,6 @@ dependencies { // Force usage of dependencies in the test app, since it is internally used by the runner module. androidTestCompile 'com.android.support:support-annotations:' + rootProject.supportLibVersion; androidTestCompile 'com.android.support:recyclerview-v7:' + rootProject.supportLibVersion; + androidTestCompile 'com.android.support:support-v4:' + rootProject.supportLibVersion; + androidTestCompile 'com.android.support:design:' + rootProject.supportLibVersion; } diff --git a/ui/espresso/RecyclerViewSample/build.gradle b/ui/espresso/RecyclerViewSample/build.gradle index 359614090..1ff49b9a4 100644 --- a/ui/espresso/RecyclerViewSample/build.gradle +++ b/ui/espresso/RecyclerViewSample/build.gradle @@ -24,7 +24,7 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:2.3.2' + classpath 'com.android.tools.build:gradle:2.3.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -41,9 +41,9 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" - runnerVersion = "1.0.0" - rulesVersion = "1.0.0" - espressoVersion = "3.0.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" + runnerVersion = "1.0.1" + rulesVersion = "1.0.1" + espressoVersion = "3.0.1" } diff --git a/ui/espresso/WebBasicSample/build.gradle b/ui/espresso/WebBasicSample/build.gradle index d6680037b..1e8252ab4 100644 --- a/ui/espresso/WebBasicSample/build.gradle +++ b/ui/espresso/WebBasicSample/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/ui/uiautomator/BasicSample/build.gradle b/ui/uiautomator/BasicSample/build.gradle index d31646c98..9f7f9c857 100644 --- a/ui/uiautomator/BasicSample/build.gradle +++ b/ui/uiautomator/BasicSample/build.gradle @@ -22,8 +22,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" rulesVersion = "1.0.0" espressoVersion = "3.0.0" diff --git a/unit/BasicSample/build.gradle b/unit/BasicSample/build.gradle index 32753db9c..e6ee7be93 100644 --- a/unit/BasicSample/build.gradle +++ b/unit/BasicSample/build.gradle @@ -40,7 +40,7 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" + buildToolsVersion = "26.0.2" junitVersion = "4.12" mockitoVersion = "1.10.19" } diff --git a/unit/BasicUnitAndroidTest/build.gradle b/unit/BasicUnitAndroidTest/build.gradle index 2a5d71da2..1e79b827e 100644 --- a/unit/BasicUnitAndroidTest/build.gradle +++ b/unit/BasicUnitAndroidTest/build.gradle @@ -25,8 +25,8 @@ allprojects { } ext { - buildToolsVersion = "25.0.0" - supportLibVersion = "25.4.0" + buildToolsVersion = "26.0.2" + supportLibVersion = "26.1.0" runnerVersion = "1.0.0" hamcrestVersion = "1.3" }