Introduce bashate

This commit introduces bashate[0] which is a code style checker for bash
scripts. We already have some bash scripts in Tempest repo. So, it might
be good to check the style automatically.

Some scripts under the tools directory are also fixed due to the bashate
violation.

Change-Id: I07820f10387552f93a9d8891b58a8c7fcdb83046
changes/58/673458/1
Masayuki Igawa 4 years ago
parent e1353a88b7
commit de1153b361
No known key found for this signature in database
GPG Key ID: 290F53EDC899BF89

@ -778,6 +778,7 @@
- tempest-full-test-account-no-admin-py3:
voting: false
irrelevant-files: *tempest-irrelevant-files
- openstack-tox-bashate
gate:
jobs:
- tempest-slow-py3:

@ -15,7 +15,8 @@ fi
# isort is not compatible with the default flake8 (H306), maybe flake8-isort
# isort -rc -sl -fss ../tempest ../setup.py
$AUTOPEP8 --exit-code --max-line-length=79 --experimental --in-place -r ../tempest ../setup.py
$AUTOPEP8 --exit-code --max-line-length=79 --experimental --in-place \
-r ../tempest ../setup.py
ERROR=$?
if [[ $ERROR -eq 0 ]]; then

@ -61,7 +61,7 @@ function title_underline {
printf " ===\n"
}
function print_plugin_table() {
function print_plugin_table {
title_underline ${name_col_len}
printf "%-3s %-${name_col_len}s %s\n" "SR" "Plugin Name" "URL"
title_underline ${name_col_len}

@ -47,7 +47,7 @@ PROJECT_LIST="$(python tools/generate-tempest-plugins-list.py)"
BLACKLIST="$(python tools/generate-tempest-plugins-list.py blacklist)"
# Function to clone project using zuul-cloner or from git
function clone_project() {
function clone_project {
if [ -e /usr/zuul-env/bin/zuul-cloner ]; then
/usr/zuul-env/bin/zuul-cloner --cache-dir /opt/git \
https://opendev.org \
@ -61,7 +61,7 @@ function clone_project() {
}
# function to create virtualenv to perform sanity operation
function prepare_workspace() {
function prepare_workspace {
SANITY_DIR=$(pwd)
virtualenv -p python3 --clear "$SANITY_DIR"/.venv
export TVENV="$SANITY_DIR/tools/with_venv.sh"
@ -72,7 +72,7 @@ function prepare_workspace() {
}
# Function to install project
function install_project() {
function install_project {
"$TVENV" pip install "$SANITY_DIR"/"$1"
# Check for test-requirements.txt file in a project then install it.
if [ -e "$SANITY_DIR"/"$1"/test-requirements.txt ]; then
@ -81,7 +81,7 @@ function install_project() {
}
# Function to perform sanity checking on Tempest plugin
function tempest_sanity() {
function tempest_sanity {
"$TVENV" tempest init "$SANITY_DIR"/tempest_sanity && \
cd "$SANITY_DIR"/tempest_sanity && \
"$TVENV" tempest list-plugins && \
@ -100,7 +100,7 @@ function tempest_sanity() {
}
# Function to run sanity check on each project
function plugin_sanity_check() {
function plugin_sanity_check {
prepare_workspace && \
clone_project "$1" && \
install_project "$1" && \

@ -1,5 +1,5 @@
[tox]
envlist = pep8,py36,py37,py27,pip-check-reqs
envlist = pep8,py36,py37,py27,bashate,pip-check-reqs
minversion = 2.3.1
skipsdist = True
@ -303,6 +303,20 @@ commands =
-b html releasenotes/source releasenotes/build/html
whitelist_externals = rm
[testenv:bashate]
basepython = python3
# if you want to test out some changes you have made to bashate
# against tempest, just set BASHATE_INSTALL_PATH=/path/... to your
# modified bashate tree
deps =
{env:BASHATE_INSTALL_PATH:bashate}
whitelist_externals = bash
commands = bash -c "find {toxinidir}/tools \
-not \( -type d -name .?\* -prune \) \
-type f \
-name \*.sh \
-print0 | xargs -0 bashate -v"
[testenv:pip-check-reqs]
# Do not install test-requirements as that will pollute the virtualenv for
# determining missing packages.

Loading…
Cancel
Save