From 0c2bef08030f6b950e6d6ff65f8db3764d23490f Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Fri, 31 Aug 2012 15:15:39 -0700 Subject: [PATCH] Add test to determine whether XML output has changed. Change-Id: I5e0b76e195a1b412d180484ce1ddd3e9159d7779 Reviewed-on: https://review.openstack.org/12286 Approved: James E. Blair Reviewed-by: James E. Blair Tested-by: Jenkins --- .gitignore | 1 + tools/pip-requires | 2 ++ tools/run-compare-xml.sh | 56 ++++++++++++++++++++++++++++++++++++++++ tox.ini | 8 ++++++ 4 files changed, 67 insertions(+) create mode 100644 tools/pip-requires create mode 100755 tools/run-compare-xml.sh diff --git a/.gitignore b/.gitignore index 456cf3ada..f16ed4806 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.egg-info config .tox +.test diff --git a/tools/pip-requires b/tools/pip-requires new file mode 100644 index 000000000..01b1aa4d4 --- /dev/null +++ b/tools/pip-requires @@ -0,0 +1,2 @@ +PyYAML +python-jenkins diff --git a/tools/run-compare-xml.sh b/tools/run-compare-xml.sh new file mode 100755 index 000000000..1504376b5 --- /dev/null +++ b/tools/run-compare-xml.sh @@ -0,0 +1,56 @@ +#!/bin/bash -e + +# Copyright (c) 2012, AT&T Labs, Yun Mao +# All Rights Reserved. +# Copyright 2012 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +rm -fr .test +mkdir -p .test/old +mkdir -p .test/new +cd .test +git clone https://review.openstack.org/p/openstack/openstack-ci-puppet --depth 1 +cd .. +GITHEAD=`git rev-parse HEAD` + +# First generate output from HEAD~1 +git checkout HEAD~1 +tox -e compare-xml-old + +# Then use that as a reference to compare against HEAD +git checkout $GITHEAD +tox -e compare-xml-new + +CHANGED=0 +for x in `(cd .test/old && find -type f)` +do + if ! diff -u .test/old/$x .test/new/$x >/dev/null 2>&1 + then + CHANGED=1 + echo "============================================================" + echo $x + echo "------------------------------------------------------------" + fi + diff -u .test/old/$x .test/new/$x +done + +echo +echo "You are in detached HEAD mode. If you are a developer" +echo "and not very familiar with git, you might want to do" +echo "'git checkout branch-name' to go back to your branch." + +if [ "$CHANGED" -eq "1" ]; then + exit 1 +fi +exit 0 diff --git a/tox.ini b/tox.ini index db3b92e97..08b6a271e 100644 --- a/tox.ini +++ b/tox.ini @@ -12,5 +12,13 @@ commands = pep8 --repeat --show-source --exclude=.venv,.tox,dist,doc,build . deps = pyflakes commands = pyflakes jenkins_jobs jenkins-jobs setup.py +[testenv:compare-xml-old] +deps = -r{toxinidir}/tools/pip-requires +commands = ./jenkins-jobs test -o .test/old/ .test/openstack-ci-puppet/modules/openstack_project/files/jenkins_job_builder/config/ + +[testenv:compare-xml-new] +deps = -r{toxinidir}/tools/pip-requires +commands = ./jenkins-jobs test -o .test/new/ .test/openstack-ci-puppet/modules/openstack_project/files/jenkins_job_builder/config/ + [testenv:venv] commands = {posargs}