Browse code

add unit tests for GIT* definitions

This adds unit tests for all the GIT* definitions, ensuring that for
libraries we think should be defined, they are. It exposed a bug in
glance_store definitions in the process.

The GITDIR definition for python-openstackclient is moved to stackrc
for testability.

Change-Id: Ibd9ab665f0362a84f4f7e80e80da56a4737f584e

Sean Dague authored on 2014/11/20 05:19:51
Showing 4 changed files
... ...
@@ -28,7 +28,7 @@ set +o xtrace
28 28
 
29 29
 # Set up default directories
30 30
 GITDIR["python-glanceclient"]=$DEST/python-glanceclient
31
-GIRDIR["glance_store"]=$DEST/glance_store
31
+GITDIR["glance_store"]=$DEST/glance_store
32 32
 
33 33
 GLANCE_DIR=$DEST/glance
34 34
 GLANCE_CACHE_DIR=${GLANCE_CACHE_DIR:=$DATA_DIR/glance/cache}
... ...
@@ -575,9 +575,6 @@ if [[ -d $TOP_DIR/extras.d ]]; then
575 575
     done
576 576
 fi
577 577
 
578
-# Set the destination directories for other OpenStack projects
579
-GITDIR["python-openstackclient"]=$DEST/python-openstackclient
580
-
581 578
 # Interactive Configuration
582 579
 # -------------------------
583 580
 
... ...
@@ -273,6 +273,8 @@ GITBRANCH["python-troveclient"]=${TROVECLIENT_BRANCH:-master}
273 273
 # consolidated openstack python client
274 274
 GITREPO["python-openstackclient"]=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
275 275
 GITBRANCH["python-openstackclient"]=${OPENSTACKCLIENT_BRANCH:-master}
276
+# this doesn't exist in a lib file, so set it here
277
+GITDIR["python-openstackclient"]=$DEST/python-openstackclient
276 278
 
277 279
 ###################
278 280
 #
279 281
new file mode 100755
... ...
@@ -0,0 +1,96 @@
0
+#!/usr/bin/env bash
1
+#
2
+# Licensed under the Apache License, Version 2.0 (the "License");
3
+# you may not use this file except in compliance with the License.
4
+# You may obtain a copy of the License at
5
+#
6
+#    http://www.apache.org/licenses/LICENSE-2.0
7
+#
8
+# Unless required by applicable law or agreed to in writing, software
9
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11
+# License for the specific language governing permissions and limitations
12
+# under the License.
13
+
14
+
15
+TOP=$(cd $(dirname "$0")/.. && pwd)
16
+
17
+export TOP_DIR=$TOP
18
+
19
+# Import common functions
20
+source $TOP/functions
21
+source $TOP/stackrc
22
+source $TOP/lib/tls
23
+for i in $TOP/lib/*; do
24
+    if [[ -f $i ]]; then
25
+        source $i
26
+    fi
27
+done
28
+
29
+ALL_LIBS="python-novaclient oslo.config pbr oslo.context python-troveclient python-keystoneclient taskflow oslo.middleware pycadf python-glanceclient python-ironicclient tempest-lib oslo.messaging oslo.log cliff python-heatclient stevedore python-cinderclient glance_store oslo.concurrency oslo.db oslo.vmware keystonemiddleware oslo.serialization python-saharaclient django_openstack_auth python-openstackclient oslo.rootwrap oslo.i18n python-ceilometerclient oslo.utils python-swiftclient python-neutronclient"
30
+
31
+# Generate the above list with
32
+# echo ${!GITREPO[@]}
33
+
34
+function check_exists {
35
+    local thing=$1
36
+    local hash=$2
37
+    local key=$3
38
+    if [[ ! -z "$VERBOSE" ]]; then
39
+        echo "Checking for $hash[$key]"
40
+    fi
41
+    if [[ -z $thing ]]; then
42
+        echo "$hash[$key] does not exit!"
43
+        exit 1
44
+    else
45
+        if [[ ! -z "$VERBOSE" ]]; then
46
+            echo "$hash[$key] => $thing"
47
+        fi
48
+    fi
49
+}
50
+
51
+function test_all_libs_upto_date {
52
+    # this is all the magics
53
+    local found_libs=${!GITREPO[@]}
54
+    declare -A all_libs
55
+    for lib in $ALL_LIBS; do
56
+        all_libs[$lib]=1
57
+    done
58
+
59
+    for lib in $found_libs; do
60
+        if [[ -z ${all_libs[$lib]} ]]; then
61
+            echo "Library '$lib' not listed in unit tests, please add to ALL_LIBS"
62
+            exit 1
63
+        fi
64
+
65
+    done
66
+    echo "test_all_libs_upto_date PASSED"
67
+}
68
+
69
+function test_libs_exist {
70
+    local lib=""
71
+    for lib in $ALL_LIBS; do
72
+        check_exists "${GITREPO[$lib]}" "GITREPO" "$lib"
73
+        check_exists "${GITBRANCH[$lib]}" "GITBRANCH" "$lib"
74
+        check_exists "${GITDIR[$lib]}" "GITDIR" "$lib"
75
+    done
76
+
77
+    echo "test_libs_exist PASSED"
78
+}
79
+
80
+function test_branch_master {
81
+    for lib in $ALL_LIBS; do
82
+        if [[ ${GITBRANCH[$lib]} != "master" ]]; then
83
+            echo "GITBRANCH for $lib not master (${GITBRANCH[$lib]})"
84
+            exit 1
85
+        fi
86
+    done
87
+
88
+    echo "test_branch_master PASSED"
89
+}
90
+
91
+set -o errexit
92
+
93
+test_libs_exist
94
+test_branch_master
95
+test_all_libs_upto_date