3b66a9ff77
etc/... may be non existent in some build environments. It's also pip
does not install those files under site-packages neutron module, so
paths relative to python files don't work.
So instead of using relative paths to etc/... contents, maintain our own
version of configuration files. It means we need to maintain tests only
policy.json file too, in addition to neutron.conf.test and
api-paste.ini.test.
Ideally, we would make etc/policy.json copied under site-packages in
addition to /etc/neutron/. In that way, we would not maintain a copy of
policy.json file in two places.
Though it seems that setuputils does not have a good way to install
files under site-packages that would consider all the differences
between python environments (specifically, different prefixes used in
different systems).
Note: it's not *absolutely* needed to update the test policy.json file
on each next policy update, though it will be needed in cases when we
want to test policy changes in unit tests. So adding a check to make
sure files are identical.
This partially reverts commit 1404f33b50
.
Conflicts:
neutron/policy.py
Related-Bug: #1433146
Change-Id: If1f5ebd981cf06558d5102524211799676068889
87 lines
2.9 KiB
Bash
87 lines
2.9 KiB
Bash
#! /bin/sh
|
|
|
|
# Copyright (C) 2014 VA Linux Systems Japan K.K.
|
|
# Copyright (C) 2014 YAMAMOTO Takashi <yamamoto at valinux co jp>
|
|
# 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.
|
|
|
|
TMPDIR=`mktemp -d /tmp/${0##*/}.XXXXXX` || exit 1
|
|
export TMPDIR
|
|
trap "rm -rf $TMPDIR" EXIT
|
|
|
|
FAILURES=$TMPDIR/failures
|
|
|
|
|
|
check_opinionated_shell () {
|
|
# The purpose of this function is to avoid casual introduction of more
|
|
# bash dependency. Please consider alternatives before committing code
|
|
# which uses bash specific features.
|
|
|
|
# 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 '^([[:space:]]*[^#[:space:]]|#!).*bash' \
|
|
tox.ini tools/* | wc -l)
|
|
EXPECTED=7
|
|
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
|
|
}
|
|
|
|
|
|
check_identical_policy_files () {
|
|
# For unit tests, we maintain their own policy.json file to make test suite
|
|
# independent of whether it's executed from the neutron source tree or from
|
|
# site-packages installation path. We don't want two copies of the same
|
|
# file to diverge, so checking that they are identical
|
|
diff etc/policy.json neutron/tests/etc/policy.json 2>&1 > /dev/null
|
|
if [ "$?" -ne 0 ]; then
|
|
echo "policy.json files must be identical!" >>$FAILURES
|
|
fi
|
|
}
|
|
|
|
# Add your checks here...
|
|
check_opinionated_shell
|
|
check_no_symlinks_allowed
|
|
check_pot_files_errors
|
|
check_identical_policy_files
|
|
|
|
# Fail, if there are emitted failures
|
|
if [ -f $FAILURES ]; then
|
|
cat $FAILURES
|
|
exit 1
|
|
fi
|