|
Line 0
Link Here
|
|
|
1 |
import helper |
| 2 |
import os |
| 3 |
import sys |
| 4 |
import shutil |
| 5 |
from hashlib import md5 |
| 6 |
from difflib import context_diff |
| 7 |
from distutils.dir_util import copy_tree |
| 8 |
from distutils.file_util import copy_file |
| 9 |
|
| 10 |
from pdb import set_trace as dbg |
| 11 |
|
| 12 |
SVN_PATH = 'SVN_REPO' |
| 13 |
DUMMY_MOD_DIR = 'management/univention-management-console-module-dummy' |
| 14 |
DUMMY_MOD_EXPECTED_PO_PATHS = [ |
| 15 |
'univention-ucs-translation-XX/XX/management/univention-management-console-module-dummy/umc/python/dummy/XX.po', |
| 16 |
'univention-ucs-translation-XX/XX/management/univention-management-console-module-dummy/umc/XX.po', |
| 17 |
'univention-ucs-translation-XX/XX/management/univention-management-console-module-dummy/umc/js/XX.po' |
| 18 |
] |
| 19 |
|
| 20 |
MAKEFILE_EXPECTED_DIFF = [ |
| 21 |
'+ \t$(DESTDIR)/usr/share/locale/XX/LC_MESSAGES/univention-management-console-module-dummy.mo \\\n', |
| 22 |
'+ \t$(DESTDIR)/usr/share/univention-management-console-frontend/js/umc/modules/i18n/XX/dummy.json \\\n', |
| 23 |
'+ \t$(DESTDIR)/usr/share/univention-management-console/i18n/XX/dummy.mo \\\n', |
| 24 |
'+ $(DESTDIR)/usr/share/locale/XX/LC_MESSAGES/univention-management-console-module-dummy.mo: XX/management/univention-management-console-module-dummy/umc/python/dummy/XX.po\n', |
| 25 |
'+ $(DESTDIR)/usr/share/univention-management-console-frontend/js/umc/modules/i18n/XX/dummy.json: XX/management/univention-management-console-module-dummy/umc/js/XX.po\n', |
| 26 |
'+ $(DESTDIR)/usr/share/univention-management-console/i18n/XX/dummy.mo: XX/management/univention-management-console-module-dummy/umc/XX.po\n' |
| 27 |
] |
| 28 |
|
| 29 |
TRANSLATION_PKG_NAME = 'univention-ucs-translation-XX' |
| 30 |
if __name__ == '__main__': |
| 31 |
# TODO: run whole test in tmp dir |
| 32 |
try: |
| 33 |
shutil.rmtree(SVN_PATH+'/management/univention-management-console-module-dummy') |
| 34 |
shutil.rmtree(TRANSLATION_PKG_NAME) |
| 35 |
except Exception: |
| 36 |
pass |
| 37 |
|
| 38 |
try: |
| 39 |
helper.call('svn', 'checkout', 'http://forge.univention.org/svn/dev/branches/ucs-4.1/ucs-4.1-1', SVN_PATH) |
| 40 |
helper.call('univention-ucs-translation-build-package', '--source=' + SVN_PATH, '--languagecode=XX', '--locale=fr_FR.UTF-8:UTF-8', '--languagename=TEST0') |
| 41 |
helper.call('univention-ucs-translation-fakemessage', TRANSLATION_PKG_NAME) |
| 42 |
except helper.InvalidCommandError: |
| 43 |
print('Error: Tried to launch invalid command. Exiting.') |
| 44 |
sys.exit(1) |
| 45 |
copy_file(os.path.join(TRANSLATION_PKG_NAME, 'all_targets.mk'), 'all_targets.mk.pre_merge') |
| 46 |
|
| 47 |
# Add dummy module with new translations |
| 48 |
copy_tree('./dummy_module', SVN_PATH) |
| 49 |
helper.call('univention-ucs-translation-merge', 'XX', SVN_PATH, TRANSLATION_PKG_NAME) |
| 50 |
helper.call('univention-ucs-translation-fakemessage', TRANSLATION_PKG_NAME) |
| 51 |
|
| 52 |
translation_tree_path = os.path.join(TRANSLATION_PKG_NAME, 'XX', DUMMY_MOD_DIR) |
| 53 |
new_po_paths = helper.get_matching_file_paths(translation_tree_path, '*.po') |
| 54 |
if not set(new_po_paths) == set(DUMMY_MOD_EXPECTED_PO_PATHS): |
| 55 |
print('Test: Failed') |
| 56 |
sys.exit(1) |
| 57 |
with open('all_targets.mk.pre_merge', 'r') as pre, open(os.path.join(TRANSLATION_PKG_NAME, 'all_targets.mk')) as after: |
| 58 |
diff = [line for line in context_diff(pre.readlines(), after.readlines()) if line.startswith('+ ')] |
| 59 |
|
| 60 |
if set(diff) != set(MAKEFILE_EXPECTED_DIFF): |
| 61 |
dbg() |
| 62 |
print('Test: Failed. Diff didn\'t yield expected result.') |
| 63 |
print(diff) |
| 64 |
sys.exit(1) |
| 65 |
|
| 66 |
shutil.rmtree(SVN_PATH+'/management/univention-management-console-module-dummy') |
| 67 |
helper.call('univention-ucs-translation-merge', 'XX', SVN_PATH, TRANSLATION_PKG_NAME) |
| 68 |
|
| 69 |
# Files obsoleted upstream detected? |
| 70 |
new_po_paths = helper.get_matching_file_paths(translation_tree_path, '*.obsolete') |
| 71 |
expected_obsoleted_po_paths = ['{}.obsolete'.format(path) for path in DUMMY_MOD_EXPECTED_PO_PATHS] |
| 72 |
if set(new_po_paths) != set(expected_obsoleted_po_paths): |
| 73 |
print('Test: Failed. Merge didn\'t detect obsoleted po files.') |
| 74 |
#sys.exit(1) |
| 75 |
|
| 76 |
# Makefile should ne the same as before adding the dummy module |
| 77 |
with open('all_targets.mk.pre_merge', 'rb') as pre_change, open(os.path.join(TRANSLATION_PKG_NAME, 'all_targets.mk'), 'rb') as after: |
| 78 |
if md5(pre_change.read()).hexdigest() != md5(after.read()).hexdigest(): |
| 79 |
dbg() |
| 80 |
print('Test: Failed! Makefile was changed.') |
| 81 |
sys.exit(1) |