From: Eric Harney <eharney@redhat.com>
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