|
|
|
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) |