From: armando-migliaccio Date: Mon, 22 Dec 2014 21:02:14 +0000 (-0800) Subject: Clean-up sanity checks done via shell scripts X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=4fdda65a5b9f379af997e1e971865ccfa7a93156;p=openstack-build%2Fneutron-build.git Clean-up sanity checks done via shell scripts Move the various checks done via shell into a single file; this is cleaner and we'll have a lot more space to explain what is going on. Related-bug: #1404605 Change-Id: Ibb451c6a25217f37b73983c30891f55b35f143cd --- diff --git a/tools/check_bash.sh b/tools/check_bash.sh deleted file mode 100644 index e9d178eeb..000000000 --- a/tools/check_bash.sh +++ /dev/null @@ -1,31 +0,0 @@ -#! /bin/sh - -# Copyright (C) 2014 VA Linux Systems Japan K.K. -# Copyright (C) 2014 YAMAMOTO Takashi -# 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. - -# The purpose of this script is to avoid casual introduction of more -# bash dependency. Please consider alternatives before commiting code -# which uses bash specific features. - -# Ignore comments, but include shebangs -OBSERVED=$(grep -E '^([^#]|#!).*bash' tox.ini tools/* | wc -l) -EXPECTED=5 -if [ ${EXPECTED} -ne ${OBSERVED} ]; then - echo Unexpected number of bash usages are detected. - echo Please read the comment in $0 - exit 1 -fi -exit 0 diff --git a/tools/misc-sanity-checks.sh b/tools/misc-sanity-checks.sh new file mode 100644 index 000000000..49991457b --- /dev/null +++ b/tools/misc-sanity-checks.sh @@ -0,0 +1,71 @@ +#! /bin/sh + +# Copyright (C) 2014 VA Linux Systems Japan K.K. +# Copyright (C) 2014 YAMAMOTO Takashi +# 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. + +# The purpose of this script is to avoid casual introduction of more +# bash dependency. Please consider alternatives before commiting code +# which uses bash specific features. + +export TMPDIR=`/bin/mktemp -d` +trap "rm -rf $TMPDIR" EXIT + +FAILURES=$TMPDIR/failures + + +check_opinionated_shell () { + # Check that shell scripts are not bash opinionated (ignore comments though) + # If you cannot avoid the use of bash, please change the EXPECTED var below. + OBSERVED=$(grep -E '^([^#]|#!).*bash' tox.ini tools/* | wc -l) + EXPECTED=5 + if [ ${EXPECTED} -ne ${OBSERVED} ]; then + echo "Bash usage has been detected!" >>$FAILURES + fi +} + + +check_no_symlinks_allowed () { + # Symlinks break the package build process, so ensure that they + # do not slip in, except hidden symlinks. + if [ $(find . -type l ! -path '*/\.*' | wc -l) -ge 1 ]; then + echo "Symlinks are not allowed!" >>$FAILURES + fi +} + + +check_pot_files_errors () { + # The job neutron-propose-translation-update does not update from + # transifex since our po files contain duplicate entries where + # obsolete entries duplicate normal entries. Prevent obsolete + # entries to slip in + find neutron -type f -regex '.*\.pot?' \ + -print0|xargs -0 -n 1 msgfmt --check-format \ + -o /dev/null + if [ "$?" -ne 0 ]; then + echo "PO files syntax is not correct!" >>$FAILURES + fi +} + +# Add your checks here... +check_opinionated_shell +check_no_symlinks_allowed +check_pot_files_errors + +# Fail, if there are emitted failures +if [ -f $FAILURES ]; then + cat $FAILURES + exit 1 +fi diff --git a/tox.ini b/tox.ini index 571b57140..8877fa7ba 100644 --- a/tox.ini +++ b/tox.ini @@ -47,11 +47,10 @@ downloadcache = ~/cache/pip [testenv:pep8] commands = - sh -c "if [ $(find . -type l ! -path '*.tox*' | wc -l) -ge 1 ]; then echo 'Symlinks are not allowed!' && exit 1; fi" - sh ./tools/check_bash.sh + # If it is easier to add a check via a shell script, consider adding it in this file + sh ./tools/misc-sanity-checks.sh flake8 neutron-db-manage check_migration - sh -c "find neutron -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null" whitelist_externals = sh [testenv:i18n]