flask-base/manage.py
2018-03-31 18:26:40 +02:00

58 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python
from flask_script import Manager
from flask_migrate import MigrateCommand
from flaskbase import create_app, import_submodules
from flaskbase.extensions import db
app = create_app()
manager = Manager(app)
manager.add_command('db', MigrateCommand)
for m_name, m in import_submodules(app, 'commands'):
manager.add_command(m_name.replace('mod_', ''), m.manager)
@manager.command
def syncdb():
db.create_all()
try:
from flask.ext.zen import Test, ZenTest
from flask_script import Option
from coverage import coverage
class CoverageTest(Test):
def get_options(self):
return super(CoverageTest, self).get_options() + [
Option('-H', '--html', dest='html', default=None,
help='Save HTML report to directory'),
]
def run(self, html=None, *args, **kwargs):
cov = coverage(branch=True, source=['.'],
omit=['*/tests.py', 'tests.py', 'manage.py',
'flaskbase/settings/*', '*/admin.py'])
cov.start()
super(CoverageTest, self).run(*args, **kwargs)
cov.stop()
cov.save()
print
cov.report()
if html:
cov.html_report(directory=html)
print '\nHTML coverage report saved to', html
manager.add_command('test', Test())
manager.add_command('coverage', CoverageTest())
manager.add_command('zen', ZenTest())
except ImportError:
pass
if __name__ == '__main__':
manager.run()