aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-10-14 19:44:51 +0000
committerGerrit Code Review <review@openstack.org>2014-10-14 19:44:51 +0000
commitec5a16dcecce315b2a3f546d19589e817a526caf (patch)
treebfeb40342cbd943f90b18a3e99caa8475ed84f6c
parent358e99668282127e2aeed0b76f5714ce043c1c4b (diff)
parentbfbf1b8c9b3a0abba86474aeb72b950142723d73 (diff)
downloadkolla-ec5a16dcecce315b2a3f546d19589e817a526caf.tar.gz
kolla-ec5a16dcecce315b2a3f546d19589e817a526caf.zip
Merge "add better validation checks (part 1)"
-rwxr-xr-xtools/pre-commit-hook45
-rwxr-xr-xtools/validate-all-json.sh9
-rwxr-xr-xtools/validate-all-yaml.sh9
-rwxr-xr-xtools/validate-json.py33
-rwxr-xr-xtools/validate-json.sh35
-rwxr-xr-xtools/validate-yaml.py33
6 files changed, 131 insertions, 33 deletions
diff --git a/tools/pre-commit-hook b/tools/pre-commit-hook
new file mode 100755
index 000000000..699cb978e
--- /dev/null
+++ b/tools/pre-commit-hook
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+TOPLEVEL=$(git rev-parse --show-toplevel)
+RES=0
+
+cd $TOPLEVEL
+
+if [ "$1" == "--install" ]; then
+ ln -sf ../../tools/pre-commit-hook .git/hooks/pre-commit
+ exit
+fi
+
+tmpdir=$(mktemp -d precommit.XXXXXX) || exit 1
+trap "rm -rf $TOPLEVEL/$tmpdir" 0
+
+git diff --cached --name-only --diff-filter=ACMR |
+ xargs git checkout-index --prefix=$tmpdir/ --
+
+cd $tmpdir
+
+echo "=== starting pre-commit checks ==="
+
+echo "Checking the following files:"
+
+find . -type f
+
+echo "=== bashate checks ==="
+
+find . -type f -print0 |
+ xargs -0 --no-run-if-empty egrep -lZ '^#!/bin/(ba)?sh' |
+ xargs -0 bashate || RES=1
+
+echo "=== yaml checks ==="
+
+find . -name '*.yaml' -print0 |
+ xargs -0 --no-run-if-empty python ${TOPLEVEL}/tools/try-parse-yaml.py
+
+echo "=== json checks ==="
+
+find . -name '*.json' -print0 |
+ xargs -0 -n1 --no-run-if-empty python -mjson.tool \
+ || RES=1
+
+exit $RES
+
diff --git a/tools/validate-all-json.sh b/tools/validate-all-json.sh
new file mode 100755
index 000000000..ce85fadd6
--- /dev/null
+++ b/tools/validate-all-json.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TOPLEVEL=$(git rev-parse --show-toplevel)
+
+cd $TOPLEVEL
+
+git ls-files -z '*.json' |
+ xargs -0 python tools/validate-json.py || exit 1
+
diff --git a/tools/validate-all-yaml.sh b/tools/validate-all-yaml.sh
new file mode 100755
index 000000000..6a16d9a98
--- /dev/null
+++ b/tools/validate-all-yaml.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TOPLEVEL=$(git rev-parse --show-toplevel)
+
+cd $TOPLEVEL
+
+git ls-files -z '*.yaml' |
+ xargs -0 python tools/validate-yaml.py || exit 1
+
diff --git a/tools/validate-json.py b/tools/validate-json.py
new file mode 100755
index 000000000..d7e1cd873
--- /dev/null
+++ b/tools/validate-json.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+
+import os
+import sys
+import argparse
+import json
+import logging
+
+def parse_args():
+ p = argparse.ArgumentParser()
+ p.add_argument('input', nargs='*')
+ return p.parse_args()
+
+def main():
+ args = parse_args()
+ logging.basicConfig()
+ res = 0
+
+ for filename in args.input:
+ with open(filename) as fd:
+ try:
+ data = json.load(fd)
+ except ValueError as error:
+ res = 1
+ logging.error('%s failed validation: %s',
+ filename, error)
+
+ sys.exit(res)
+
+if __name__ == '__main__':
+ main()
+
+
diff --git a/tools/validate-json.sh b/tools/validate-json.sh
index 35338e8d9..296ef781c 100755
--- a/tools/validate-json.sh
+++ b/tools/validate-json.sh
@@ -1,34 +1,3 @@
-#!/bin/bash
-set -e
-ret=0
+#!/bin/sh
-# For MacOSX users the freebsd's mktemp by default behave diferently,
-# installing the coreutils from brew would give you this but that would be
-# renamed to gmktemp to don't conflict with the stand mktemp, so let just use
-# that if available.
-if type -p gmktemp &>/dev/null; then
- TMPFILE=$(gmktemp)
-else
- TMPFILE=$(mktemp)
-fi
-
-function clean {
- rm -f ${TMPFILE}
-}
-trap clean EXIT
-
-linter=jsonlint
-type -p jsonlint &>/dev/null || linter=python
-
-for f in $(find docker -type f -name '*.json');do
- if [[ ${linter} == jsonlint ]];then
- jsonlint -s ${f} >${TMPFILE}
- egrep -q 'has errors$' ${TMPFILE} && { cat ${TMPFILE}; ret=1 ;}
- else
- python -m json.tool ${f} &>/dev/null || { echo "$f: has json errors"; ret=1; }
- fi
-done
-
-cat ${TMPFILE}
-
-exit ${ret}
+true
diff --git a/tools/validate-yaml.py b/tools/validate-yaml.py
new file mode 100755
index 000000000..9799a7aba
--- /dev/null
+++ b/tools/validate-yaml.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+
+import os
+import sys
+import argparse
+import yaml
+import logging
+
+def parse_args():
+ p = argparse.ArgumentParser()
+ p.add_argument('input', nargs='*')
+ return p.parse_args()
+
+def main():
+ args = parse_args()
+ logging.basicConfig()
+ res = 0
+
+ for filename in args.input:
+ with open(filename) as fd:
+ try:
+ data = yaml.load(fd)
+ except yaml.error.YAMLError as error:
+ res = 1
+ logging.error('%s failed validation: %s',
+ filename, error)
+
+ sys.exit(res)
+
+if __name__ == '__main__':
+ main()
+
+