From: Eric Harney Date: Tue, 18 Aug 2015 21:09:50 +0000 (-0400) Subject: Test whether sample config generation works X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=683dd65d418a4910b856b99c9378bb24a19c439c;p=openstack-build%2Fcinder-build.git 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 --- diff --git a/run_tests.sh b/run_tests.sh index 09e22e8f2..7d5a32448 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -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 } diff --git a/tools/config/check_uptodate.sh b/tools/config/check_uptodate.sh index cf51c8caf..89a4a3ec2 100755 --- a/tools/config/check_uptodate.sh +++ b/tools/config/check_uptodate.sh @@ -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 diff --git a/tox.ini b/tox.ini index dc91a71f5..d74dcc77c 100644 --- a/tox.ini +++ b/tox.ini @@ -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