-
Notifications
You must be signed in to change notification settings - Fork 1
/
circle.yml
124 lines (98 loc) · 5.1 KB
/
circle.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
machine:
environment:
COVERALLS_REPO_TOKEN: nnpAVCsxCl2hK5BlVUd6VsMNE78LaBuh4
# more clean command line outputs
TERM: "dumb"
java:
version: oraclejdk8
dependencies:
pre:
# workaround for "failed to find Build Tools revision xx"
# https://discuss.circleci.com/t/android-build-tools-23-0-2-not-available/455/3
- echo y | android update sdk --no-ui --all --filter tool,extra-android-m2repository,extra-android-support #,extra-google-google_play_services,extra-google-m2repository,android-23
- echo y | android update sdk --no-ui --all --filter build-tools-23.0.3
# create android v23 emulator
- echo no | android create avd -n my-android23 -t $(android list targets | grep android-23 | cut -d" " -f2) -c 512M --abi default/armeabi-v7a
- echo "hw.keyboard=no" >> ~/.android/avd/my-android23.avd/config.ini
- echo "hw.gpu.enabled=yes" >> ~/.android/avd/my-android23.avd/config.ini
- echo "hw.gpu.mode=auto" >> ~/.android/avd/my-android23.avd/config.ini
# fetch espresso-macchiato sources
- git submodule update --init --recursive
test:
pre:
- emulator -avd my-android23 -no-audio -no-window -wipe-data:
background: true
parallel: true
override:
# Build the code
- ./gradlew app:assembleDebug
# Check lint hints
- ./gradlew app:lintDebug
- ./gradlew core:lintDebug
- ./gradlew database:lintDebug
# Build instrumented test code and execute them on emulator
- ./gradlew app:assembleDebugAndroidTest
- circle-android wait-for-boot
- sleep 60
# fixed date for testing (leap-year)
- adb shell date -u "042513102016.00"
- adb shell input keyevent 82
# clear logs from emulator
- adb logcat -c
##################################################
# app connected checks
#
- ./gradlew app:connectedCheckCustomized
- mkdir -p $CIRCLE_TEST_REPORTS/app_android_tests/xml
- cp -r app/build/outputs/androidTest-results/connected $CIRCLE_TEST_REPORTS/app_android_tests/xml
- mkdir -p $CIRCLE_TEST_REPORTS/app_android_tests/html
- cp -r app/build/reports/androidTests/connected $CIRCLE_TEST_REPORTS/app_android_tests/html
# collect logs from emulator and make them accessable
- adb logcat -d | grep -v GpsLocationProvider | grep -v MediaProvider | grep -v MetadataRetrieverClient | grep -v BackupManagerService | grep -v ARMAssembler | grep -v Choreographer | grep -v IInputConnectionWrapper | grep -v "I/art" | grep -v ConnectivityService | grep -v "D/PhoneInterfaceManager" | grep -v "I/Email" | grep -v "I/Exchange" | grep -v "E/libEGL" | grep -v "D/gralloc" | grep -v "E/installd" | grep -v "D/ConnectivityManager" | grep -v "D/WIFI" | grep -v "V/Mms" > $CIRCLE_ARTIFACTS/logcat_emulator.txt
##################################################
# app reference pictures
#
- ./gradlew apppictures:connectedAndroidTest
- mkdir -p $CIRCLE_TEST_REPORTS/app_pictures_android_tests/xml
- cp -r apppictures/build/outputs/androidTest-results/connected $CIRCLE_TEST_REPORTS/app_pictures_android_tests/xml
- mkdir -p $CIRCLE_TEST_REPORTS/app_pictures_android_tests/html
- cp -r apppictures/build/reports/androidTests/connected $CIRCLE_TEST_REPORTS/app_pictures_android_tests/html
# release memory for following tests
- kill -9 `ps ax | grep -m 1 "emulator64-arm" | awk '{ print $1 }'`
- mv app/build/outputs/test-screenshots $CIRCLE_TEST_REPORTS/
##################################################
# app unit tests
#
- ./gradlew app:test
- mkdir -p $CIRCLE_TEST_REPORTS/app_tests/xml
- cp -r app/build/test-results/debug $CIRCLE_TEST_REPORTS/app_tests/xml
- mkdir -p $CIRCLE_TEST_REPORTS/app_tests/html
- cp -r app/build/reports/tests/debug $CIRCLE_TEST_REPORTS/app_tests/html
- ./gradlew core:test
- mkdir -p $CIRCLE_TEST_REPORTS/core_tests/xml
- cp -r core/build/test-results/debug $CIRCLE_TEST_REPORTS/core_tests/xml
- mkdir -p $CIRCLE_TEST_REPORTS/core_tests/html
- cp -r core/build/reports/tests/debug $CIRCLE_TEST_REPORTS/core_tests/html
- ./gradlew database:test
- mkdir -p $CIRCLE_TEST_REPORTS/database_tests/xml
- cp -r database/build/test-results/debug $CIRCLE_TEST_REPORTS/database_tests/xml
- mkdir -p $CIRCLE_TEST_REPORTS/database_tests/html
- cp -r database/build/reports/tests/debug $CIRCLE_TEST_REPORTS/database_tests/html
# Execute Component Tests
#- ./gradlew apptestsjvm:test
# Create coverage report
#- ./gradlew jacocoTestReport
# Check dependency versions
- ./gradlew app:versionEyeUpdate
# copy lint report
- mkdir $CIRCLE_TEST_REPORTS/Lint
- mv app/build/outputs/lint-results-debug_files $CIRCLE_TEST_REPORTS/lint
- mv app/build/outputs/lint-results-debug.html $CIRCLE_TEST_REPORTS/lint/lint-app-results.html
- mv core/build/outputs/lint-results-debug.html $CIRCLE_TEST_REPORTS/lint/lint-core-results.html
- mv database/build/outputs/lint-results-debug.html $CIRCLE_TEST_REPORTS/lint/lint-database-results.html
deployment:
# Only report code coverage if all tasks are successful
coverage:
branch: [master]
commands:
- ./gradlew coveralls