@@ -6,9 +6,13 @@ language: python
6
6
cache : pip
7
7
before_cache :
8
8
- rm -f $HOME/.cache/pip/log/debug.log
9
- # place the slowest (instrumental and py2.6) first
9
+ # place the slowest (instrumental, mutation and py2.6) first
10
10
matrix :
11
11
include :
12
+ - python : 3.7
13
+ dist : xenial
14
+ sudo : true
15
+ env : MUTATION=yes
12
16
- python : 2.7
13
17
env : INSTRUMENTAL=yes
14
18
- python : 2.6
@@ -74,6 +78,13 @@ install:
74
78
travis_retry pip install -r build-requirements.txt;
75
79
fi
76
80
- if [[ $INSTRUMENTAL ]]; then travis_retry pip install instrumental; fi
81
+ # - if [[ $MUTATION ]]; then travis_retry pip install cosmic-ray; fi
82
+ # temporary, until https://github.com/sixty-north/cosmic-ray/pull/491 is merged
83
+ - if [[ $MUTATION ]]; then pushd $(mktemp -d); fi
84
+ - if [[ $MUTATION ]]; then git clone --branch sampling --depth 1 https://github.com/tomato42/cosmic-ray.git; fi
85
+ - if [[ $MUTATION ]]; then cd cosmic-ray; fi
86
+ - if [[ $MUTATION ]]; then python setup.py install; fi
87
+ - if [[ $MUTATION ]]; then popd; fi
77
88
- pip list
78
89
script :
79
90
- if [[ $TOX_ENV ]]; then tox -e $TOX_ENV; fi
@@ -101,6 +112,26 @@ script:
101
112
if [[ $INSTRUMENTAL && $TRAVIS_PULL_REQUEST != "false" ]]; then
102
113
instrumental -f .instrumental.cov -s | python diff-instrumental.py --read .diff-instrumental --fail-under 70 --max-difference -0.1
103
114
fi
115
+ # cosmic-ray (mutation testing) runs
116
+ - if [[ $MUTATION ]]; then cosmic-ray init cosmic-ray.toml session.sqlite; fi
117
+ - if [[ $MUTATION ]]; then cosmic-ray baseline --report session.sqlite; fi
118
+ - if [[ $MUTATION ]]; then cr-report --show-output session.baseline.sqlite; fi
119
+ - |
120
+ if [[ $MUTATION ]]; then
121
+ cosmic-ray exec session.sqlite &
122
+ COSMIC_PID=$!
123
+ # make sure that we output something every 10 minutes (otherwise travis will kill us)
124
+ while kill -s 0 $COSMIC_PID; do
125
+ sleep 300
126
+ cr-report session.sqlite | tail -n 3;
127
+ done &
128
+ REPORT_PID=$!
129
+ # kill exec after 25 minutes
130
+ (sleep $((60*25)); kill $COSMIC_PID) &
131
+ fi
132
+ - if [[ $MUTATION ]]; then wait $COSMIC_PID ; kill $REPORT_PID ; true; fi
133
+ - if [[ $MUTATION ]]; then cr-report --show-output session.sqlite | tail -n 40; fi
134
+ - if [[ $MUTATION ]]; then cr-rate --estimate --fail-over 25 --confidence 99.9 session.sqlite; fi
104
135
after_success :
105
- - if [[ -z $INSTRUMENTAL ]]; then coveralls; fi
136
+ - if [[ -z $INSTRUMENTAL && -z $MUTATION ]]; then coveralls; fi
106
137
0 commit comments