Skip to content

Commit

Permalink
refactor CI to include QA validation
Browse files Browse the repository at this point in the history
  • Loading branch information
hvelarde committed Dec 14, 2012
1 parent 549ac4b commit 2ef07a0
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 7 deletions.
17 changes: 10 additions & 7 deletions .travis.yml
@@ -1,9 +1,12 @@
language: python
python: "2.7"
python: 2.7
env:
- TARGET=tests
- TARGET=quality-assurance
before_install:
- mkdir -p buildout-cache/eggs
- mkdir -p buildout-cache/downloads
install:
- python bootstrap.py -c travis.cfg
- bin/buildout -c travis.cfg -N -q -t 3
script: bin/test
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
install: make install
script: make $TARGET
notifications:
irc: irc.freenode.org#simplesconsultoria
56 changes: 56 additions & 0 deletions Makefile
@@ -0,0 +1,56 @@
# convenience Makefile to run tests and QA tools
# options: zc.buildout options
# src: source path
# minimum_coverage: minimun test coverage allowed
# pep8_ignores: ignore listed PEP 8 errors and warnings
# max_complexity: maximum McCabe complexity allowed
# css_ignores: skip file names matching find pattern (use ! -name PATTERN)
# js_ignores: skip file names matching find pattern (use ! -name PATTERN)

SHELL = /bin/sh

options = -N -q -t 3
src = src/collective/weather/
minimum_coverage = 98
pep8_ignores = E501
max_complexity = 12
css_ignores = ! -name jquery\*
js_ignores = ! -name jquery\*

ack-install:
sudo apt-get install ack-grep

nodejs-install:
sudo apt-add-repository ppa:chris-lea/node.js -y
sudo apt-get update 1>/dev/null
sudo apt-get install nodejs npm -y

csslint-install: nodejs-install
npm install csslint -g

jshint-install: nodejs-install
npm install jshint -g

python-validation:
@echo Validating Python files
bin/flake8 --ignore=$(pep8_ignores) --max-complexity=$(max_complexity) $(src)

css-validation: ack-install csslint-install
@echo Validating CSS files
find $(src) -type f -name *.css $(css_ignores) | xargs csslint | ack-grep --passthru error

js-validation: ack-install jshint-install
@echo Validating JavaScript files
find $(src) -type f -name *.js $(js_ignores) -exec jshint {} ';' | ack-grep --passthru error

quality-assurance: python-validation css-validation js-validation
@echo Quality assurance
./coverage.sh $(minimum_coverage)

install:
mkdir -p buildout-cache/downloads
python bootstrap.py -c travis.cfg
bin/buildout -c travis.cfg $(options)

tests:
bin/test
27 changes: 27 additions & 0 deletions coverage.sh
@@ -0,0 +1,27 @@
#! /bin/sh
# checks for report created with createzopecoverage and evaluate the result

# default minimum coverage is 80%
DEFAULT=80
REPORT="coverage/reports/all.html"

if [ "$1" -ge 0 ] && [ "$1" -le 100 ]; then
MINIMUM=$1
else
echo "Invalid value for minimum coverage; using default: $DEFAULT%"
MINIMUM=$DEFAULT
fi

if [ ! -f "$REPORT" ]; then
bin/createzopecoverage 1>/dev/null
fi

# find first percentage value in file (module test coverage) and return it
COVERAGE=`grep "[0-9]\{1,3\}[%]" ${REPORT} -m 1 -o | grep "[0-9]\{1,3\}" -o`

if [ $COVERAGE -lt $MINIMUM ]; then
echo "Insufficient test coverage: $COVERAGE% (minimum acceptable is $MINIMUM%)"
exit 1
else
exit 0
fi

0 comments on commit 2ef07a0

Please sign in to comment.