Test whether sample config generation works

Adds --checkonly to tools/config/check_uptodate.sh.

This allows verifying that a configuration file was
generated.

We have had a number of issues introduced which
have caused config file generation to fail since we
removed the sample config file check in the gate.
This does not add back checks to ensure that the file
has been updated, it only checks to ensure that it is
still possible to update the sample file.

Change-Id: I2e0e376fbdec5a1bb584c6739231649e1d0f5d8e
This commit is contained in:
Eric Harney 2015-08-18 17:09:50 -04:00
parent d83a9ce280
commit 683dd65d41
3 changed files with 34 additions and 16 deletions

View File

@ -184,6 +184,7 @@ function run_pep8 {
echo "Running flake8 ..."
warn_on_flake8_without_venv
bash -c "${wrapper} flake8"
${wrapper} bash tools/config/check_uptodate.sh --checkonly
}

View File

@ -1,28 +1,44 @@
#!/usr/bin/env bash
CHECKONLY=0
if [ "$1" == "--checkonly" ]; then
CHECKONLY=1
fi
PROJECT_NAME=${PROJECT_NAME:-cinder}
CFGFILE_NAME=${PROJECT_NAME}.conf.sample
if [ -e etc/${PROJECT_NAME}/${CFGFILE_NAME} ]; then
CFGFILE=etc/${PROJECT_NAME}/${CFGFILE_NAME}
elif [ -e etc/${CFGFILE_NAME} ]; then
CFGFILE=etc/${CFGFILE_NAME}
else
echo "${0##*/}: can not find config file"
exit 1
fi
TEMPDIR=`mktemp -d /tmp/${PROJECT_NAME}.XXXXXX`
trap "rm -rf $TEMPDIR" EXIT
tools/config/generate_sample.sh -b ./ -p ${PROJECT_NAME} -o ${TEMPDIR}
if ! diff -u ${TEMPDIR}/${CFGFILE_NAME} ${CFGFILE}
then
echo "${0##*/}: ${PROJECT_NAME}.conf.sample is not up to date."
echo "${0##*/}: Please run ${0%%${0##*/}}generate_sample.sh from within a VENV."
echo " \'source .venv/bin/activate; generate_sample.sh\'"
echo "OR simply run tox genconfig"
echo " \'tox -egenconfig\'"
exit 1
# generate_sample.sh may return 0 even when it fails.
if [ $CHECKONLY -eq 1 ]; then
# Check whether something was generated.
if [ ! -s ${TEMPDIR}/${CFGFILE_NAME} ]; then
echo "Failed to generate ${CFGFILE_NAME}."
exit 1
fi
else
if [ -e etc/${PROJECT_NAME}/${CFGFILE_NAME} ]; then
CFGFILE=etc/${PROJECT_NAME}/${CFGFILE_NAME}
elif [ -e etc/${CFGFILE_NAME} ]; then
CFGFILE=etc/${CFGFILE_NAME}
else
echo "${0##*/}: can not find config file"
exit 1
fi
if ! diff -u ${TEMPDIR}/${CFGFILE_NAME} ${CFGFILE}
then
echo "${0##*/}: ${PROJECT_NAME}.conf.sample is not up to date."
echo "${0##*/}: Please run ${0%%${0##*/}}generate_sample.sh from within a VENV."
echo " \'source .venv/bin/activate; generate_sample.sh\'"
echo "OR simply run tox genconfig"
echo " \'tox -egenconfig\'"
exit 1
fi
fi

View File

@ -111,6 +111,7 @@ commands =
flake8 {posargs} . cinder/common
# Check that .po and .pot files are valid:
bash -c "find cinder -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null"
{toxinidir}/tools/config/check_uptodate.sh --checkonly
[testenv:pylint]
deps = -r{toxinidir}/requirements.txt