-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor CI to include QA validation
- Loading branch information
Showing
3 changed files
with
93 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |