flutter/dev/bots/firebase_testlab.sh
Ian Hickson 449f4a6673
License update (#45373)
* Update project.pbxproj files to say Flutter rather than Chromium

Also, the templates now have an empty organization so that we don't cause people to give their apps a Flutter copyright.

* Update the copyright notice checker to require a standard notice on all files

* Update copyrights on Dart files. (This was a mechanical commit.)

* Fix weird license headers on Dart files that deviate from our conventions; relicense Shrine.

Some were already marked "The Flutter Authors", not clear why. Their
dates have been normalized. Some were missing the blank line after the
license. Some were randomly different in trivial ways for no apparent
reason (e.g. missing the trailing period).

* Clean up the copyrights in non-Dart files. (Manual edits.)

Also, make sure templates don't have copyrights.

* Fix some more ORGANIZATIONNAMEs
2019-11-27 15:04:02 -08:00

85 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Copyright 2014 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# The tests to run on Firebase Test Lab.
# Currently, the test consists on building an Android App Bundle and ensuring
# that the app doesn't crash upon startup.
#
# When adding a test, ensure that there's at least a `print()` statement under lib/*.dart.
tests=(
"dev/integration_tests/release_smoke_test"
"dev/integration_tests/abstract_method_smoke_test"
"dev/integration_tests/android_embedding_v2_smoke_test"
)
# The devices where the tests are run.
#
# To get the full list of devices available, run:
# gcloud firebase test android models list
devices=(
# Pixel 3
"model=blueline,version=28"
"model=blueline,version=Q-beta-3"
# Moto Z XT1650
"model=griffin,version=24"
)
set -e
GIT_REVISION=$(git rev-parse HEAD)
DEVICE_FLAG=""
for device in ${devices[*]}; do
DEVICE_FLAG+="--device $device "
done
# New contributors will not have permissions to run this test - they won't be
# able to access the service account information. We should just mark the test
# as passed - it will run fine on post submit, where it will still catch
# failures.
# We can also still make sure that building a release app bundle still works.
if [[ $GCLOUD_FIREBASE_TESTLAB_KEY == ENCRYPTED* ]]; then
echo "This user does not have permission to run this test."
exit 0
fi
echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json
gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
gcloud --quiet config set project flutter-infra
function test_app_bundle() {
pushd "$@"
../../../bin/flutter build appbundle --target-platform android-arm,android-arm64
aab="build/app/outputs/bundle/release/app-release.aab"
# If the app bundle doesn't exist, then exit with code 1.
if [ ! -f "$aab" ]; then
exit 1
fi
# Run the test.
gcloud firebase test android run \
--type robo \
--app "$aab" \
--timeout 2m \
--results-bucket=gs://flutter_firebase_testlab \
--results-dir="$@"/"$GIT_REVISION"/"$CIRRUS_BUILD_ID" \
$DEVICE_FLAG
rm -f /tmp/logcat
gsutil cat gs://flutter_firebase_testlab/"$@"/"$GIT_REVISION"/"$CIRRUS_BUILD_ID"/*/logcat > /tmp/logcat
# Check logcat for "E/flutter" - if it's there, something's wrong.
! grep "E/flutter" /tmp/logcat || false
# Check logcat for "I/flutter" - This is in the log if there's a print statement under lib/*.dart.
grep "I/flutter" /tmp/logcat
popd
}
for test in ${tests[*]}; do
test_app_bundle $test
done