86a697cf4b
Bashate does not fail for "E004 File did not end with a newline" properly unless the file is the last in the list when multiple check files are provided (as we do with xargs). Since the file order is random, if only 1 or 2 files are failing, this can cause very random linter failures. The solution is to use 'xargs -n1' to pass only 1 file to each bashate process. See also https://review.openstack.org/#/c/614542/ Change-Id: I2186795510c2327571e7631b45de8a112f4d4445
53 lines
1.9 KiB
Bash
Executable File
53 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Copyright 2016, Rackspace US, Inc.
|
|
#
|
|
# 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.
|
|
|
|
# WARNING:
|
|
# This file is use by all OpenStack-Ansible roles for testing purposes.
|
|
# Any changes here will affect all OpenStack-Ansible role repositories
|
|
# with immediate effect.
|
|
|
|
# PURPOSE:
|
|
# This script executes bashate against all the files it find that match
|
|
# the search pattern. The search pattern is meant to find any shell
|
|
# scripts present in the role.
|
|
#
|
|
# The test ignores the following rules:
|
|
#
|
|
# E003: Indent not multiple of 4 (we prefer to use multiples of 2)
|
|
#
|
|
# E006: Line longer than 79 columns (as many scripts use jinja
|
|
# templating, this is very difficult)
|
|
#
|
|
# E040: Syntax error determined using `bash -n` (as many scripts
|
|
# use jinja templating, this will often fail and the syntax
|
|
# error will be discovered in execution anyway)
|
|
|
|
## Shell Opts ----------------------------------------------------------------
|
|
|
|
set -e
|
|
|
|
## Vars ----------------------------------------------------------------------
|
|
|
|
export WORKING_DIR=${WORKING_DIR:-$(pwd)}
|
|
|
|
## Main ----------------------------------------------------------------------
|
|
|
|
grep --recursive --binary-files=without-match \
|
|
--files-with-match '^.!.*\(ba\)\?sh$' \
|
|
--exclude-dir .tox \
|
|
--exclude-dir .git \
|
|
"${WORKING_DIR}" | xargs -n1 bashate --error . --verbose --ignore=E003,E006,E040
|