]> git.notmuchmail.org Git - notmuch/blobdiff - devel/release-checks.sh
vim: rename internal notmuch_rb variables
[notmuch] / devel / release-checks.sh
index e1d19f20effa32b08425106fcb81ac1618db773b..d6410add85d057d00b145c259b86d562b3d49056 100755 (executable)
@@ -13,6 +13,8 @@ fi
 set -o posix
 set -o pipefail # bash feature
 
+readonly DEFAULT_IFS="$IFS" # Note: In this particular case quotes are needed.
+
 # Avoid locale-specific differences in output of executed commands
 LANG=C LC_ALL=C; export LANG LC_ALL
 
@@ -20,8 +22,10 @@ readonly PV_FILE='bindings/python/notmuch/version.py'
 
 # Using array here turned out to be unnecessarily complicated
 emsgs=''
+emsg_count=0
 append_emsg ()
 {
+       emsg_count=$((emsg_count + 1))
        emsgs="${emsgs:+$emsgs\n}  $1"
 }
 
@@ -53,12 +57,13 @@ fi < ./version
 
 readonly VERSION
 
+# In the rest of this file, tests collect list of errors to be fixed
+
 verfail ()
 {
        echo No.
-       echo "$@"
-       echo "Please follow the instructions in RELEASING to choose a version"
-       exit 1
+       append_emsg "$@"
+       append_emsg "  Please follow the instructions in RELEASING to choose a version"
 }
 
 echo -n "Checking that '$VERSION' is good with digits and periods... "
@@ -72,8 +77,38 @@ case $VERSION in
        *)      verfail "'$VERSION' is a single number" ;;
 esac
 
+_set_version_components ()
+{
+       VERSION_MAJOR=$1
+       VERSION_MINOR=$2
+       VERSION_MICRO=${3:-0} # set to 0 in case $3 is unset or "null" (string)
+}
 
-# In the rest of this file, tests collect list of errors to be fixed
+IFS=.
+_set_version_components $VERSION
+IFS=$DEFAULT_IFS
+
+echo -n "Checking that libnotmuch version macros match $VERSION... "
+NOTMUCH_MAJOR_VERSION=broken
+NOTMUCH_MINOR_VERSION=broken
+NOTMUCH_MICRO_VERSION=broken
+eval `awk 'NF == 3 && $1 == "#define" && $2 ~ /^NOTMUCH_[A-Z]+_VERSION$/ \
+       && $3 ~ /^[0-9]+$/ { print $2 "=" $3 }' lib/notmuch.h`
+
+check_version_component ()
+{
+       eval local v1=\$VERSION_$1
+       eval local v2=\$NOTMUCH_$1_VERSION
+       if [ $v1 != $v2 ]
+       then    append_emsg "NOTMUCH_$1_VERSION is defined as '$v2' in lib/notmuch.h instead of '$v1'"
+       fi
+}
+
+old_emsg_count=$emsg_count
+check_version_component MAJOR
+check_version_component MINOR
+check_version_component MICRO
+[ $old_emsg_count = $emsg_count ] && echo Yes. || echo No.
 
 echo -n "Checking that this is Debian package for notmuch... "
 read deb_notmuch deb_version rest < debian/changelog
@@ -105,6 +140,20 @@ else
        append_emsg "Version '$py_version' is not '$VERSION' in $PV_FILE"
 fi
 
+echo -n "Checking that NEWS header is tidy... "
+if [ "`exec sed 's/./=/g; 1q' NEWS`" = "`exec sed '1d; 2q' NEWS`" ]
+then
+       echo Yes.
+else
+       echo No.
+       if [ "`exec sed '1d; s/=//g; 2q' NEWS`" != '' ]
+       then
+               append_emsg "Line 2 in NEWS file is not all '=':s"
+       else
+               append_emsg "Line 2 in NEWS file does not have the same length as line 1"
+       fi
+fi
+
 echo -n "Checking that this is Notmuch NEWS... "
 read news_notmuch news_version news_date < NEWS
 if [ "$news_notmuch" = "Notmuch" ]