Skip to content

Commit 564d361

Browse files
jsmnbomtsnoam
authored andcommitted
Add folding to travis script section (python-telegram-bot#686)
1 parent b4b0eb4 commit 564d361

File tree

3 files changed

+95
-3
lines changed

3 files changed

+95
-3
lines changed

.travis.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@ install:
2929
- if [[ $TRAVIS_PYTHON_VERSION != 'pypy'* ]]; then pip install ujson; fi
3030

3131
script:
32-
- nosetests -v --with-flaky --no-flaky-report --with-coverage --cover-package=telegram/ tests
33-
- if [[ $TRAVIS_PYTHON_VERSION == 3.5 ]]; then pre-commit run --all-files; fi
34-
- python ./setup.py bdist_dumb
32+
- python travis.py
3533

3634
after_success:
3735
coveralls

requirements-dev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ yapf
77
pre-commit
88
pre-commit-hooks
99
beautifulsoup4
10+
rednose

travis.py

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
from __future__ import print_function
2+
3+
import subprocess
4+
import sys
5+
from platform import python_implementation
6+
import inspect
7+
8+
import nose
9+
from nose.config import Config
10+
from nose.plugins import Plugin, DefaultPluginManager
11+
from nose.plugins.cover import Coverage
12+
13+
import tests
14+
15+
16+
class CustomCoverage(Coverage):
17+
enabled = True
18+
name = 'coverage'
19+
score = 201 # One higher than original package
20+
21+
def report(self, stream):
22+
fold('coverage', 'Coverage report', stream=stream)
23+
super(CustomCoverage, self).report(stream)
24+
fold('coverage', stream=stream)
25+
26+
27+
class FoldPlugin(Plugin):
28+
enabled = True
29+
name = 'travis-fold'
30+
score = 100
31+
32+
def setOutputStream(self, stream):
33+
self.stream = stream
34+
35+
def startContext(self, context):
36+
if inspect.ismodule(context) and context != tests:
37+
fold(context.__name__, context.__name__, stream=self.stream)
38+
39+
def stopContext(self, context):
40+
if inspect.ismodule(context) and context != tests:
41+
fold(context.__name__, stream=self.stream)
42+
43+
folds = set()
44+
45+
46+
def fold(foldname, comment=None, stream=sys.stdout):
47+
if foldname in folds:
48+
folds.remove(foldname)
49+
print('\ntravis_fold:end:{}'.format(foldname), file=stream, end='')
50+
else:
51+
folds.add(foldname)
52+
print('travis_fold:start:{}'.format(foldname), file=stream, end='')
53+
54+
if comment:
55+
print('\n{}'.format(comment), file=stream)
56+
else:
57+
print('', file=stream)
58+
59+
60+
def main():
61+
print('Starting...')
62+
fold('tests', 'Running tests...')
63+
config = Config(verbosity=2, plugins=DefaultPluginManager(), env={'NOSE_REDNOSE': '1'})
64+
tests = nose.run(argv=['--with-flaky', '--no-flaky-report',
65+
'--with-coverage', '--cover-package=telegram/',
66+
'--with-travis-fold',
67+
'tests'],
68+
addplugins=[FoldPlugin(), CustomCoverage()],
69+
config=config)
70+
print('\n' * 2)
71+
if tests:
72+
fold('tests')
73+
74+
# Only run pre-commit hooks once
75+
pre_commit = True
76+
if sys.version_info[:2] == (3, 6) and python_implementation() == 'CPython':
77+
fold('pre-commit', 'Running pre-commits')
78+
# TODO: Only run pre-commit hooks on changed files
79+
# Using something like git diff-tree and $TRAVIS_COMMIT_RANGE
80+
pre_commit = subprocess.call(['pre-commit', 'run', '--all-files']) == 0
81+
if pre_commit:
82+
fold('pre-commit')
83+
84+
fold('bdist_dumb', 'Testing build...')
85+
# run_setup('setup.py', ['bdist_dumb']) # Makes us unable to fetch exit code
86+
bdist_dumb = subprocess.call(['python', 'setup.py', 'bdist_dumb']) == 0
87+
if bdist_dumb:
88+
fold('bdist_dumb')
89+
90+
sys.exit(0 if all((tests, pre_commit, bdist_dumb)) else 1)
91+
92+
if __name__ == '__main__':
93+
main()

0 commit comments

Comments
 (0)