123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import subprocess
- import os
- from flask import current_app
- from babel.support import Translations, NullTranslations
- from flaskbb.utils.translations import FlaskBBDomain
- from flaskbb.extensions import plugin_manager
- def _remove_compiled_translations():
- translations_folder = os.path.join(current_app.root_path, "translations")
- # walks through the translations folder and deletes all files
- # ending with .mo
- for root, dirs, files in os.walk(translations_folder):
- for name in files:
- if name.endswith(".mo"):
- os.unlink(os.path.join(root, name))
- def _compile_translations():
- PLUGINS_FOLDER = os.path.join(current_app.root_path, "plugins")
- translations_folder = os.path.join(current_app.root_path, "translations")
- subprocess.call(["pybabel", "compile", "-d", translations_folder])
- for plugin in plugin_manager.all_plugins:
- plugin_folder = os.path.join(PLUGINS_FOLDER, plugin)
- translations_folder = os.path.join(plugin_folder, "translations")
- subprocess.call(["pybabel", "compile", "-d", translations_folder])
- def test_flaskbbdomain_translations(default_settings):
- domain = FlaskBBDomain(current_app)
- with current_app.test_request_context():
- assert domain.get_translations_cache() == {}
- # just to be on the safe side that there are really no compiled
- # translations available
- _remove_compiled_translations()
- # no compiled translations are available
- assert isinstance(domain.get_translations(), NullTranslations)
- # lets compile them and test again
- _compile_translations()
- # now there should be translations :)
- assert isinstance(domain.get_translations(), Translations)
|