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
This commit is contained in:
Masayuki Igawa 2019-07-30 18:02:07 +09:00
parent e1353a88b7
commit de1153b361
No known key found for this signature in database
GPG Key ID: 290F53EDC899BF89
5 changed files with 24 additions and 8 deletions

View File

@ -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:

View File

@ -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

View File

@ -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}

View File

@ -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" && \

16
tox.ini
View File

@ -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.