1
+ #! /bin/bash
2
+ # Copyright 2020 Google LLC
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # https://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+
17
+ # `-e` enables the script to automatically fail when a command fails
18
+ # `-o pipefail` sets the exit code to the rightmost comment to exit with a non-zero
19
+ set -eo pipefail
20
+ # Enables `**` to include files nested inside sub-folders
21
+ shopt -s globstar
22
+
23
+ cd github/google-api-python-client
24
+
25
+ # Run periodic samples tests at latest release
26
+ if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = * " periodic" * ]]; then
27
+ LATEST_RELEASE=$( git describe --abbrev=0 --tags)
28
+ git checkout $LATEST_RELEASE
29
+ fi
30
+
31
+ # Disable buffering, so that the logs stream through.
32
+ export PYTHONUNBUFFERED=1
33
+
34
+ # Debug: show build environment
35
+ env | grep KOKORO
36
+
37
+ # Install nox
38
+ python3.6 -m pip install --upgrade --quiet nox
39
+
40
+ # Use secrets acessor service account to get secrets
41
+ if [[ -f " ${KOKORO_GFILE_DIR} /secrets_viewer_service_account.json" ]]; then
42
+ gcloud auth activate-service-account \
43
+ --key-file=" ${KOKORO_GFILE_DIR} /secrets_viewer_service_account.json" \
44
+ --project=" cloud-devrel-kokoro-resources"
45
+ fi
46
+
47
+ # This script will create 3 files:
48
+ # - testing/test-env.sh
49
+ # - testing/service-account.json
50
+ # - testing/client-secrets.json
51
+ ./scripts/decrypt-secrets.sh
52
+
53
+ source ./testing/test-env.sh
54
+ export GOOGLE_APPLICATION_CREDENTIALS=$( pwd) /testing/service-account.json
55
+
56
+ # For cloud-run session, we activate the service account for gcloud sdk.
57
+ gcloud auth activate-service-account \
58
+ --key-file " ${GOOGLE_APPLICATION_CREDENTIALS} "
59
+
60
+ export GOOGLE_CLIENT_SECRETS=$( pwd) /testing/client-secrets.json
61
+
62
+ echo -e " \n******************** TESTING PROJECTS ********************"
63
+
64
+ # Switch to 'fail at end' to allow all tests to complete before exiting.
65
+ set +e
66
+ # Use RTN to return a non-zero value if the test fails.
67
+ RTN=0
68
+ ROOT=$( pwd)
69
+ # Find all requirements.txt in the samples directory (may break on whitespace).
70
+ for file in samples/** /requirements.txt; do
71
+ cd " $ROOT "
72
+ # Navigate to the project folder.
73
+ file=$( dirname " $file " )
74
+ cd " $file "
75
+
76
+ echo " ------------------------------------------------------------"
77
+ echo " - testing $file "
78
+ echo " ------------------------------------------------------------"
79
+
80
+ # Use nox to execute the tests for the project.
81
+ python3.6 -m nox -s " $RUN_TESTS_SESSION "
82
+ EXIT=$?
83
+
84
+ # If this is a periodic build, send the test log to the Build Cop Bot.
85
+ # See https://github.com/googleapis/repo-automation-bots/tree/master/packages/buildcop.
86
+ if [[ $KOKORO_BUILD_ARTIFACTS_SUBDIR = * " periodic" * ]]; then
87
+ chmod +x $KOKORO_GFILE_DIR /linux_amd64/buildcop
88
+ $KOKORO_GFILE_DIR /linux_amd64/buildcop
89
+ fi
90
+
91
+ if [[ $EXIT -ne 0 ]]; then
92
+ RTN=1
93
+ echo -e " \n Testing failed: Nox returned a non-zero exit code. \n"
94
+ else
95
+ echo -e " \n Testing completed.\n"
96
+ fi
97
+
98
+ done
99
+ cd " $ROOT "
100
+
101
+ # Workaround for Kokoro permissions issue: delete secrets
102
+ rm testing/{test-env.sh,client-secrets.json,service-account.json}
103
+
104
+ exit " $RTN "
0 commit comments