1
0
mirror of https://github.com/tektoncd/catalog.git synced 2024-11-26 06:23:37 +00:00
catalog/test/e2e-tests.sh
Chmouel Boudjnah 5ca595fa2f Fix e2e test change detection
The regexp was catching up golang-test/ task so it will always test
everything when there is in golang-test/

Signed-off-by: Chmouel Boudjnah <chmouel@redhat.com>
2021-06-02 12:14:54 +01:00

108 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Copyright 2019 The Tekton Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Configure the number of parallel tests running at the same time, start from 0
MAX_NUMBERS_OF_PARALLEL_TASKS=4 # => 5
export RELEASE_YAML=https://github.com/tektoncd/pipeline/releases/download/v0.23.0/release.yaml
source $(dirname $0)/../vendor/github.com/tektoncd/plumbing/scripts/e2e-tests.sh
source $(dirname $0)/e2e-common.sh
TMPF=$(mktemp /tmp/.mm.XXXXXX)
clean() { rm -f ${TMPF}; }
trap clean EXIT
# Setup a test cluster.
[[ -z ${LOCAL_CI_RUN} ]] && {
# Initialize cluster
initialize "$@"
# Install the latest Tekton CRDs.
install_pipeline_crd
}
# You can ignore some yaml tests by providing the TEST_YAML_IGNORES variable
# with the test name separated by a space, for example:
#
# TEST_YAML_IGNORES="kaniko s2i"
#
# will ignore the kaniko and s2i tests,
#
TEST_YAML_IGNORES=${TEST_YAML_IGNORES:-""}
# Allow ignoring some yaml tests, space separated, should be the basename of the
# test for example "s2i"
TEST_TASKRUN_IGNORES=${TEST_TASKRUN_IGNORES:-"maven"}
# Define this variable if you want to run all tests and not just the modified one.
TEST_RUN_ALL_TESTS=${TEST_RUN_ALL_TESTS:-""}
set -ex
set -o pipefail
all_tests=$(echo task/*/*/tests)
function detect_changed_e2e_test() {
# detect for changes in e2e tests dir
git --no-pager diff --name-only "${PULL_BASE_SHA}".."${PULL_PULL_SHA}"|grep "^test/[^/]*"
}
[[ -z ${TEST_RUN_ALL_TESTS} ]] && [[ ! -z $(detect_changed_e2e_test) ]] && TEST_RUN_ALL_TESTS=1
function detect_new_changed_tasks() {
# detect for changes in tests dir of the task
git --no-pager diff --name-only "${PULL_BASE_SHA}".."${PULL_PULL_SHA}"|grep 'task/[^\/]*/[^\/]*/tests/[^/]*'|xargs -I {} dirname {}|sed 's/\(tests\).*/\1/g'
# detect for changes in the task manifest
git --no-pager diff --name-only "${PULL_BASE_SHA}".."${PULL_PULL_SHA}"|grep 'task/[^\/]*/[^\/]*/*[^/]*.yaml'|xargs -I {} dirname {}|awk '{print $1"/tests"}'
}
if [[ -z ${TEST_RUN_ALL_TESTS} ]];then
all_tests=$(detect_new_changed_tasks|sort -u || true)
[[ -z ${all_tests} ]] && {
echo "No tests has been detected in this PR. exiting."
success
}
fi
test_yaml_can_install "${all_tests}"
function test_tasks {
local cnt=0
local task_to_tests=""
for runtest in $@;do
task_to_tests="${task_to_tests} ${runtest}"
if [[ ${cnt} == "${MAX_NUMBERS_OF_PARALLEL_TASKS}" ]];then
test_task_creation "${task_to_tests}"
cnt=0
task_to_tests=""
continue
fi
cnt=$((cnt+1))
done
# in case if there are some remaining tasks
if [[ -n ${task_to_tests} ]];then
test_task_creation "${task_to_tests}"
fi
}
test_tasks "${all_tests}"
success