@@ -6,9 +6,13 @@ language: python
66cache : pip
77before_cache :
88 - 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
1010matrix :
1111 include :
12+ - python : 3.7
13+ dist : xenial
14+ sudo : true
15+ env : MUTATION=yes
1216 - python : 2.7
1317 env : INSTRUMENTAL=yes
1418 - python : 2.6
@@ -74,6 +78,13 @@ install:
7478 travis_retry pip install -r build-requirements.txt;
7579 fi
7680 - 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+ - pushd $(mktemp -d)
84+ - git clone --branch sampling --depth 1 https://github.com/tomato42/cosmic-ray.git
85+ - cd cosmic-ray
86+ - python setup.py install
87+ - popd
7788 - pip list
7889script :
7990 - if [[ $TOX_ENV ]]; then tox -e $TOX_ENV; fi
@@ -101,6 +112,25 @@ script:
101112 if [[ $INSTRUMENTAL && $TRAVIS_PULL_REQUEST != "false" ]]; then
102113 instrumental -f .instrumental.cov -s | python diff-instrumental.py --read .diff-instrumental --fail-under 70 --max-difference -0.1
103114 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 20 minutes
130+ (sleep $((60*20)); kill $COSMIC_PID) &
131+ fi
132+ - if [[ $MUTATION ]]; then wait $COSMIC_PID ; kill $REPORT_PID ; true; fi
133+ - if [[ $MUTATION ]]; then cr-rate --estimate --fail-over 25 --confidence 99.9 session.sqlite; fi
104134after_success :
105- - if [[ -z $INSTRUMENTAL ]]; then coveralls; fi
135+ - if [[ -z $INSTRUMENTAL && -z $MUTATION ]]; then coveralls; fi
106136
0 commit comments