1 # -*- coding: utf-8 -*-
3 # gPodder - A media aggregator and podcast client
4 # Copyright (c) 2005-2013 Thomas Perl and the gPodder Team
6 # gPodder is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
11 # gPodder is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
21 # Run Doctests and Unittests for gPodder modules
22 # 2009-02-25 Thomas Perl <thp@gpodder.org>
30 # Unused here locally, but we import it to be able to give an early
31 # warning about this missing dependency in order to avoid bogus errors.
33 except ImportError, e
:
34 print >>sys
.stderr
, """
35 Error: Unit tests require the "minimock" module (python-minimock).
36 Please install it before running the unit tests.
40 # Main package and test package (for modules in main package)
42 test_package
= '.'.join((package
, 'test'))
44 suite
= unittest
.TestSuite()
48 # Modules (in gpodder) for which doctests exist
49 # ex: Doctests embedded in "gpodder.util", coverage reported for "gpodder.util"
50 doctest_modules
= ['util', 'jsonconfig']
52 for module
in doctest_modules
:
53 doctest_mod
= __import__('.'.join((package
, module
)), fromlist
=[module
])
55 suite
.addTest(doctest
.DocTestSuite(doctest_mod
))
56 coverage_modules
.append(doctest_mod
)
59 # Modules (in gpodder) for which unit tests (in gpodder.test) exist
60 # ex: Tests are in "gpodder.test.model", coverage reported for "gpodder.model"
61 test_modules
= ['model']
63 for module
in test_modules
:
64 test_mod
= __import__('.'.join((test_package
, module
)), fromlist
=[module
])
65 coverage_mod
= __import__('.'.join((package
, module
)), fromlist
=[module
])
67 suite
.addTest(unittest
.defaultTestLoader
.loadTestsFromModule(test_mod
))
68 coverage_modules
.append(coverage_mod
)
71 # If you want a HTML-based test report, install HTMLTestRunner from:
72 # http://tungwaiyip.info/software/HTMLTestRunner.html
74 REPORT_FILENAME
= 'test_report.html'
75 runner
= HTMLTestRunner
.HTMLTestRunner(stream
=open(REPORT_FILENAME
, 'w'))
77 HTML Test Report will be written to %s
80 runner
= unittest
.TextTestRunner(verbosity
=2)
87 if __name__
== '__main__':
88 if coverage
is not None:
92 result
= runner
.run(suite
)
94 if not result
.wasSuccessful():
97 if coverage
is not None:
99 coverage
.report(coverage_modules
)
102 print >>sys
.stderr
, """
103 No coverage reporting done (Python module "coverage" is missing)
104 Please install the python-coverage package to get coverage reporting.