fixed the testing of the sdist package for pypi
[smewt:guessit.git] / fabfile.py
1 #!/usr/bin/env python
2
3 import sys
4 import re
5 from fabric.api import *
6
7 def doctests():
8     """Run the doctests found in GuessIt classes."""
9     local('nosetests --with-doctest -vv guessit')
10
11 def test_movie():
12     """Run the unittests for movies."""
13     local('PYTHONPATH=. python test/test_movie.py')
14
15 def test_episode():
16     """Run the unittests for episodes."""
17     local('PYTHONPATH=. python test/test_episode.py')
18
19 def test_autodetect():
20     """Run the unittests for autodetected files."""
21     local('PYTHONPATH=. python test/test_autodetect.py')
22
23 def unittests():
24     """Run all the unittests."""
25     test_movie()
26     test_episode()
27     test_autodetect()
28
29 def tests():
30     """Run both the doctests and the unittests."""
31     doctests()
32     unittests()
33
34
35 def clean_pyc():
36     """Removes all the *.pyc files found in the repository."""
37     local('find . -iname "*.pyc" -delete')
38
39
40 def pylint():
41     """Runs pylint on GuessIt's source code. Only show problems, no report."""
42     local('pylint --reports=n --include-ids=y --disable=C,I,W0703 guessit')
43
44 def pylint_report():
45     """Runs pylint on GuessIt's source code, full report."""
46     local('pylint --include-ids=y --disable=C0103,C0111 guessit')
47
48 def open_file(filename):
49     """Open the given file using the OS's native programs."""
50     if sys.platform.startswith('linux'):
51         local('xdg-open "%s"' % filename)
52     elif sys.platform == 'darwin':
53         local('open "%s"' % filename)
54     else:
55         print 'Platform not supported:', sys.platform
56
57 def doc():
58     """Build the Sphinx documentation and open it in a web browser."""
59     with lcd('docs'):
60         local('make html')
61         open_file('_build/html/index.html')
62
63 def pypi_doc():
64     """Builds the main page that will be uploaded to PyPI and open it in a
65     web browser."""
66     local('python setup.py --long-description | rst2html.py > /tmp/guessit_pypi_doc.html')
67     open_file('/tmp/guessit_pypi_doc.html')
68
69
70 # Release management functions
71
72 def set_version(version):
73     """Set the version in the guessit/__init__.py file."""
74     initfile = open('guessit/__init__.py').read()
75     initfile = re.sub(r"__version__ = '\S*'",
76                       r"__version__ = '%s'" % version,
77                       initfile)
78     open('guessit/__init__.py', 'w').write(initfile)
79
80 def upload_pypi():
81     local('python setup.py register sdist upload')
82
83 def test_pypi_sdist():
84     d = '_tmp_pypi_guessit'
85     local('rm -fr dist %s' % d)
86     local('python setup.py sdist')
87     local('virtualenv %s' % d)
88     with lcd(d):
89         with prefix('source bin/activate'):
90             local('pip install ../dist/*')
91             local('pip install PyYaml') # to be able to run the tests
92             local('cp ../test/*.py ../test/*.yaml .')
93             local('python test_autodetect.py')
94             local('python test_movie.py')
95             local('python test_episode.py')
96     local('rm -fr %s' % d)