blob: cbbc043e0efb2eaae186c404abd1ccf9744c9a9e [file] [log] [blame]
#!/bin/bash
# ============LICENSE_START=======================================================
# Copyright (C) 2019 The Nordix Foundation. All rights reserved.
# ================================================================================
# 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
set -o nounset
set -o errexit
set -o pipefail
#-------------------------------------------------------------------------------
# Various tests are run using tox such as docs, yamllint, ansible-lint, and
# shellcheck. Some repos do not have certain types of files and those repos
# are ignored using REPOS_TO_IGNORE variable which is controlled within the
# jjb per lint type.
#-------------------------------------------------------------------------------
run_tox() {
echo "Info : Preparing to run tox for the repo $GERRIT_PROJECT"
# set and export defaults
LINT_TYPE="${LINT_TYPE:-ansible-lint}"
REPOS_TO_IGNORE="${REPOS_TO_IGNORE:-none}"
VERBOSITY=${VERBOSITY:-false}
export LINT_TYPE REPOS_TO_IGNORE VERBOSITY
# check if the change is for a repo we should ignore
if [[ "$REPOS_TO_IGNORE" =~ "$GERRIT_PROJECT" ]]; then
echo "Info : Ignoring change as $GERRIT_PROJECT is in ignore list!"
echo "Info : Done!"
exit 0
fi
# ensure we are in job build WORKSPACE
cd "$WORKSPACE"
# set DEBIAN_FRONTEND to run apt non-interactively
DEBIAN_FRONTEND=noninteractive
export DEBIAN_FRONTEND
# install dependencies
echo "Info : Install python3.7-minimal python3-distutils virtualenv using apt"
redirect_cmd sudo apt update
redirect_cmd sudo apt install -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew -y python3.7-minimal python3-distutils virtualenv
# create and activate virtualenv
echo "Info : Create and activate python virtualenv"
redirect_cmd virtualenv -p python3 .venv
set +u
redirect_cmd source .venv/bin/activate
set -u
# install only tox since the rest of the requirements are installed by tox itself
TOX_PACKAGE=$(grep "^tox==" test-requirements.txt)
echo "Info : Install $TOX_PACKAGE"
redirect_cmd pip install --force-reinstall "$TOX_PACKAGE"
# run tox
echo "Info : Run $LINT_TYPE using tox"
echo "----------------------------------------------------"
tox -e "$LINT_TYPE"
echo "----------------------------------------------------"
echo "Info : Done!"
}
#-------------------------------------------------------------------------------
# In some cases, it is useful to see all the output generated by commands so
# this function makes it possible for users to achieve that by not redirecting
# output to /dev/null when verbosity is enabled
#-------------------------------------------------------------------------------
redirect_cmd() {
if [[ "$VERBOSITY" == "false" ]]; then
"$@" > /dev/null 2>&1
else
"$@"
fi
}
#-------------------------------------------------------------------------------
# run tox
#-------------------------------------------------------------------------------
run_tox "$@"
# vim: set ts=2 sw=2 expandtab: