-
Notifications
You must be signed in to change notification settings - Fork 4
/
run_tests.sh
executable file
·96 lines (83 loc) · 2.33 KB
/
run_tests.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/bash -e
help(){
echo "Usage: $0 [OPTION]..."
echo "Run yamlpal's test suite(s) or some convenience commands"
echo " -h, --help Show this help output"
echo " -p, --pep8 Run pep8 checks"
echo " -l, --lint Run pylint checks"
echo " -s, --stats Show some project stats"
echo " --no-coverage Don't make a unit test coverage report"
echo ""
exit 0;
}
run_pep8_check(){
# FLAKE 8
# H307: like imports should be grouped together
# H405: multi line docstring summary not separated with an empty line
# H803: git title must end with a period
# H904: Wrap long lines in parentheses instead of a backslash
# H802: git commit title should be under 50 chars
# H701: empty localization string
FLAKE8_IGNORE="H307,H405,H803,H904,H802,H701"
# exclude settings files and virtualenvs
FLAKE8_EXCLUDE="*settings.py,*.venv/*.py"
echo "Running flake8..."
flake8 --ignore=$FLAKE8_IGNORE --max-line-length=120 --exclude=$FLAKE8_EXCLUDE yamlpal
}
run_unit_tests(){
OMIT="/usr/*,*venv*,*travis*"
if [ -n "$testargs" ]; then
# pytest -s => show std output (i.e print statements)
coverage run --omit=$OMIT -m pytest -s "$testargs"
else
coverage run --omit=$OMIT -m pytest -s yamlpal
fi
TEST_RESULT=$?
if [ $include_coverage -eq 1 ]; then
COVERAGE_REPORT=$(coverage report -m)
echo "$COVERAGE_REPORT"
fi
if [ $TEST_RESULT -gt 0 ]; then
exit $TEST_RESULT;
fi
}
run_stats(){
echo "*** Code ***"
radon raw -s yamlpal | tail -n 6
}
clean(){
set +e
find yamlpal -type d -name "__pycache__" -exec rm -rf {} \; 2> /dev/null
set -e
}
# default behavior
just_pep8=0
just_lint=0
just_stats=0
just_clean=0
include_coverage=1
testargs=""
while [ "$#" -gt 0 ]; do
case "$1" in
-h|--help) shift; help;;
-c|--clean) shift; just_clean=1;;
-p|--pep8) shift; just_pep8=1;;
-l|--lint) shift; just_lint=1;;
-s|--stats) shift; just_stats=1;;
--no-coverage)shift; include_coverage=0;;
*) testargs="$1"; shift;
esac
done
if [ $just_pep8 -eq 1 ]; then
run_pep8_check
exit $?
fi
if [ $just_stats -eq 1 ]; then
run_stats
exit $?
fi
if [ $just_clean -eq 1 ]; then
clean
exit $?
fi
run_unit_tests || exit