0s autopkgtest [13:46:09]: starting date and time: 2024-06-08 13:46:09+0000 0s autopkgtest [13:46:09]: git checkout: 433ed4cb Merge branch 'skia/nova_flock' into 'ubuntu/5.34+prod' 0s autopkgtest [13:46:09]: host juju-7f2275-prod-proposed-migration-environment-3; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.d2s06ows/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:pytest,src:astropy --apt-upgrade translate-toolkit --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=pytest/8.2.2-1ubuntu1 astropy/6.0.1-4' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-3@bos03-arm64-20.secgroup --name adt-oracular-arm64-translate-toolkit-20240608-134609-juju-7f2275-prod-proposed-migration-environment-3-fdf2528c-7838-4ead-871e-336d19df6e63 --image adt/ubuntu-oracular-arm64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-3 --net-id=net_prod-proposed-migration -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 122s autopkgtest [13:48:11]: testbed dpkg architecture: arm64 123s autopkgtest [13:48:12]: testbed apt version: 2.9.3 123s autopkgtest [13:48:12]: @@@@@@@@@@@@@@@@@@@@ test bed setup 125s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 126s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.2 kB] 126s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 126s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [1680 B] 126s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [338 kB] 127s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main arm64 Packages [67.9 kB] 127s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted arm64 Packages [31.8 kB] 127s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe arm64 Packages [305 kB] 127s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse arm64 Packages [9192 B] 127s Fetched 916 kB in 3s (292 kB/s) 127s Reading package lists... 132s Reading package lists... 132s Building dependency tree... 132s Reading state information... 133s Calculating upgrade... 133s The following packages will be upgraded: 133s bash 134s 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 134s Need to get 781 kB of archives. 134s After this operation, 0 B of additional disk space will be used. 134s Get:1 http://ftpmaster.internal/ubuntu oracular/main arm64 bash arm64 5.2.21-2.1ubuntu1 [781 kB] 135s Fetched 781 kB in 1s (803 kB/s) 136s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78200 files and directories currently installed.) 136s Preparing to unpack .../bash_5.2.21-2.1ubuntu1_arm64.deb ... 136s Unpacking bash (5.2.21-2.1ubuntu1) over (5.2.21-2ubuntu5) ... 136s Setting up bash (5.2.21-2.1ubuntu1) ... 136s update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode 136s Processing triggers for debianutils (5.18) ... 136s Processing triggers for install-info (7.1-3build2) ... 136s Processing triggers for man-db (2.12.1-1) ... 139s Reading package lists... 139s Building dependency tree... 139s Reading state information... 140s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 142s Hit:1 http://ftpmaster.internal/ubuntu oracular InRelease 142s Hit:2 http://ftpmaster.internal/ubuntu oracular-updates InRelease 142s Hit:3 http://ftpmaster.internal/ubuntu oracular-security InRelease 142s Hit:4 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 146s Reading package lists... 146s Reading package lists... 146s Building dependency tree... 146s Reading state information... 147s Calculating upgrade... 147s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 147s Reading package lists... 148s Building dependency tree... 148s Reading state information... 148s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 153s autopkgtest [13:48:42]: testbed running kernel: Linux 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 02:32:42 UTC 2024 154s autopkgtest [13:48:43]: @@@@@@@@@@@@@@@@@@@@ apt-source translate-toolkit 161s Get:1 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (dsc) [3172 B] 161s Get:2 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (tar) [1203 kB] 161s Get:3 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (diff) [24.4 kB] 162s gpgv: Signature made Wed Apr 10 14:04:46 2024 UTC 162s gpgv: using RSA key A62D2CFBD50B9B5BF360D54B159EB5C4EFC8774C 162s gpgv: Can't check signature: No public key 162s dpkg-source: warning: cannot verify inline signature for ./translate-toolkit_3.12.2-1ubuntu1.dsc: no acceptable signature found 162s autopkgtest [13:48:51]: testing package translate-toolkit version 3.12.2-1ubuntu1 163s autopkgtest [13:48:52]: build not needed 163s autopkgtest [13:48:52]: test translate-toolkit: preparing testbed 165s Reading package lists... 165s Building dependency tree... 165s Reading state information... 166s Starting pkgProblemResolver with broken count: 0 166s Starting 2 pkgProblemResolver with broken count: 0 166s Done 166s The following additional packages will be installed: 166s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 166s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 166s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 166s python3-aeidon python3-bs4 python3-cheroot python3-dateutil 166s python3-diff-match-patch python3-enchant python3-iniparse 166s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 166s python3-more-itertools python3-phply python3-ply python3-pycountry 166s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 166s python3-simplejson python3-soupsieve python3-translate python3-vobject 166s python3-xapian subversion translate-toolkit 166s Suggested packages: 166s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 166s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 166s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 166s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 166s db5.3-util libapache2-mod-svn subversion-tools 166s Recommended packages: 166s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 166s python3-cssselect python3-html5lib translate-toolkit-doc 166s The following NEW packages will be installed: 166s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 166s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 166s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 166s libxslt1.1 python3-aeidon python3-bs4 python3-cheroot python3-dateutil 166s python3-diff-match-patch python3-enchant python3-iniparse 166s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 166s python3-more-itertools python3-phply python3-ply python3-pycountry 166s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 166s python3-simplejson python3-soupsieve python3-translate python3-vobject 166s python3-xapian subversion translate-toolkit 167s 0 upgraded, 42 newly installed, 0 to remove and 0 not upgraded. 167s Need to get 9890 kB/9891 kB of archives. 167s After this operation, 46.0 MB of additional disk space will be used. 167s Get:1 /tmp/autopkgtest.qvxWnj/1-autopkgtest-satdep.deb autopkgtest-satdep arm64 0 [868 B] 167s Get:2 http://ftpmaster.internal/ubuntu oracular/main arm64 emacsen-common all 3.0.5 [12.1 kB] 167s Get:3 http://ftpmaster.internal/ubuntu oracular/main arm64 dictionaries-common all 1.29.7 [188 kB] 167s Get:4 http://ftpmaster.internal/ubuntu oracular/main arm64 libgomp1 arm64 14.1.0-1ubuntu1 [144 kB] 167s Get:5 http://ftpmaster.internal/ubuntu oracular/main arm64 gettext arm64 0.21-14ubuntu2 [845 kB] 168s Get:6 http://ftpmaster.internal/ubuntu oracular/main arm64 hunspell-en-us all 1:2020.12.07-2 [280 kB] 168s Get:7 http://ftpmaster.internal/ubuntu oracular/main arm64 libapr1t64 arm64 1.7.2-3.2 [105 kB] 168s Get:8 http://ftpmaster.internal/ubuntu oracular/main arm64 libaprutil1t64 arm64 1.6.3-1.1ubuntu7 [93.9 kB] 168s Get:9 http://ftpmaster.internal/ubuntu oracular/main arm64 libaspell15 arm64 0.60.8.1-1build1 [316 kB] 169s Get:10 http://ftpmaster.internal/ubuntu oracular/main arm64 libhunspell-1.7-0 arm64 1.7.2+really1.7.2-10build3 [274 kB] 169s Get:11 http://ftpmaster.internal/ubuntu oracular/main arm64 libenchant-2-2 arm64 2.3.3-2build2 [50.3 kB] 169s Get:12 http://ftpmaster.internal/ubuntu oracular/main arm64 libexttextcat-data all 3.4.7-1build1 [193 kB] 169s Get:13 http://ftpmaster.internal/ubuntu oracular/universe arm64 libserf-1-1 arm64 1.3.10-2 [48.6 kB] 169s Get:14 http://ftpmaster.internal/ubuntu oracular/universe arm64 libutf8proc3 arm64 2.9.0-1build1 [71.1 kB] 169s Get:15 http://ftpmaster.internal/ubuntu oracular/universe arm64 libsvn1 arm64 1.14.3-1build4 [1339 kB] 169s Get:16 http://ftpmaster.internal/ubuntu oracular/universe arm64 libxapian30 arm64 1.4.22-1build1 [680 kB] 169s Get:17 http://ftpmaster.internal/ubuntu oracular/main arm64 libxslt1.1 arm64 1.1.39-0exp1build1 [166 kB] 169s Get:18 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-aeidon all 1.11-2 [221 kB] 169s Get:19 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-soupsieve all 2.5-1 [33.0 kB] 169s Get:20 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-bs4 all 4.12.3-1 [109 kB] 169s Get:21 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-more-itertools all 10.2.0-1 [52.9 kB] 169s Get:22 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-jaraco.functools all 4.0.0-1 [10.7 kB] 170s Get:23 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 170s Get:24 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-dateutil all 2.9.0-2 [80.3 kB] 170s Get:25 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-diff-match-patch all 20230430-1 [33.1 kB] 170s Get:26 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-enchant all 3.2.2-1 [34.0 kB] 170s Get:27 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-rapidfuzz arm64 3.6.2+ds-3 [990 kB] 170s Get:28 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-levenshtein arm64 0.25.1-3 [108 kB] 170s Get:29 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-lxml arm64 5.2.1-1 [1179 kB] 170s Get:30 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-mistletoe all 1.3.0-1 [38.0 kB] 170s Get:31 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-ply all 3.11-6 [46.5 kB] 170s Get:32 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-phply all 1.2.6-1 [50.5 kB] 170s Get:33 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-ruamel.yaml.clib arm64 0.2.8-1build1 [126 kB] 170s Get:34 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 170s Get:35 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-simplejson arm64 3.19.2-1build2 [53.6 kB] 170s Get:36 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-translate all 3.12.2-1ubuntu1 [318 kB] 170s Get:37 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-vobject all 0.9.6.1-2 [40.6 kB] 170s Get:38 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-xapian arm64 1.4.22-1build5 [355 kB] 170s Get:39 http://ftpmaster.internal/ubuntu oracular/universe arm64 subversion arm64 1.14.3-1build4 [906 kB] 170s Get:40 http://ftpmaster.internal/ubuntu oracular/universe arm64 translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 170s Get:41 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-iniparse all 0.5-2 [20.0 kB] 170s Get:42 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 171s Preconfiguring packages ... 171s Fetched 9890 kB in 4s (2659 kB/s) 171s Selecting previously unselected package emacsen-common. 172s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78200 files and directories currently installed.) 172s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 172s Unpacking emacsen-common (3.0.5) ... 172s Selecting previously unselected package dictionaries-common. 172s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 172s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 172s Unpacking dictionaries-common (1.29.7) ... 172s Selecting previously unselected package libgomp1:arm64. 172s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_arm64.deb ... 172s Unpacking libgomp1:arm64 (14.1.0-1ubuntu1) ... 172s Selecting previously unselected package gettext. 172s Preparing to unpack .../03-gettext_0.21-14ubuntu2_arm64.deb ... 172s Unpacking gettext (0.21-14ubuntu2) ... 172s Selecting previously unselected package hunspell-en-us. 172s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 172s Unpacking hunspell-en-us (1:2020.12.07-2) ... 172s Selecting previously unselected package libapr1t64:arm64. 173s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_arm64.deb ... 173s Unpacking libapr1t64:arm64 (1.7.2-3.2) ... 173s Selecting previously unselected package libaprutil1t64:arm64. 173s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_arm64.deb ... 173s Unpacking libaprutil1t64:arm64 (1.6.3-1.1ubuntu7) ... 173s Selecting previously unselected package libaspell15:arm64. 173s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_arm64.deb ... 173s Unpacking libaspell15:arm64 (0.60.8.1-1build1) ... 173s Selecting previously unselected package libhunspell-1.7-0:arm64. 173s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_arm64.deb ... 173s Unpacking libhunspell-1.7-0:arm64 (1.7.2+really1.7.2-10build3) ... 173s Selecting previously unselected package libenchant-2-2:arm64. 173s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_arm64.deb ... 173s Unpacking libenchant-2-2:arm64 (2.3.3-2build2) ... 173s Selecting previously unselected package libexttextcat-data. 173s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 173s Unpacking libexttextcat-data (3.4.7-1build1) ... 173s Selecting previously unselected package libserf-1-1:arm64. 173s Preparing to unpack .../11-libserf-1-1_1.3.10-2_arm64.deb ... 173s Unpacking libserf-1-1:arm64 (1.3.10-2) ... 173s Selecting previously unselected package libutf8proc3:arm64. 173s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_arm64.deb ... 173s Unpacking libutf8proc3:arm64 (2.9.0-1build1) ... 173s Selecting previously unselected package libsvn1:arm64. 173s Preparing to unpack .../13-libsvn1_1.14.3-1build4_arm64.deb ... 173s Unpacking libsvn1:arm64 (1.14.3-1build4) ... 173s Selecting previously unselected package libxapian30:arm64. 173s Preparing to unpack .../14-libxapian30_1.4.22-1build1_arm64.deb ... 173s Unpacking libxapian30:arm64 (1.4.22-1build1) ... 173s Selecting previously unselected package libxslt1.1:arm64. 173s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_arm64.deb ... 173s Unpacking libxslt1.1:arm64 (1.1.39-0exp1build1) ... 173s Selecting previously unselected package python3-aeidon. 173s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 173s Unpacking python3-aeidon (1.11-2) ... 173s Selecting previously unselected package python3-soupsieve. 173s Preparing to unpack .../17-python3-soupsieve_2.5-1_all.deb ... 173s Unpacking python3-soupsieve (2.5-1) ... 173s Selecting previously unselected package python3-bs4. 173s Preparing to unpack .../18-python3-bs4_4.12.3-1_all.deb ... 173s Unpacking python3-bs4 (4.12.3-1) ... 173s Selecting previously unselected package python3-more-itertools. 174s Preparing to unpack .../19-python3-more-itertools_10.2.0-1_all.deb ... 174s Unpacking python3-more-itertools (10.2.0-1) ... 174s Selecting previously unselected package python3-jaraco.functools. 174s Preparing to unpack .../20-python3-jaraco.functools_4.0.0-1_all.deb ... 174s Unpacking python3-jaraco.functools (4.0.0-1) ... 174s Selecting previously unselected package python3-cheroot. 174s Preparing to unpack .../21-python3-cheroot_10.0.0+ds1-2_all.deb ... 174s Unpacking python3-cheroot (10.0.0+ds1-2) ... 174s Selecting previously unselected package python3-dateutil. 174s Preparing to unpack .../22-python3-dateutil_2.9.0-2_all.deb ... 174s Unpacking python3-dateutil (2.9.0-2) ... 174s Selecting previously unselected package python3-diff-match-patch. 174s Preparing to unpack .../23-python3-diff-match-patch_20230430-1_all.deb ... 174s Unpacking python3-diff-match-patch (20230430-1) ... 174s Selecting previously unselected package python3-enchant. 174s Preparing to unpack .../24-python3-enchant_3.2.2-1_all.deb ... 174s Unpacking python3-enchant (3.2.2-1) ... 174s Selecting previously unselected package python3-rapidfuzz. 174s Preparing to unpack .../25-python3-rapidfuzz_3.6.2+ds-3_arm64.deb ... 174s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 174s Selecting previously unselected package python3-levenshtein. 174s Preparing to unpack .../26-python3-levenshtein_0.25.1-3_arm64.deb ... 174s Unpacking python3-levenshtein (0.25.1-3) ... 174s Selecting previously unselected package python3-lxml:arm64. 174s Preparing to unpack .../27-python3-lxml_5.2.1-1_arm64.deb ... 174s Unpacking python3-lxml:arm64 (5.2.1-1) ... 174s Selecting previously unselected package python3-mistletoe. 174s Preparing to unpack .../28-python3-mistletoe_1.3.0-1_all.deb ... 174s Unpacking python3-mistletoe (1.3.0-1) ... 174s Selecting previously unselected package python3-ply. 174s Preparing to unpack .../29-python3-ply_3.11-6_all.deb ... 174s Unpacking python3-ply (3.11-6) ... 174s Selecting previously unselected package python3-phply. 174s Preparing to unpack .../30-python3-phply_1.2.6-1_all.deb ... 174s Unpacking python3-phply (1.2.6-1) ... 174s Selecting previously unselected package python3-ruamel.yaml.clib:arm64. 174s Preparing to unpack .../31-python3-ruamel.yaml.clib_0.2.8-1build1_arm64.deb ... 174s Unpacking python3-ruamel.yaml.clib:arm64 (0.2.8-1build1) ... 174s Selecting previously unselected package python3-ruamel.yaml. 174s Preparing to unpack .../32-python3-ruamel.yaml_0.17.21-1_all.deb ... 174s Unpacking python3-ruamel.yaml (0.17.21-1) ... 174s Selecting previously unselected package python3-simplejson. 174s Preparing to unpack .../33-python3-simplejson_3.19.2-1build2_arm64.deb ... 174s Unpacking python3-simplejson (3.19.2-1build2) ... 174s Selecting previously unselected package python3-translate. 175s Preparing to unpack .../34-python3-translate_3.12.2-1ubuntu1_all.deb ... 175s Unpacking python3-translate (3.12.2-1ubuntu1) ... 175s Selecting previously unselected package python3-vobject. 175s Preparing to unpack .../35-python3-vobject_0.9.6.1-2_all.deb ... 175s Unpacking python3-vobject (0.9.6.1-2) ... 175s Selecting previously unselected package python3-xapian. 175s Preparing to unpack .../36-python3-xapian_1.4.22-1build5_arm64.deb ... 175s Unpacking python3-xapian (1.4.22-1build5) ... 175s Selecting previously unselected package subversion. 175s Preparing to unpack .../37-subversion_1.14.3-1build4_arm64.deb ... 175s Unpacking subversion (1.14.3-1build4) ... 175s Selecting previously unselected package translate-toolkit. 175s Preparing to unpack .../38-translate-toolkit_3.12.2-1ubuntu1_all.deb ... 175s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 175s Selecting previously unselected package python3-iniparse. 175s Preparing to unpack .../39-python3-iniparse_0.5-2_all.deb ... 175s Unpacking python3-iniparse (0.5-2) ... 175s Selecting previously unselected package python3-pycountry. 175s Preparing to unpack .../40-python3-pycountry_23.12.11+ds1-2_all.deb ... 175s Unpacking python3-pycountry (23.12.11+ds1-2) ... 175s Selecting previously unselected package autopkgtest-satdep. 175s Preparing to unpack .../41-1-autopkgtest-satdep.deb ... 175s Unpacking autopkgtest-satdep (0) ... 176s Setting up python3-more-itertools (10.2.0-1) ... 176s Setting up libxapian30:arm64 (1.4.22-1build1) ... 176s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 177s Setting up python3-diff-match-patch (20230430-1) ... 177s Setting up python3-jaraco.functools (4.0.0-1) ... 178s Setting up python3-aeidon (1.11-2) ... 178s Setting up libutf8proc3:arm64 (2.9.0-1build1) ... 178s Setting up libaspell15:arm64 (0.60.8.1-1build1) ... 178s Setting up python3-ply (3.11-6) ... 178s Setting up python3-ruamel.yaml.clib:arm64 (0.2.8-1build1) ... 178s Setting up libgomp1:arm64 (14.1.0-1ubuntu1) ... 178s Setting up python3-simplejson (3.19.2-1build2) ... 179s Setting up emacsen-common (3.0.5) ... 179s Setting up python3-cheroot (10.0.0+ds1-2) ... 180s Setting up python3-pycountry (23.12.11+ds1-2) ... 180s Setting up python3-xapian (1.4.22-1build5) ... 180s Setting up python3-ruamel.yaml (0.17.21-1) ... 181s Setting up python3-mistletoe (1.3.0-1) ... 182s Setting up libexttextcat-data (3.4.7-1build1) ... 182s Setting up libapr1t64:arm64 (1.7.2-3.2) ... 182s Setting up libxslt1.1:arm64 (1.1.39-0exp1build1) ... 182s Setting up python3-dateutil (2.9.0-2) ... 183s Setting up python3-levenshtein (0.25.1-3) ... 183s Setting up libhunspell-1.7-0:arm64 (1.7.2+really1.7.2-10build3) ... 183s Setting up python3-soupsieve (2.5-1) ... 184s Setting up python3-iniparse (0.5-2) ... 184s Setting up libaprutil1t64:arm64 (1.6.3-1.1ubuntu7) ... 184s Setting up python3-vobject (0.9.6.1-2) ... 185s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 185s patterns['name'] = '[a-zA-Z0-9\-_]+' 185s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 185s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 185s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 185s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 185s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 185s """ 185s Setting up gettext (0.21-14ubuntu2) ... 185s Setting up python3-phply (1.2.6-1) ... 187s Setting up dictionaries-common (1.29.7) ... 192s Setting up libserf-1-1:arm64 (1.3.10-2) ... 192s Setting up python3-bs4 (4.12.3-1) ... 193s Setting up python3-lxml:arm64 (5.2.1-1) ... 194s Setting up hunspell-en-us (1:2020.12.07-2) ... 195s Setting up libsvn1:arm64 (1.14.3-1build4) ... 195s Setting up libenchant-2-2:arm64 (2.3.3-2build2) ... 195s Setting up subversion (1.14.3-1build4) ... 195s Setting up python3-enchant (3.2.2-1) ... 196s Setting up python3-translate (3.12.2-1ubuntu1) ... 198s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 198s Setting up autopkgtest-satdep (0) ... 198s Processing triggers for man-db (2.12.1-1) ... 200s Processing triggers for install-info (7.1-3build2) ... 201s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 201s Processing triggers for dictionaries-common (1.29.7) ... 210s (Reading database ... 81628 files and directories currently installed.) 210s Removing autopkgtest-satdep (0) ... 211s autopkgtest [13:49:40]: test translate-toolkit: [----------------------- 212s ========= SMOKE TEST: /usr/bin/android2po =========== 212s Usage: android2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 212s 212s Convert Android string files to Gettext PO localization files. See: 212s http://docs.translatehouse.org/projects/translate- 212s toolkit/en/latest/commands/android2po.html for examples and usage 212s instructions. 212s 212s Options: 212s --version show program's version number and exit 212s -h, --help show this help message and exit 212s --manpage output a manpage based on the help 212s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 212s --errorlevel=ERRORLEVEL 212s show errorlevel as: none, message, exception, 212s traceback 212s -i INPUT, --input=INPUT 212s read from INPUT in xml format 212s -x EXCLUDE, --exclude=EXCLUDE 212s exclude names matching EXCLUDE from input paths 212s -o OUTPUT, --output=OUTPUT 212s write to OUTPUT in po, pot formats 212s -t TEMPLATE, --template=TEMPLATE 212s read from TEMPLATE in xml format 212s -S, --timestamp skip conversion if the output file has newer timestamp 212s --duplicates=DUPLICATESTYLE 212s what to do with duplicate strings (identical source 212s text): merge, msgctxt (default: 'msgctxt') 212s ========= SMOKE TEST: /usr/bin/build_tmdb =========== 212s usage: build_tmdb [-h] [-d TMDB_FILE] [-s SOURCE_LANG] -t TARGET_LANG 212s input files [input files ...] 212s 212s positional arguments: 212s input files 212s 212s options: 212s -h, --help show this help message and exit 212s -d TMDB_FILE, --tmdb TMDB_FILE 212s translation memory database file (default: tm.db) 212s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 212s source language of translation files (default: en) 212s -t TARGET_LANG, --import-target-lang TARGET_LANG 212s target language of translation files 213s ========= SMOKE TEST: /usr/bin/buildxpi =========== 213s usage: Usage: buildxpi.py [] [ ...] 213s 213s positional arguments: 213s langs 213s 213s options: 213s -h, --help show this help message and exit 213s -L L10NBASE, --l10n-base L10NBASE 213s The directory containing the subdirectory. 213s -o OUTPUTDIR, --output-dir OUTPUTDIR 213s The directory to copy the built XPI to (default: 213s current directory). 213s -p MOZPRODUCT, --mozproduct MOZPRODUCT 213s The Mozilla product name (default: "browser"). 213s -s SRCDIR, --src SRCDIR 213s The directory containing the Mozilla l10n sources. 213s -d, --delete-dest Delete output XPI if it already exists. 213s -v, --verbose Be more noisy 213s --soft-max-version Override a fixed max version with one to cover the 213s whole cycle e.g. 24.0a1 becomes 24.0.* 213s ========= SMOKE TEST: /usr/bin/csv2po =========== 213s Usage: csv2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 213s 213s Convert Comma-Separated Value (.csv) files to Gettext PO localization files. 213s See: http://docs.translatehouse.org/projects/translate- 213s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 213s 213s Options: 213s --version show program's version number and exit 213s -h, --help show this help message and exit 213s --manpage output a manpage based on the help 213s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 213s --errorlevel=ERRORLEVEL 213s show errorlevel as: none, message, exception, 213s traceback 213s -i INPUT, --input=INPUT 213s read from INPUT in csv format 213s -x EXCLUDE, --exclude=EXCLUDE 213s exclude names matching EXCLUDE from input paths 213s -o OUTPUT, --output=OUTPUT 213s write to OUTPUT in po, pot formats 213s -t TEMPLATE, --template=TEMPLATE 213s read from TEMPLATE in po, pot, pot formats 213s -S, --timestamp skip conversion if the output file has newer timestamp 213s -P, --pot output PO Templates (.pot) rather than PO files (.po) 213s --charset=CHARSET set charset to decode from csv files 213s --columnorder=COLUMNORDER 213s specify the order and position of columns 213s (location,source,target) 213s --duplicates=DUPLICATESTYLE 213s what to do with duplicate strings (identical source 213s text): merge, msgctxt (default: 'msgctxt') 213s ========= SMOKE TEST: /usr/bin/csv2tbx =========== 213s Usage: csv2tbx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 213s 213s Convert Comma-Separated Value (.csv) files to a TermBase eXchange (.tbx) 213s glossary file. See: http://docs.translatehouse.org/projects/translate- 213s toolkit/en/latest/commands/csv2tbx.html for examples and usage instructions 213s 213s Options: 213s --version show program's version number and exit 213s -h, --help show this help message and exit 213s --manpage output a manpage based on the help 213s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 213s --errorlevel=ERRORLEVEL 213s show errorlevel as: none, message, exception, 213s traceback 213s -i INPUT, --input=INPUT 213s read from INPUT in csv format 213s -x EXCLUDE, --exclude=EXCLUDE 213s exclude names matching EXCLUDE from input paths 213s -o OUTPUT, --output=OUTPUT 213s write to OUTPUT in tbx format 213s -S, --timestamp skip conversion if the output file has newer timestamp 213s --charset=CHARSET set charset to decode from csv files 213s --columnorder=COLUMNORDER 213s specify the order and position of columns 213s (comment,source,target) 213s ========= SMOKE TEST: /usr/bin/dtd2po =========== 213s Usage: dtd2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 213s 213s Convert a Mozilla .dtd UTF-8 localization format to a Gettext PO localization 213s file. Uses the po and dtd modules, and the dtd2po convertor class which is in 213s this module You can convert back to .dtd using po2dtd.py. 213s 213s Options: 213s --version show program's version number and exit 213s -h, --help show this help message and exit 213s --manpage output a manpage based on the help 213s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 213s --errorlevel=ERRORLEVEL 213s show errorlevel as: none, message, exception, 213s traceback 213s -i INPUT, --input=INPUT 213s read from INPUT in dtd format 213s -x EXCLUDE, --exclude=EXCLUDE 213s exclude names matching EXCLUDE from input paths 213s -o OUTPUT, --output=OUTPUT 213s write to OUTPUT in po, pot formats 213s -t TEMPLATE, --template=TEMPLATE 213s read from TEMPLATE in dtd format 213s -S, --timestamp skip conversion if the output file has newer timestamp 213s -P, --pot output PO Templates (.pot) rather than PO files (.po) 213s --duplicates=DUPLICATESTYLE 213s what to do with duplicate strings (identical source 213s text): merge, msgctxt (default: 'msgctxt') 214s ========= SMOKE TEST: /usr/bin/flatxml2po =========== 214s Usage: flatxml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 214s 214s Convert flat XML files to Gettext PO localization files. See: 214s http://docs.translatehouse.org/projects/translate- 214s toolkit/en/latest/commands/flatxml2po.html for examples and usage 214s instructions. 214s 214s Options: 214s --version show program's version number and exit 214s -h, --help show this help message and exit 214s --manpage output a manpage based on the help 214s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 214s --errorlevel=ERRORLEVEL 214s show errorlevel as: none, message, exception, 214s traceback 214s -i INPUT, --input=INPUT 214s read from INPUT in xml format 214s -x EXCLUDE, --exclude=EXCLUDE 214s exclude names matching EXCLUDE from input paths 214s -o OUTPUT, --output=OUTPUT 214s write to OUTPUT in po, pot formats 214s -S, --timestamp skip conversion if the output file has newer timestamp 214s -r ROOT, --root=ROOT name of the XML root element (default: "root") 214s -v VALUE, --value=VALUE 214s name of the XML value element (default: "str") 214s -k KEY, --key=KEY name of the XML key attribute (default: "key") 214s -n NS, --namespace=NS 214s XML namespace uri (default: None) 214s ========= SMOKE TEST: /usr/bin/get_moz_enUS =========== 214s usage: get_moz_enUS [-h] [-s SRCDIR] [-d DESTDIR] [-p MOZPRODUCT] 214s [--delete-dest] [-v] 214s 214s options: 214s -h, --help show this help message and exit 214s -s SRCDIR, --src SRCDIR 214s The directory containing the Mozilla l10n sources. 214s -d DESTDIR, --dest DESTDIR 214s The destination directory to copy the en-US locale 214s files to. 214s -p MOZPRODUCT, --mozproduct MOZPRODUCT 214s The Mozilla product name. 214s --delete-dest Delete the destination directory (if it exists). 214s -v, --verbose Be more noisy 214s ========= SMOKE TEST: /usr/bin/html2po =========== 214s Usage: html2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 214s 214s Convert HTML files to Gettext PO localization files. See: 214s http://docs.translatehouse.org/projects/translate- 214s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 214s 214s Options: 214s --version show program's version number and exit 214s -h, --help show this help message and exit 214s --manpage output a manpage based on the help 214s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 214s --errorlevel=ERRORLEVEL 214s show errorlevel as: none, message, exception, 214s traceback 214s -i INPUT, --input=INPUT 214s read from INPUT in htm, html, xhtml formats 214s -x EXCLUDE, --exclude=EXCLUDE 214s exclude names matching EXCLUDE from input paths 214s -o OUTPUT, --output=OUTPUT 214s write to OUTPUT in po, pot formats 214s -S, --timestamp skip conversion if the output file has newer timestamp 214s -P, --pot output PO Templates (.pot) rather than PO files (.po) 214s --keepcomments preserve html comments as translation notes in the 214s output 214s --duplicates=DUPLICATESTYLE 214s what to do with duplicate strings (identical source 214s text): merge, msgctxt (default: 'msgctxt') 214s --multifile=MULTIFILESTYLE 214s how to split po/pot files (single, toplevel or 214s onefile) 214s ========= SMOKE TEST: /usr/bin/ical2po =========== 215s Usage: ical2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 215s 215s Convert iCalendar files to Gettext PO localization files. See: 215s http://docs.translatehouse.org/projects/translate- 215s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 215s 215s Options: 215s --version show program's version number and exit 215s -h, --help show this help message and exit 215s --manpage output a manpage based on the help 215s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 215s --errorlevel=ERRORLEVEL 215s show errorlevel as: none, message, exception, 215s traceback 215s -i INPUT, --input=INPUT 215s read from INPUT in ics format 215s -x EXCLUDE, --exclude=EXCLUDE 215s exclude names matching EXCLUDE from input paths 215s -o OUTPUT, --output=OUTPUT 215s write to OUTPUT in po, pot formats 215s -t TEMPLATE, --template=TEMPLATE 215s read from TEMPLATE in ics format 215s -S, --timestamp skip conversion if the output file has newer timestamp 215s -P, --pot output PO Templates (.pot) rather than PO files (.po) 215s --duplicates=DUPLICATESTYLE 215s what to do with duplicate strings (identical source 215s text): merge, msgctxt (default: 'msgctxt') 215s ========= SMOKE TEST: /usr/bin/idml2po =========== 215s Usage: idml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 215s 215s Convert IDML files to PO localization files. 215s 215s Options: 215s --version show program's version number and exit 215s -h, --help show this help message and exit 215s --manpage output a manpage based on the help 215s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 215s --errorlevel=ERRORLEVEL 215s show errorlevel as: none, message, exception, 215s traceback 215s -i INPUT, --input=INPUT 215s read from INPUT in idml format 215s -x EXCLUDE, --exclude=EXCLUDE 215s exclude names matching EXCLUDE from input paths 215s -o OUTPUT, --output=OUTPUT 215s write to OUTPUT in po, pot formats 215s -S, --timestamp skip conversion if the output file has newer timestamp 215s ========= SMOKE TEST: /usr/bin/ini2po =========== 216s Usage: ini2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 216s 216s Convert .ini files to Gettext PO localization files. See: 216s http://docs.translatehouse.org/projects/translate- 216s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 216s 216s Options: 216s --version show program's version number and exit 216s -h, --help show this help message and exit 216s --manpage output a manpage based on the help 216s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 216s --errorlevel=ERRORLEVEL 216s show errorlevel as: none, message, exception, 216s traceback 216s -i INPUT, --input=INPUT 216s read from INPUT in ini, isl, iss formats 216s -x EXCLUDE, --exclude=EXCLUDE 216s exclude names matching EXCLUDE from input paths 216s -o OUTPUT, --output=OUTPUT 216s write to OUTPUT in po, pot formats 216s -t TEMPLATE, --template=TEMPLATE 216s read from TEMPLATE in ini, isl, iss formats 216s -S, --timestamp skip conversion if the output file has newer timestamp 216s -P, --pot output PO Templates (.pot) rather than PO files (.po) 216s --duplicates=DUPLICATESTYLE 216s what to do with duplicate strings (identical source 216s text): merge, msgctxt (default: 'msgctxt') 216s ========= SMOKE TEST: /usr/bin/json2po =========== 216s Usage: json2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 216s 216s Convert JSON files to Gettext PO localization files. See: 216s http://docs.translatehouse.org/projects/translate- 216s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 216s 216s Options: 216s --version show program's version number and exit 216s -h, --help show this help message and exit 216s --manpage output a manpage based on the help 216s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 216s --errorlevel=ERRORLEVEL 216s show errorlevel as: none, message, exception, 216s traceback 216s -i INPUT, --input=INPUT 216s read from INPUT in json format 216s -x EXCLUDE, --exclude=EXCLUDE 216s exclude names matching EXCLUDE from input paths 216s -o OUTPUT, --output=OUTPUT 216s write to OUTPUT in po, pot formats 216s -t TEMPLATE, --template=TEMPLATE 216s read from TEMPLATE in json format 216s -S, --timestamp skip conversion if the output file has newer timestamp 216s -P, --pot output PO Templates (.pot) rather than PO files (.po) 216s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 216s everything) 216s --duplicates=DUPLICATESTYLE 216s what to do with duplicate strings (identical source 216s text): merge, msgctxt (default: 'msgctxt') 216s ========= SMOKE TEST: /usr/bin/md2po =========== 216s Usage: md2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 216s 216s Convert Markdown files to Gettext PO localization files. See: 216s http://docs.translatehouse.org/projects/translate- 216s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 216s 216s Options: 216s --version show program's version number and exit 216s -h, --help show this help message and exit 216s --manpage output a manpage based on the help 216s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 216s --errorlevel=ERRORLEVEL 216s show errorlevel as: none, message, exception, 216s traceback 216s -i INPUT, --input=INPUT 216s read from INPUT in markdown, md, text, txt formats 216s -x EXCLUDE, --exclude=EXCLUDE 216s exclude names matching EXCLUDE from input paths 216s -o OUTPUT, --output=OUTPUT 216s write to OUTPUT in po, pot formats 216s -S, --timestamp skip conversion if the output file has newer timestamp 216s -P, --pot output PO Templates (.pot) rather than PO files (.po) 216s --duplicates=DUPLICATESTYLE 216s what to do with duplicate strings (identical source 216s text): merge, msgctxt (default: 'msgctxt') 216s --multifile=MULTIFILESTYLE 216s how to split po/pot files (single, toplevel or 216s onefile) 216s ========= SMOKE TEST: /usr/bin/moz2po =========== 217s Usage: moz2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 217s 217s Convert Mozilla .dtd and .properties files to Gettext PO localization files. 217s See: http://docs.translatehouse.org/projects/translate- 217s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 217s 217s Options: 217s --version show program's version number and exit 217s -h, --help show this help message and exit 217s --manpage output a manpage based on the help 217s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 217s --errorlevel=ERRORLEVEL 217s show errorlevel as: none, message, exception, 217s traceback 217s -i INPUT, --input=INPUT 217s read from INPUT in *, dtd, inc, ini, it, js, lang, 217s manifest, properties, rdf formats 217s -x EXCLUDE, --exclude=EXCLUDE 217s exclude names matching EXCLUDE from input paths 217s -o OUTPUT, --output=OUTPUT 217s write to OUTPUT in *, dtd.po, dtd.pot, inc.po, 217s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 217s lang.pot, manifest, properties.po, properties.pot, rdf 217s formats 217s -t TEMPLATE, --template=TEMPLATE 217s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 217s manifest, properties, rdf formats 217s -S, --timestamp skip conversion if the output file has newer timestamp 217s -P, --pot output PO Templates (.pot) rather than PO files (.po) 217s --duplicates=DUPLICATESTYLE 217s what to do with duplicate strings (identical source 217s text): merge, msgctxt (default: 'msgctxt') 217s ========= SMOKE TEST: /usr/bin/mozlang2po =========== 217s Usage: mozlang2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 217s 217s Convert Mozilla .lang files to Gettext PO localization files. 217s 217s Options: 217s --version show program's version number and exit 217s -h, --help show this help message and exit 217s --manpage output a manpage based on the help 217s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 217s --errorlevel=ERRORLEVEL 217s show errorlevel as: none, message, exception, 217s traceback 217s -i INPUT, --input=INPUT 217s read from INPUT in lang format 217s -x EXCLUDE, --exclude=EXCLUDE 217s exclude names matching EXCLUDE from input paths 217s -o OUTPUT, --output=OUTPUT 217s write to OUTPUT in po, pot formats 217s -S, --timestamp skip conversion if the output file has newer timestamp 217s -P, --pot output PO Templates (.pot) rather than PO files (.po) 217s --encoding=ENCODING The encoding of the input file (default: UTF-8) 217s --duplicates=DUPLICATESTYLE 217s what to do with duplicate strings (identical source 217s text): merge, msgctxt (default: 'msgctxt') 217s ========= SMOKE TEST: /usr/bin/msghack =========== 217s Usage: /usr/bin/msghack [OPTION] file.po [ref.po] 217s This program can be used to alter .po files in ways no sane mind would think about. 217s -o result will be written to FILE 217s --invert invert a po file by switching msgid and msgstr 217s --master join any number of files in a master-formatted catalog 217s --empty empty the contents of the .po file, creating a .pot 217s --append append entries from ref.po that don't exist in file.po 217s 217s Note: It is just a replacement of msghack for backward support. 217s 217s ========= SMOKE TEST: /usr/bin/odf2xliff =========== 217s Usage: odf2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 217s 217s Convert OpenDocument (ODF) files to XLIFF localization files. See: 217s http://docs.translatehouse.org/projects/translate- 217s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 217s 217s Options: 217s --version show program's version number and exit 217s -h, --help show this help message and exit 217s --manpage output a manpage based on the help 217s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 217s --errorlevel=ERRORLEVEL 217s show errorlevel as: none, message, exception, 217s traceback 217s -i INPUT, --input=INPUT 217s read from INPUT in odc, odf, odg, odi, odm, odp, ods, 217s odt, otc, otf, otg, oth, oti, otp, ots, ott, sxw 217s formats 217s -x EXCLUDE, --exclude=EXCLUDE 217s exclude names matching EXCLUDE from input paths 217s -o OUTPUT, --output=OUTPUT 217s write to OUTPUT in xlf, xliff formats 217s -S, --timestamp skip conversion if the output file has newer timestamp 217s ========= SMOKE TEST: /usr/bin/oo2po =========== 217s Usage: oo2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 217s 217s Convert an OpenOffice.org (SDF) localization file to Gettext PO localization 217s files. See: http://docs.translatehouse.org/projects/translate- 217s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 217s 217s Options: 217s --version show program's version number and exit 217s -h, --help show this help message and exit 217s --manpage output a manpage based on the help 217s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 217s --errorlevel=ERRORLEVEL 217s show errorlevel as: none, message, exception, 217s traceback 217s -i INPUT, --input=INPUT 217s read from INPUT in oo, sdf formats 217s -x EXCLUDE, --exclude=EXCLUDE 217s exclude names matching EXCLUDE from input paths 217s -o OUTPUT, --output=OUTPUT 217s write to OUTPUT in po, pot formats 217s -S, --timestamp skip conversion if the output file has newer timestamp 217s -P, --pot output PO Templates (.pot) rather than PO files (.po) 217s -l LANG, --language=LANG 217s set target language to extract from oo file (e.g. af- 217s ZA) 217s --source-language=LANG 217s set source language code (default en-US) 217s --nonrecursiveinput don't treat the input oo as a recursive store 217s --duplicates=DUPLICATESTYLE 217s what to do with duplicate strings (identical source 217s text): merge, msgctxt (default: 'msgctxt') 217s --multifile=MULTIFILESTYLE 217s how to split po/pot files (single, toplevel or 217s onefile) 217s ========= SMOKE TEST: /usr/bin/oo2xliff =========== 217s Usage: oo2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 217s 217s Convert an OpenOffice.org (SDF) localization file to XLIFF localization 217s files. See: http://docs.translatehouse.org/projects/translate- 217s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 217s 217s Options: 217s --version show program's version number and exit 217s -h, --help show this help message and exit 217s --manpage output a manpage based on the help 217s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 217s --errorlevel=ERRORLEVEL 217s show errorlevel as: none, message, exception, 217s traceback 217s -i INPUT, --input=INPUT 217s read from INPUT in oo, sdf formats 217s -x EXCLUDE, --exclude=EXCLUDE 217s exclude names matching EXCLUDE from input paths 217s -o OUTPUT, --output=OUTPUT 217s write to OUTPUT in xlf, xliff formats 217s -S, --timestamp skip conversion if the output file has newer timestamp 217s -l LANG, --language=LANG 217s set target language to extract from oo file (e.g. af- 217s ZA) 217s --source-language=LANG 217s set source language code (default en-US) 217s --nonrecursiveinput don't treat the input oo as a recursive store 217s --duplicates=DUPLICATESTYLE 217s what to do with duplicate strings (identical source 217s text): merge, msgctxt (default: 'msgctxt') 217s --multifile=MULTIFILESTYLE 217s how to split po/pot files (single, toplevel or 217s onefile) 218s ========= SMOKE TEST: /usr/bin/php2po =========== 218s Usage: php2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 218s 218s Convert PHP localization files to Gettext PO localization files. See: 218s http://docs.translatehouse.org/projects/translate- 218s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 218s 218s Options: 218s --version show program's version number and exit 218s -h, --help show this help message and exit 218s --manpage output a manpage based on the help 218s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 218s --errorlevel=ERRORLEVEL 218s show errorlevel as: none, message, exception, 218s traceback 218s -i INPUT, --input=INPUT 218s read from INPUT in html, php formats 218s -x EXCLUDE, --exclude=EXCLUDE 218s exclude names matching EXCLUDE from input paths 218s -o OUTPUT, --output=OUTPUT 218s write to OUTPUT in po, pot formats 218s -t TEMPLATE, --template=TEMPLATE 218s read from TEMPLATE in html, php formats 218s -S, --timestamp skip conversion if the output file has newer timestamp 218s -P, --pot output PO Templates (.pot) rather than PO files (.po) 218s --duplicates=DUPLICATESTYLE 218s what to do with duplicate strings (identical source 218s text): merge, msgctxt (default: 'msgctxt') 218s ========= SMOKE TEST: /usr/bin/phppo2pypo =========== 218s Usage: phppo2pypo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 218s 218s Convert PHP format .po files to Python format .po files. 218s 218s Options: 218s --version show program's version number and exit 218s -h, --help show this help message and exit 218s --manpage output a manpage based on the help 218s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 218s --errorlevel=ERRORLEVEL 218s show errorlevel as: none, message, exception, 218s traceback 218s -i INPUT, --input=INPUT 218s read from INPUT in po, pot formats 218s -x EXCLUDE, --exclude=EXCLUDE 218s exclude names matching EXCLUDE from input paths 218s -o OUTPUT, --output=OUTPUT 218s write to OUTPUT in po, pot formats 218s -S, --timestamp skip conversion if the output file has newer timestamp 218s ========= SMOKE TEST: /usr/bin/po2csv =========== 218s Usage: po2csv [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 218s 218s Convert Gettext PO localization files to Comma-Separated Value (.csv) files. 218s See: http://docs.translatehouse.org/projects/translate- 218s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 218s 218s Options: 218s --version show program's version number and exit 218s -h, --help show this help message and exit 218s --manpage output a manpage based on the help 218s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 218s --errorlevel=ERRORLEVEL 218s show errorlevel as: none, message, exception, 218s traceback 218s -i INPUT, --input=INPUT 218s read from INPUT in po, pot formats 218s -x EXCLUDE, --exclude=EXCLUDE 218s exclude names matching EXCLUDE from input paths 218s -o OUTPUT, --output=OUTPUT 218s write to OUTPUT in csv format 218s -S, --timestamp skip conversion if the output file has newer timestamp 218s --columnorder=COLUMNORDER 218s specify the order and position of columns 218s (location,source,target) 218s ========= SMOKE TEST: /usr/bin/po2dtd =========== 218s Usage: po2dtd [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 218s 218s Converts a Gettext PO file to a UTF-8 encoded Mozilla .dtd file. .. note: 218s Conversion is either done using a template plus PO file or just using the 218s .po file. 218s 218s Options: 218s --version show program's version number and exit 218s -h, --help show this help message and exit 218s --manpage output a manpage based on the help 218s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 218s --errorlevel=ERRORLEVEL 218s show errorlevel as: none, message, exception, 218s traceback 218s -i INPUT, --input=INPUT 218s read from INPUT in po, pot formats 218s -x EXCLUDE, --exclude=EXCLUDE 218s exclude names matching EXCLUDE from input paths 218s -o OUTPUT, --output=OUTPUT 218s write to OUTPUT in dtd format 218s -t TEMPLATE, --template=TEMPLATE 218s read from TEMPLATE in dtd format 218s -S, --timestamp skip conversion if the output file has newer timestamp 218s --threshold=PERCENT only convert files where the translation completion is 218s above PERCENT 218s --fuzzy use translations marked fuzzy 218s --nofuzzy don't use translations marked fuzzy (default) 218s --removeuntranslated remove untranslated strings from output 219s ========= SMOKE TEST: /usr/bin/po2flatxml =========== 219s Usage: po2flatxml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 219s 219s Convert Gettext PO localization files to flat XML files. See: 219s http://docs.translatehouse.org/projects/translate- 219s toolkit/en/latest/commands/flatxml2po.html for examples and usage 219s instructions. 219s 219s Options: 219s --version show program's version number and exit 219s -h, --help show this help message and exit 219s --manpage output a manpage based on the help 219s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 219s --errorlevel=ERRORLEVEL 219s show errorlevel as: none, message, exception, 219s traceback 219s -i INPUT, --input=INPUT 219s read from INPUT in po, pot formats 219s -x EXCLUDE, --exclude=EXCLUDE 219s exclude names matching EXCLUDE from input paths 219s -o OUTPUT, --output=OUTPUT 219s write to OUTPUT in xml format 219s -t TEMPLATE, --template=TEMPLATE 219s read from TEMPLATE in xml format 219s -S, --timestamp skip conversion if the output file has newer timestamp 219s -r ROOT, --root=ROOT name of the XML root element (default: "root") 219s -v VALUE, --value=VALUE 219s name of the XML value element (default: "str") 219s -k KEY, --key=KEY name of the XML key attribute (default: "key") 219s -n NS, --namespace=NS 219s XML namespace uri (default: None) 219s -w INDENT, --indent=INDENT 219s indent width in spaces, 0 for no indent (default: 2) 219s ========= SMOKE TEST: /usr/bin/po2html =========== 219s Usage: po2html [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 219s 219s Translate HTML files using Gettext PO localization files. See: 219s http://docs.translatehouse.org/projects/translate- 219s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 219s 219s Options: 219s --version show program's version number and exit 219s -h, --help show this help message and exit 219s --manpage output a manpage based on the help 219s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 219s --errorlevel=ERRORLEVEL 219s show errorlevel as: none, message, exception, 219s traceback 219s -i INPUT, --input=INPUT 219s read from INPUT in po, pot formats 219s -x EXCLUDE, --exclude=EXCLUDE 219s exclude names matching EXCLUDE from input paths 219s -o OUTPUT, --output=OUTPUT 219s write to OUTPUT in htm, html, xhtml formats 219s -t TEMPLATE, --template=TEMPLATE 219s read from TEMPLATE in htm, html, xhtml formats 219s -S, --timestamp skip conversion if the output file has newer timestamp 219s --threshold=PERCENT only convert files where the translation completion is 219s above PERCENT 219s --fuzzy use translations marked fuzzy 219s --nofuzzy don't use translations marked fuzzy (default) 220s ========= SMOKE TEST: /usr/bin/po2ical =========== 220s Usage: po2ical [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 220s 220s Convert Gettext PO localization files to iCalendar files. See: 220s http://docs.translatehouse.org/projects/translate- 220s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 220s 220s Options: 220s --version show program's version number and exit 220s -h, --help show this help message and exit 220s --manpage output a manpage based on the help 220s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 220s --errorlevel=ERRORLEVEL 220s show errorlevel as: none, message, exception, 220s traceback 220s -i INPUT, --input=INPUT 220s read from INPUT in po, pot formats 220s -x EXCLUDE, --exclude=EXCLUDE 220s exclude names matching EXCLUDE from input paths 220s -o OUTPUT, --output=OUTPUT 220s write to OUTPUT in ics format 220s -t TEMPLATE, --template=TEMPLATE 220s read from TEMPLATE in ics format 220s -S, --timestamp skip conversion if the output file has newer timestamp 220s --threshold=PERCENT only convert files where the translation completion is 220s above PERCENT 220s --fuzzy use translations marked fuzzy 220s --nofuzzy don't use translations marked fuzzy (default) 220s ========= SMOKE TEST: /usr/bin/po2idml =========== 220s Usage: po2idml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 220s 220s Takes an IDML template file and a PO file containing translations of strings 220s in the IDML template. It creates a new IDML file using the translations of the 220s PO file. 220s 220s Options: 220s --version show program's version number and exit 220s -h, --help show this help message and exit 220s --manpage output a manpage based on the help 220s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 220s --errorlevel=ERRORLEVEL 220s show errorlevel as: none, message, exception, 220s traceback 220s -i INPUT, --input=INPUT 220s read from INPUT in po, pot formats 220s -x EXCLUDE, --exclude=EXCLUDE 220s exclude names matching EXCLUDE from input paths 220s -o OUTPUT, --output=OUTPUT 220s write to OUTPUT in idml format 220s -t TEMPLATE, --template=TEMPLATE 220s read from TEMPLATE in idml format 220s -S, --timestamp skip conversion if the output file has newer timestamp 220s ========= SMOKE TEST: /usr/bin/po2ini =========== 220s Usage: po2ini [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 220s 220s Convert Gettext PO localization files to .ini files. See: 220s http://docs.translatehouse.org/projects/translate- 220s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 220s 220s Options: 220s --version show program's version number and exit 220s -h, --help show this help message and exit 220s --manpage output a manpage based on the help 220s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 220s --errorlevel=ERRORLEVEL 220s show errorlevel as: none, message, exception, 220s traceback 220s -i INPUT, --input=INPUT 220s read from INPUT in po, pot formats 220s -x EXCLUDE, --exclude=EXCLUDE 220s exclude names matching EXCLUDE from input paths 220s -o OUTPUT, --output=OUTPUT 220s write to OUTPUT in ini, isl formats 220s -t TEMPLATE, --template=TEMPLATE 220s read from TEMPLATE in ini, isl formats 220s -S, --timestamp skip conversion if the output file has newer timestamp 220s --threshold=PERCENT only convert files where the translation completion is 220s above PERCENT 220s --fuzzy use translations marked fuzzy 220s --nofuzzy don't use translations marked fuzzy (default) 220s ========= SMOKE TEST: /usr/bin/po2json =========== 221s Usage: po2json [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 221s 221s Convert Gettext PO localization files to JSON files. See: 221s http://docs.translatehouse.org/projects/translate- 221s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 221s 221s Options: 221s --version show program's version number and exit 221s -h, --help show this help message and exit 221s --manpage output a manpage based on the help 221s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 221s --errorlevel=ERRORLEVEL 221s show errorlevel as: none, message, exception, 221s traceback 221s -i INPUT, --input=INPUT 221s read from INPUT in po, pot formats 221s -x EXCLUDE, --exclude=EXCLUDE 221s exclude names matching EXCLUDE from input paths 221s -o OUTPUT, --output=OUTPUT 221s write to OUTPUT in json format 221s -t TEMPLATE, --template=TEMPLATE 221s read from TEMPLATE in json format 221s -S, --timestamp skip conversion if the output file has newer timestamp 221s --threshold=PERCENT only convert files where the translation completion is 221s above PERCENT 221s --fuzzy use translations marked fuzzy 221s --nofuzzy don't use translations marked fuzzy (default) 221s --removeuntranslated remove untranslated strings from output 221s ========= SMOKE TEST: /usr/bin/po2md =========== 221s Usage: po2md [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 221s 221s Translate Markdown files using Gettext PO localization files. See: 221s http://docs.translatehouse.org/projects/translate- 221s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 221s 221s Options: 221s --version show program's version number and exit 221s -h, --help show this help message and exit 221s --manpage output a manpage based on the help 221s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 221s --errorlevel=ERRORLEVEL 221s show errorlevel as: none, message, exception, 221s traceback 221s -i INPUT, --input=INPUT 221s read from INPUT in po, pot formats 221s -x EXCLUDE, --exclude=EXCLUDE 221s exclude names matching EXCLUDE from input paths 221s -o OUTPUT, --output=OUTPUT 221s write to OUTPUT in markdown, md, text, txt formats 221s -t TEMPLATE, --template=TEMPLATE 221s read from TEMPLATE in markdown, md, text, txt formats 221s -S, --timestamp skip conversion if the output file has newer timestamp 221s -m MAXLENGTH, --maxlinelength=MAXLENGTH 221s reflow (word wrap) the output to the given maximum 221s line length. set to 0 to disable 221s --threshold=PERCENT only convert files where the translation completion is 221s above PERCENT 221s --fuzzy use translations marked fuzzy 221s --nofuzzy don't use translations marked fuzzy (default) 222s ========= SMOKE TEST: /usr/bin/po2moz =========== 222s Usage: po2moz [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 222s 222s Convert Gettext PO localization files to Mozilla .dtd and .properties files. 222s See: http://docs.translatehouse.org/projects/translate- 222s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 222s 222s Options: 222s --version show program's version number and exit 222s -h, --help show this help message and exit 222s --manpage output a manpage based on the help 222s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 222s --errorlevel=ERRORLEVEL 222s show errorlevel as: none, message, exception, 222s traceback 222s -i INPUT, --input=INPUT 222s read from INPUT in *, dtd.po, dtd.pot, inc.po, 222s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 222s lang.pot, manifest, properties.po, properties.pot, rdf 222s formats 222s -x EXCLUDE, --exclude=EXCLUDE 222s exclude names matching EXCLUDE from input paths 222s -o OUTPUT, --output=OUTPUT 222s write to OUTPUT in *, dtd, inc, ini, it, js, lang, 222s manifest, properties, rdf formats 222s -t TEMPLATE, --template=TEMPLATE 222s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 222s manifest, properties, rdf formats 222s -S, --timestamp skip conversion if the output file has newer timestamp 222s -l LOCALE, --locale=LOCALE 222s set output locale (required as this sets the directory 222s names) 222s --threshold=PERCENT only convert files where the translation completion is 222s above PERCENT 222s --fuzzy use translations marked fuzzy 222s --nofuzzy don't use translations marked fuzzy (default) 222s --removeuntranslated remove untranslated strings from output 222s ========= SMOKE TEST: /usr/bin/po2mozlang =========== 222s Usage: po2mozlang [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 222s 222s Convert Gettext PO localization files to Mozilla .lang files. 222s 222s Options: 222s --version show program's version number and exit 222s -h, --help show this help message and exit 222s --manpage output a manpage based on the help 222s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 222s --errorlevel=ERRORLEVEL 222s show errorlevel as: none, message, exception, 222s traceback 222s -i INPUT, --input=INPUT 222s read from INPUT in po, pot formats 222s -x EXCLUDE, --exclude=EXCLUDE 222s exclude names matching EXCLUDE from input paths 222s -o OUTPUT, --output=OUTPUT 222s write to OUTPUT in lang format 222s -t TEMPLATE, --template=TEMPLATE 222s read from TEMPLATE in lang format 222s -S, --timestamp skip conversion if the output file has newer timestamp 222s --mark-active mark the file as active 222s --threshold=PERCENT only convert files where the translation completion is 222s above PERCENT 222s --fuzzy use translations marked fuzzy 222s --nofuzzy don't use translations marked fuzzy (default) 222s ========= SMOKE TEST: /usr/bin/po2oo =========== 224s Usage: po2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 224s 224s Convert Gettext PO localization files to an OpenOffice.org (SDF) localization 224s file. See: http://docs.translatehouse.org/projects/translate- 224s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 224s 224s Options: 224s --version show program's version number and exit 224s -h, --help show this help message and exit 224s --manpage output a manpage based on the help 224s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 224s --errorlevel=ERRORLEVEL 224s show errorlevel as: none, message, exception, 224s traceback 224s -i INPUT, --input=INPUT 224s read from INPUT in po, pot, xlf, xliff formats 224s -x EXCLUDE, --exclude=EXCLUDE 224s exclude names matching EXCLUDE from input paths 224s -o OUTPUT, --output=OUTPUT 224s write to OUTPUT in oo, sdf formats 224s -t TEMPLATE, --template=TEMPLATE 224s read from TEMPLATE in oo, sdf formats 224s -S, --timestamp skip conversion if the output file has newer timestamp 224s -l LANG, --language=LANG 224s set target language code (e.g. af-ZA) [required] 224s --source-language=LANG 224s set source language code (default en-US) 224s -T, --keeptimestamp don't change the timestamps of the strings 224s --nonrecursiveoutput don't treat the output oo as a recursive store 224s --nonrecursivetemplate 224s don't treat the template oo as a recursive store 224s --skipsource don't output the source language, but fallback to it 224s where needed 224s --filteraction=ACTION 224s action on pofilter failure: none (default), warn, 224s exclude-serious, exclude-all 224s --threshold=PERCENT only convert files where the translation completion is 224s above PERCENT 224s --fuzzy use translations marked fuzzy 224s --nofuzzy don't use translations marked fuzzy (default) 224s --multifile=MULTIFILESTYLE 224s how to split po/pot files (single, toplevel or 224s onefile) 224s ========= SMOKE TEST: /usr/bin/po2php =========== 224s Usage: po2php [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 224s 224s Convert Gettext PO localization files to PHP localization files. See: 224s http://docs.translatehouse.org/projects/translate- 224s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 224s 224s Options: 224s --version show program's version number and exit 224s -h, --help show this help message and exit 224s --manpage output a manpage based on the help 224s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 224s --errorlevel=ERRORLEVEL 224s show errorlevel as: none, message, exception, 224s traceback 224s -i INPUT, --input=INPUT 224s read from INPUT in po, pot formats 224s -x EXCLUDE, --exclude=EXCLUDE 224s exclude names matching EXCLUDE from input paths 224s -o OUTPUT, --output=OUTPUT 224s write to OUTPUT in html, php formats 224s -t TEMPLATE, --template=TEMPLATE 224s read from TEMPLATE in html, php formats 224s -S, --timestamp skip conversion if the output file has newer timestamp 224s --threshold=PERCENT only convert files where the translation completion is 224s above PERCENT 224s --fuzzy use translations marked fuzzy 224s --nofuzzy don't use translations marked fuzzy (default) 224s ========= SMOKE TEST: /usr/bin/po2prop =========== 224s Usage: po2prop [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 224s 224s Convert Gettext PO localization files to Java/Mozilla .properties files. 224s See: http://docs.translatehouse.org/projects/translate- 224s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 224s 224s Options: 224s --version show program's version number and exit 224s -h, --help show this help message and exit 224s --manpage output a manpage based on the help 224s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 224s --errorlevel=ERRORLEVEL 224s show errorlevel as: none, message, exception, 224s traceback 224s -i INPUT, --input=INPUT 224s read from INPUT in po, pot formats 224s -x EXCLUDE, --exclude=EXCLUDE 224s exclude names matching EXCLUDE from input paths 224s -o OUTPUT, --output=OUTPUT 224s write to OUTPUT in lang, properties, strings formats 224s -t TEMPLATE, --template=TEMPLATE 224s read from TEMPLATE in lang, properties, strings 224s formats 224s -S, --timestamp skip conversion if the output file has newer timestamp 224s --personality=TYPE override the input file format: java, java-utf8, java- 224s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 224s strings, strings-utf8, joomla (for .properties files, 224s default: java) 224s --encoding=ENCODING override the encoding set by the personality 224s --threshold=PERCENT only convert files where the translation completion is 224s above PERCENT 224s --fuzzy use translations marked fuzzy 224s --nofuzzy don't use translations marked fuzzy (default) 224s --removeuntranslated remove untranslated strings from output 224s ========= SMOKE TEST: /usr/bin/po2rc =========== 224s Usage: po2rc [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 224s 224s Convert Gettext PO localization files back to Windows Resource (.rc) files. 224s See: http://docs.translatehouse.org/projects/translate- 224s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 224s 224s Options: 224s --version show program's version number and exit 224s -h, --help show this help message and exit 224s --manpage output a manpage based on the help 224s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 224s --errorlevel=ERRORLEVEL 224s show errorlevel as: none, message, exception, 224s traceback 224s -i INPUT, --input=INPUT 224s read from INPUT in po, pot formats 224s -x EXCLUDE, --exclude=EXCLUDE 224s exclude names matching EXCLUDE from input paths 224s -o OUTPUT, --output=OUTPUT 224s write to OUTPUT in rc format 224s -t TEMPLATE, --template=TEMPLATE 224s read from TEMPLATE in rc format 224s -S, --timestamp skip conversion if the output file has newer timestamp 224s --charset=CHARSET charset to use to decode the RC files (default: utf-8) 224s -l LANG, --lang=LANG LANG entry 224s --sublang=SUBLANG SUBLANG entry (default: SUBLANG_DEFAULT) 224s --threshold=PERCENT only convert files where the translation completion is 224s above PERCENT 224s --fuzzy use translations marked fuzzy 224s --nofuzzy don't use translations marked fuzzy (default) 225s ========= SMOKE TEST: /usr/bin/po2resx =========== 225s Usage: po2resx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 225s 225s Convert Gettext PO localisation files to .Net Resource (.resx) files. See: 225s http://docs.translatehouse.org/projects/translate- 225s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 225s 225s Options: 225s --version show program's version number and exit 225s -h, --help show this help message and exit 225s --manpage output a manpage based on the help 225s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 225s --errorlevel=ERRORLEVEL 225s show errorlevel as: none, message, exception, 225s traceback 225s -i INPUT, --input=INPUT 225s read from INPUT in po, pot formats 225s -x EXCLUDE, --exclude=EXCLUDE 225s exclude names matching EXCLUDE from input paths 225s -o OUTPUT, --output=OUTPUT 225s write to OUTPUT in resx format 225s -t TEMPLATE, --template=TEMPLATE 225s read from TEMPLATE in resx format 225s -S, --timestamp skip conversion if the output file has newer timestamp 225s --fuzzy use translations marked fuzzy 225s --nofuzzy don't use translations marked fuzzy (default) 225s ========= SMOKE TEST: /usr/bin/po2sub =========== 225s Usage: po2sub [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 225s 225s Convert Gettext PO localization files to subtitle files. See: 225s http://docs.translatehouse.org/projects/translate- 225s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 225s 225s Options: 225s --version show program's version number and exit 225s -h, --help show this help message and exit 225s --manpage output a manpage based on the help 225s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 225s --errorlevel=ERRORLEVEL 225s show errorlevel as: none, message, exception, 225s traceback 225s -i INPUT, --input=INPUT 225s read from INPUT in po, pot formats 225s -x EXCLUDE, --exclude=EXCLUDE 225s exclude names matching EXCLUDE from input paths 225s -o OUTPUT, --output=OUTPUT 225s write to OUTPUT in ass, srt, ssa, sub formats 225s -t TEMPLATE, --template=TEMPLATE 225s read from TEMPLATE in ass, srt, ssa, sub formats 225s -S, --timestamp skip conversion if the output file has newer timestamp 225s --threshold=PERCENT only convert files where the translation completion is 225s above PERCENT 225s --fuzzy use translations marked fuzzy 225s --nofuzzy don't use translations marked fuzzy (default) 225s ========= SMOKE TEST: /usr/bin/po2symb =========== 225s Usage: po2symb [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 225s 225s Convert Gettext PO localization files to Symbian translation files. See: 225s http://docs.translatehouse.org/projects/translate- 225s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 225s 225s Options: 225s --version show program's version number and exit 225s -h, --help show this help message and exit 225s --manpage output a manpage based on the help 225s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 225s --errorlevel=ERRORLEVEL 225s show errorlevel as: none, message, exception, 225s traceback 225s -i INPUT, --input=INPUT 225s read from INPUT in po, pot formats 225s -x EXCLUDE, --exclude=EXCLUDE 225s exclude names matching EXCLUDE from input paths 225s -o OUTPUT, --output=OUTPUT 225s write to OUTPUT in r0 format 225s -t TEMPLATE, --template=TEMPLATE 225s read from TEMPLATE in 225s -S, --timestamp skip conversion if the output file has newer timestamp 225s --duplicates=DUPLICATESTYLE 225s what to do with duplicate strings (identical source 225s text): merge, msgctxt (default: 'msgctxt') 225s ========= SMOKE TEST: /usr/bin/po2tiki =========== 225s Usage: po2tiki [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 225s 225s Convert Gettext PO files to TikiWiki's language.php files. See: 225s http://docs.translatehouse.org/projects/translate- 225s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 225s 225s Options: 225s --version show program's version number and exit 225s -h, --help show this help message and exit 225s --manpage output a manpage based on the help 225s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 225s --errorlevel=ERRORLEVEL 225s show errorlevel as: none, message, exception, 225s traceback 225s -i INPUT, --input=INPUT 225s read from INPUT in po, pot formats 225s -x EXCLUDE, --exclude=EXCLUDE 225s exclude names matching EXCLUDE from input paths 225s -o OUTPUT, --output=OUTPUT 225s write to OUTPUT in tiki format 225s -S, --timestamp skip conversion if the output file has newer timestamp 225s ========= SMOKE TEST: /usr/bin/po2tmx =========== 225s Usage: po2tmx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 225s 225s Convert Gettext PO localization files to a TMX (Translation Memory eXchange) 225s file. See: http://docs.translatehouse.org/projects/translate- 225s toolkit/en/latest/commands/po2tmx.html for examples and usage instructions. 225s 225s Options: 225s --version show program's version number and exit 225s -h, --help show this help message and exit 225s --manpage output a manpage based on the help 225s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 225s --errorlevel=ERRORLEVEL 225s show errorlevel as: none, message, exception, 225s traceback 225s -i INPUT, --input=INPUT 225s read from INPUT in po, pot formats 225s -x EXCLUDE, --exclude=EXCLUDE 225s exclude names matching EXCLUDE from input paths 225s -o OUTPUT, --output=OUTPUT 225s write to OUTPUT in tmx format 225s -S, --timestamp skip conversion if the output file has newer timestamp 225s -l LANG, --language=LANG 225s set target language code (e.g. af-ZA) [required] 225s --source-language=LANG 225s set source language code (default: en) 225s --comments=COMMENT set default comment import: none, source, type or 225s others (default: none) 226s ========= SMOKE TEST: /usr/bin/po2ts =========== 226s Usage: po2ts [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 226s 226s Convert Gettext PO localization files to Qt Linguist (.ts) files. See: 226s http://docs.translatehouse.org/projects/translate- 226s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 226s 226s Options: 226s --version show program's version number and exit 226s -h, --help show this help message and exit 226s --manpage output a manpage based on the help 226s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 226s --errorlevel=ERRORLEVEL 226s show errorlevel as: none, message, exception, 226s traceback 226s -i INPUT, --input=INPUT 226s read from INPUT in po, pot formats 226s -x EXCLUDE, --exclude=EXCLUDE 226s exclude names matching EXCLUDE from input paths 226s -o OUTPUT, --output=OUTPUT 226s write to OUTPUT in ts format 226s -t TEMPLATE, --template=TEMPLATE 226s read from TEMPLATE in ts format 226s -S, --timestamp skip conversion if the output file has newer timestamp 226s -c CONTEXT, --context=CONTEXT 226s use supplied context instead of the one in the .po 226s file comment 226s ========= SMOKE TEST: /usr/bin/po2txt =========== 226s Usage: po2txt [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 226s 226s Convert Gettext PO localization files to plain text (.txt) files. See: 226s http://docs.translatehouse.org/projects/translate- 226s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 226s 226s Options: 226s --version show program's version number and exit 226s -h, --help show this help message and exit 226s --manpage output a manpage based on the help 226s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 226s --errorlevel=ERRORLEVEL 226s show errorlevel as: none, message, exception, 226s traceback 226s -i INPUT, --input=INPUT 226s read from INPUT in po, pot, xlf, xliff formats 226s -x EXCLUDE, --exclude=EXCLUDE 226s exclude names matching EXCLUDE from input paths 226s -o OUTPUT, --output=OUTPUT 226s write to OUTPUT in txt format 226s -t TEMPLATE, --template=TEMPLATE 226s read from TEMPLATE in txt format 226s -S, --timestamp skip conversion if the output file has newer timestamp 226s --encoding=ENCODING The encoding of the template file (default: UTF-8) 226s -w WRAP, --wrap=WRAP set number of columns to wrap text at 226s --threshold=PERCENT only convert files where the translation completion is 226s above PERCENT 226s --fuzzy use translations marked fuzzy 226s --nofuzzy don't use translations marked fuzzy (default) 226s ========= SMOKE TEST: /usr/bin/po2web2py =========== 226s Usage: po2web2py [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 226s 226s Convert GNU/gettext PO files to web2py translation dictionaries (.py). See: 226s http://docs.translatehouse.org/projects/translate- 226s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 226s 226s Options: 226s --version show program's version number and exit 226s -h, --help show this help message and exit 226s --manpage output a manpage based on the help 226s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 226s --errorlevel=ERRORLEVEL 226s show errorlevel as: none, message, exception, 226s traceback 226s -i INPUT, --input=INPUT 226s read from INPUT in po, pot formats 226s -x EXCLUDE, --exclude=EXCLUDE 226s exclude names matching EXCLUDE from input paths 226s -o OUTPUT, --output=OUTPUT 226s write to OUTPUT in py format 226s -S, --timestamp skip conversion if the output file has newer timestamp 226s --threshold=PERCENT only convert files where the translation completion is 226s above PERCENT 226s --fuzzy use translations marked fuzzy 226s --nofuzzy don't use translations marked fuzzy (default) 226s ========= SMOKE TEST: /usr/bin/po2wordfast =========== 226s Usage: po2wordfast [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 226s 226s Convert Gettext PO localization files to a Wordfast translation memory file. 226s See: http://docs.translatehouse.org/projects/translate- 226s toolkit/en/latest/commands/po2wordfast.html for examples and usage 226s instructions. 226s 226s Options: 226s --version show program's version number and exit 226s -h, --help show this help message and exit 226s --manpage output a manpage based on the help 226s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 226s --errorlevel=ERRORLEVEL 226s show errorlevel as: none, message, exception, 226s traceback 226s -i INPUT, --input=INPUT 226s read from INPUT in po, pot formats 226s -x EXCLUDE, --exclude=EXCLUDE 226s exclude names matching EXCLUDE from input paths 226s -o OUTPUT, --output=OUTPUT 226s write to OUTPUT in txt format 226s -S, --timestamp skip conversion if the output file has newer timestamp 226s -l LANG, --language=LANG 226s set target language code (e.g. af-ZA) [required] 226s --source-language=LANG 226s set source language code (default: en) 226s ========= SMOKE TEST: /usr/bin/po2xliff =========== 226s Usage: po2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 226s 226s Convert Gettext PO localization files to XLIFF localization files. See: 226s http://docs.translatehouse.org/projects/translate- 226s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 226s 226s Options: 226s --version show program's version number and exit 226s -h, --help show this help message and exit 226s --manpage output a manpage based on the help 226s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 226s --errorlevel=ERRORLEVEL 226s show errorlevel as: none, message, exception, 226s traceback 226s -i INPUT, --input=INPUT 226s read from INPUT in po, pot formats 226s -x EXCLUDE, --exclude=EXCLUDE 226s exclude names matching EXCLUDE from input paths 226s -o OUTPUT, --output=OUTPUT 226s write to OUTPUT in xlf, xliff formats 226s -t TEMPLATE, --template=TEMPLATE 226s read from TEMPLATE in xlf, xliff formats 226s -S, --timestamp skip conversion if the output file has newer timestamp 226s ========= SMOKE TEST: /usr/bin/po2yaml =========== 226s Usage: po2yaml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 226s 226s Convert Gettext PO localization files to YAML files. See: 226s http://docs.translatehouse.org/projects/translate- 226s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 226s 226s Options: 226s --version show program's version number and exit 226s -h, --help show this help message and exit 226s --manpage output a manpage based on the help 226s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 226s --errorlevel=ERRORLEVEL 226s show errorlevel as: none, message, exception, 226s traceback 226s -i INPUT, --input=INPUT 226s read from INPUT in po, pot formats 226s -x EXCLUDE, --exclude=EXCLUDE 226s exclude names matching EXCLUDE from input paths 226s -o OUTPUT, --output=OUTPUT 226s write to OUTPUT in yaml, yml formats 226s -t TEMPLATE, --template=TEMPLATE 226s read from TEMPLATE in yaml, yml formats 226s -S, --timestamp skip conversion if the output file has newer timestamp 226s --threshold=PERCENT only convert files where the translation completion is 226s above PERCENT 226s --fuzzy use translations marked fuzzy 226s --nofuzzy don't use translations marked fuzzy (default) 227s ========= SMOKE TEST: /usr/bin/poclean =========== 227s Usage: poclean [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 227s 227s Produces a clean file from an unclean file (Trados/Wordfast) by stripping out 227s the tw4win indicators. This does not convert an RTF file to PO/XLIFF, but 227s produces the target file with only the target text in from a text version of 227s the RTF. 227s 227s Options: 227s --version show program's version number and exit 227s -h, --help show this help message and exit 227s --manpage output a manpage based on the help 227s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 227s --errorlevel=ERRORLEVEL 227s show errorlevel as: none, message, exception, 227s traceback 227s -i INPUT, --input=INPUT 227s read from INPUT in po, pot, xlf, xliff formats 227s -x EXCLUDE, --exclude=EXCLUDE 227s exclude names matching EXCLUDE from input paths 227s -o OUTPUT, --output=OUTPUT 227s write to OUTPUT in po, pot, xlf, xliff formats 227s -S, --timestamp skip conversion if the output file has newer timestamp 227s ========= SMOKE TEST: /usr/bin/pocompendium =========== 227s Usage: pocompendium [options] output.po <-d directory(s)|file(s)> 227s The first parameter is the output file, standard output if the output file is '-'. 227s Any number of directories may be specified for input files. 227s Options: 227s --invert|v Creates an inverse compendium with msgid and msgstr swapped 227s --errors|e Only ouput msg bundles that have errors 227s --correct|c Only ouput msg bundles that are correctly translated 227s --ignore-case|i Drops all strings to lowercase 227s --strip-accel-tilde|-st Strip all tilde (~) accelerator characters 227s --strip-accel-amp|-sa Strip all ampersand (&) accelerator characters 227s --strip-accel-under|-su Strip all underscore (_) accelerator characters 227s ========= SMOKE TEST: /usr/bin/pocompile =========== 227s Usage: pocompile [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 227s 227s Compile XLIFF and Gettext PO localization files into Gettext MO (Machine 227s Object) files. See: http://docs.translatehouse.org/projects/translate- 227s toolkit/en/latest/commands/pocompile.html for examples and usage instructions. 227s 227s Options: 227s --version show program's version number and exit 227s -h, --help show this help message and exit 227s --manpage output a manpage based on the help 227s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 227s --errorlevel=ERRORLEVEL 227s show errorlevel as: none, message, exception, 227s traceback 227s -i INPUT, --input=INPUT 227s read from INPUT in po, pot, xlf, xliff formats 227s -x EXCLUDE, --exclude=EXCLUDE 227s exclude names matching EXCLUDE from input paths 227s -o OUTPUT, --output=OUTPUT 227s write to OUTPUT in mo format 227s -S, --timestamp skip conversion if the output file has newer timestamp 227s --fuzzy use translations marked fuzzy 227s --nofuzzy don't use translations marked fuzzy (default) 227s ========= SMOKE TEST: /usr/bin/poconflicts =========== 227s Usage: poconflicts [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-I|--ignore-case] [-v|--invert] [--accelerator ACCELERATORS] 227s input directory is searched for PO files, PO files with name of conflicting string are output in output directory 227s 227s Conflict finder for Gettext PO localization files. See: 227s http://docs.translatehouse.org/projects/translate- 227s toolkit/en/latest/commands/poconflicts.html for examples and usage 227s instructions. 227s 227s Options: 227s --version show program's version number and exit 227s -h, --help show this help message and exit 227s --manpage output a manpage based on the help 227s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 227s --errorlevel=ERRORLEVEL 227s show errorlevel as: none, message, exception, 227s traceback 227s -i INPUT, --input=INPUT 227s read from INPUT in po format 227s -x EXCLUDE, --exclude=EXCLUDE 227s exclude names matching EXCLUDE from input paths 227s -o OUTPUT, --output=OUTPUT 227s write to OUTPUT in po format 227s -I, --ignore-case ignore case distinctions 227s -v, --invert invert the conflicts thus extracting conflicting 227s destination words 227s --accelerator=ACCELERATORS 227s ignores the given accelerator characters when matching 227s ========= SMOKE TEST: /usr/bin/pocount =========== 227s usage: pocount [-h] [--incomplete] 227s [--full | --csv | --short | --short-strings | --short-words] 227s [--no-color] 227s files [files ...] 227s 227s positional arguments: 227s files 227s 227s options: 227s -h, --help show this help message and exit 227s --incomplete skip 100% translated files. 227s 227s Output format: 227s --full (default) statistics in full, verbose format 227s --csv statistics in CSV format 227s --short same as --short-strings 227s --short-strings statistics of strings in short format - one line per file 227s --short-words statistics of words in short format - one line per file 227s --no-color show output without color 227s ========= SMOKE TEST: /usr/bin/podebug =========== 227s Usage: podebug [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 227s 227s Insert debug messages into XLIFF and Gettext PO localization files. See: 227s http://docs.translatehouse.org/projects/translate- 227s toolkit/en/latest/commands/podebug.html for examples and usage instructions. 227s 227s Options: 227s --version show program's version number and exit 227s -h, --help show this help message and exit 227s --manpage output a manpage based on the help 227s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 227s --errorlevel=ERRORLEVEL 227s show errorlevel as: none, message, exception, 227s traceback 227s -i INPUT, --input=INPUT 227s read from INPUT in po, pot, pot, tmx, xlf, xliff 227s formats 227s -x EXCLUDE, --exclude=EXCLUDE 227s exclude names matching EXCLUDE from input paths 227s -o OUTPUT, --output=OUTPUT 227s write to OUTPUT in po, pot, tmx, xlf, xliff formats 227s -S, --timestamp skip conversion if the output file has newer timestamp 227s -f FORMAT, --format=FORMAT 227s specify format string 227s --rewrite=STYLE the translation rewrite style: blank, bracket, chef, 227s classified, en, flipped, unicode, xxx 227s --ignore=APPLICATION apply tagging ignore rules for the given application: 227s gtk, kde, libreoffice, mozilla, openoffice 227s --preserveplaceholders 227s attempt to exclude characters that are part of 227s placeholders when performing character-level rewrites 227s so that consuming applications can still use the 227s placeholders to generate final output 227s ========= SMOKE TEST: /usr/bin/pofilter =========== 228s Usage: pofilter [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 228s 228s Perform quality checks on Gettext PO, XLIFF and TMX localization files. 228s Snippet files are created whenever a test fails. These can be examined, 228s corrected and merged back into the originals using pomerge. See: 228s http://docs.translatehouse.org/projects/translate- 228s toolkit/en/latest/commands/pofilter.html for examples and usage instructions 228s and http://docs.translatehouse.org/projects/translate- 228s toolkit/en/latest/commands/pofilter_tests.html for full descriptions of all 228s tests. 228s 228s Options: 228s --version show program's version number and exit 228s -h, --help show this help message and exit 228s --manpage output a manpage based on the help 228s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 228s --errorlevel=ERRORLEVEL 228s show errorlevel as: none, message, exception, 228s traceback 228s -i INPUT, --input=INPUT 228s read from INPUT in po, pot, tmx, xlf, xliff formats 228s -x EXCLUDE, --exclude=EXCLUDE 228s exclude names matching EXCLUDE from input paths 228s -o OUTPUT, --output=OUTPUT 228s write to OUTPUT in po, pot, tmx, xlf, xliff formats 228s -l, --listfilters list filters available 228s --review include units marked for review (default) 228s --noreview exclude units marked for review 228s --fuzzy include units marked fuzzy (default) 228s --nofuzzy exclude units marked fuzzy 228s --nonotes don't add notes about the errors 228s --autocorrect output automatic corrections where possible rather 228s than describing issues 228s --language=LANG set target language code (e.g. af-ZA) [required for 228s spell check and recommended in general] 228s --openoffice use the standard checks for OpenOffice translations 228s --libreoffice use the standard checks for LibreOffice translations 228s --mozilla use the standard checks for Mozilla translations 228s --drupal use the standard checks for Drupal translations 228s --gnome use the standard checks for Gnome translations 228s --kde use the standard checks for KDE translations 228s --wx use the standard checks for wxWidgets translations 228s --excludefilter=FILTER 228s don't use FILTER when filtering 228s -t FILTER, --test=FILTER 228s only use test FILTERs specified with this option when 228s filtering 228s --notranslatefile=FILE 228s read list of untranslatable words from FILE (must not 228s be translated) 228s --musttranslatefile=FILE 228s read list of translatable words from FILE (must be 228s translated) 228s --validcharsfile=FILE 228s read list of all valid characters from FILE (must be 228s in UTF-8) 228s ========= SMOKE TEST: /usr/bin/pogrep =========== 228s Usage: pogrep searchstring [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [--search SEARCHPARTS] [-I|--ignore-case] [-e|--regexp] [-v|--invert-match] [--accelerator ACCELERATOR] [-k|--keep-translations] 228s 228s Grep XLIFF, Gettext PO and TMX localization files. Matches are output to 228s snippet files of the same type which can then be reviewed and later merged 228s using :doc:`pomerge `. See: 228s http://docs.translatehouse.org/projects/translate- 228s toolkit/en/latest/commands/pogrep.html for examples and usage instructions. 228s 228s Options: 228s --version show program's version number and exit 228s -h, --help show this help message and exit 228s --manpage output a manpage based on the help 228s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 228s --errorlevel=ERRORLEVEL 228s show errorlevel as: none, message, exception, 228s traceback 228s -i INPUT, --input=INPUT 228s read from INPUT in gmo, mo, po, pot, tmx, xlf, xlff, 228s xliff formats 228s -x EXCLUDE, --exclude=EXCLUDE 228s exclude names matching EXCLUDE from input paths 228s -o OUTPUT, --output=OUTPUT 228s write to OUTPUT in gmo, mo, po, pot, tmx, xlf, xlff, 228s xliff formats 228s --search=SEARCHPARTS searches the given parts (source, target, notes and 228s locations) 228s -I, --ignore-case ignore case distinctions 228s -e, --regexp use regular expression matching 228s -v, --invert-match select non-matching lines 228s --accelerator=ACCELERATOR 228s ignores the given accelerator when matching 228s -k, --keep-translations 228s always extract units with translations 228s ========= SMOKE TEST: /usr/bin/pomerge =========== 228s Usage: pomerge [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 228s 228s Merges XLIFF and Gettext PO localization files. Snippet file produced by 228s e.g. :doc:`pogrep ` and updated by a translator can be 228s merged back into the original files. See: 228s http://docs.translatehouse.org/projects/translate- 228s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 228s 228s Options: 228s --version show program's version number and exit 228s -h, --help show this help message and exit 228s --manpage output a manpage based on the help 228s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 228s --errorlevel=ERRORLEVEL 228s show errorlevel as: none, message, exception, 228s traceback 228s -i INPUT, --input=INPUT 228s read from INPUT in po, pot, pot, xlf, xliff formats 228s -x EXCLUDE, --exclude=EXCLUDE 228s exclude names matching EXCLUDE from input paths 228s -o OUTPUT, --output=OUTPUT 228s write to OUTPUT in po, pot, pot, xlf, xliff formats 228s -t TEMPLATE, --template=TEMPLATE 228s read from TEMPLATE in po, pot, pot, xlf, xliff formats 228s -S, --timestamp skip conversion if the output file has newer timestamp 228s --mergeblanks=MERGEBLANKS 228s whether to overwrite existing translations with blank 228s translations (yes/no). Default is yes. 228s --mergefuzzy=MERGEFUZZY 228s whether to consider fuzzy translations from input 228s (yes/no). Default is yes. 228s --mergecomments=MERGECOMMENTS 228s whether to merge comments as well as translations 228s (yes/no). Default is yes. 228s ========= SMOKE TEST: /usr/bin/pomigrate2 =========== 228s Usage pomigrate2 [options] 228s 228s Options: 228s -F|--use-fuzzy-matching - use fuzzy algorithms when merging to attempt to match strings 228s -C|--use-compendium - create and use a compendium built from the migrating files 228s -C|--use-compendium=some-compendium.po 228s - use an external compendium during the migration 228s --no-wrap - do not wrap long lines 228s --locale=lang - set locale for newly born files 228s -q|--quiet - suppress most output 228s -p|--pot2po - use pot2po instead of msgmerge to migrate 228s ========= SMOKE TEST: /usr/bin/popuretext =========== 228s Usage: popuretext ( -P pot-dir | po-dir ) file.txt [accelerator] 228s ========= SMOKE TEST: /usr/bin/poreencode =========== 228s Usage: poreencode 228s eg: poreencode UTF-8 af/ 228s ========= SMOKE TEST: /usr/bin/porestructure =========== 228s Usage: porestructure [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 228s input directory is searched for PO files with (poconflicts) comments, all entries are written to files in a directory structure for pomerge 228s 228s Restructure Gettxt PO files produced by :doc:`poconflicts 228s ` into the original directory tree for merging using 228s :doc:`pomerge `. See: 228s http://docs.translatehouse.org/projects/translate- 228s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 228s 228s Options: 228s --version show program's version number and exit 228s -h, --help show this help message and exit 228s --manpage output a manpage based on the help 228s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 228s --errorlevel=ERRORLEVEL 228s show errorlevel as: none, message, exception, 228s traceback 228s -i INPUT, --input=INPUT 228s read from INPUT in po format 228s -x EXCLUDE, --exclude=EXCLUDE 228s exclude names matching EXCLUDE from input paths 228s -o OUTPUT, --output=OUTPUT 228s write to OUTPUT in po format 228s ========= SMOKE TEST: /usr/bin/posegment =========== 228s Usage: posegment [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 228s 228s Segment Gettext PO, XLIFF and TMX localization files at the sentence level. 228s See: http://docs.translatehouse.org/projects/translate- 228s toolkit/en/latest/commands/posegment.html for examples and usage instructions. 228s 228s Options: 228s --version show program's version number and exit 228s -h, --help show this help message and exit 228s --manpage output a manpage based on the help 228s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 228s --errorlevel=ERRORLEVEL 228s show errorlevel as: none, message, exception, 228s traceback 228s -i INPUT, --input=INPUT 228s read from INPUT in po, pot, tmx, xlf, xliff formats 228s -x EXCLUDE, --exclude=EXCLUDE 228s exclude names matching EXCLUDE from input paths 228s -o OUTPUT, --output=OUTPUT 228s write to OUTPUT in po, pot, tmx, xlf, xliff formats 228s -S, --timestamp skip conversion if the output file has newer timestamp 228s -P, --pot output PO Templates (.pot) rather than PO files (.po) 228s -l LANG, --language=LANG 228s the target language code 228s --source-language=LANG 228s the source language code (default 'en') 228s --keepspaces Disable automatic stripping of whitespace 228s --only-aligned Removes units where sentence number does not 228s correspond 228s ========= SMOKE TEST: /usr/bin/poswap =========== 229s Usage: poswap [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 229s 229s Builds a new translation file with the target of the input language as source 229s language. .. note:: Ensure that the two po files correspond 100% to the same 229s pot file before using this. To translate Kurdish (ku) through French:: 229s poswap -i fr/ -t ku -o fr-ku To convert the fr-ku files back to en-ku:: 229s poswap --reverse -i fr/ -t fr-ku -o en-ku See: 229s http://docs.translatehouse.org/projects/translate- 229s toolkit/en/latest/commands/poswap.html for examples and usage instructions. 229s 229s Options: 229s --version show program's version number and exit 229s -h, --help show this help message and exit 229s --manpage output a manpage based on the help 229s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 229s --errorlevel=ERRORLEVEL 229s show errorlevel as: none, message, exception, 229s traceback 229s -i INPUT, --input=INPUT 229s read from INPUT in po, pot formats 229s -x EXCLUDE, --exclude=EXCLUDE 229s exclude names matching EXCLUDE from input paths 229s -o OUTPUT, --output=OUTPUT 229s write to OUTPUT in po, pot formats 229s -t TEMPLATE, --template=TEMPLATE 229s read from TEMPLATE in po, pot, pot formats 229s -S, --timestamp skip conversion if the output file has newer timestamp 229s --reverse reverse the process of intermediate language 229s conversion 229s ========= SMOKE TEST: /usr/bin/pot2po =========== 229s Usage: pot2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 229s 229s Convert template files (like .pot or template .xlf files) to translation 229s files, preserving existing translations. See: 229s http://docs.translatehouse.org/projects/translate- 229s toolkit/en/latest/commands/pot2po.html for examples and usage instructions. 229s 229s Options: 229s --version show program's version number and exit 229s -h, --help show this help message and exit 229s --manpage output a manpage based on the help 229s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 229s --errorlevel=ERRORLEVEL 229s show errorlevel as: none, message, exception, 229s traceback 229s -i INPUT, --input=INPUT 229s read from INPUT in catkeys, lang, pot, ts, xlf, xliff 229s formats 229s -x EXCLUDE, --exclude=EXCLUDE 229s exclude names matching EXCLUDE from input paths 229s -o OUTPUT, --output=OUTPUT 229s write to OUTPUT in catkeys, lang, po, pot, ts, xlf, 229s xliff formats 229s -t TEMPLATE, --template=TEMPLATE 229s read from TEMPLATE in catkeys, lang, po, pot, ts, xlf, 229s xliff formats 229s -S, --timestamp skip conversion if the output file has newer timestamp 229s -P, --pot output PO Templates (.pot) rather than PO files (.po) 229s --tm=TM The file to use as translation memory when fuzzy 229s matching 229s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 229s The minimum similarity for inclusion (default: 75%) 229s --nofuzzymatching Disable fuzzy matching 229s ========= SMOKE TEST: /usr/bin/poterminology =========== 229s Usage: poterminology [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-u|--update UPDATEFILE] [-S|--stopword-list STOPFILE] [-F|--fold-titlecase] [-C|--preserve-case] [-I|--ignore-case] [--accelerator ACCELERATORS] [-t|--term-words LENGTH] [--nonstop-needed MIN] [--inputs-needed MIN] [--fullmsg-needed MIN] [--substr-needed MIN] [--locs-needed MIN] [--sort ORDER] [--source-language LANG] [-v|--invert] 229s input directory is searched for PO files, terminology PO file is output file 229s 229s Create a terminology file by reading a set of .po or .pot files to produce a 229s pootle-terminology.pot. See: 229s http://docs.translatehouse.org/projects/translate- 229s toolkit/en/latest/commands/poterminology.html for examples and usage 229s instructions. 229s 229s Options: 229s --version show program's version number and exit 229s -h, --help show this help message and exit 229s --manpage output a manpage based on the help 229s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 229s --errorlevel=ERRORLEVEL 229s show errorlevel as: none, message, exception, 229s traceback 229s -i INPUT, --input=INPUT 229s read from INPUT in po, pot formats 229s -x EXCLUDE, --exclude=EXCLUDE 229s exclude names matching EXCLUDE from input paths 229s -o OUTPUT, --output=OUTPUT 229s write to OUTPUT in po, pot formats 229s -u UPDATEFILE, --update=UPDATEFILE 229s update terminology in UPDATEFILE 229s -S STOPFILE, --stopword-list=STOPFILE 229s read stopword (term exclusion) list from STOPFILE 229s (default /usr/share/pyshared/translate/share/stoplist- 229s en) 229s -F, --fold-titlecase fold "Title Case" to lowercase (default) 229s -C, --preserve-case preserve all uppercase/lowercase 229s -I, --ignore-case make all terms lowercase 229s --accelerator=ACCELERATORS 229s ignore the given accelerator characters when matching 229s -t LENGTH, --term-words=LENGTH 229s generate terms of up to LENGTH words (default 3) 229s --nonstop-needed=MIN omit terms with less than MIN nonstop words (default 229s 1) 229s --inputs-needed=MIN omit terms appearing in less than MIN input files 229s (default 2, or 1 if only one input file) 229s --fullmsg-needed=MIN omit full message terms appearing in less than MIN 229s different messages (default 1) 229s --substr-needed=MIN omit substring-only terms appearing in less than MIN 229s different messages (default 2) 229s --locs-needed=MIN omit terms appearing in less than MIN different 229s original source files (default 2) 229s --sort=ORDER output sort order(s): frequency, dictionary, length 229s (may repeat option, default is all in above order) 229s --source-language=LANG 229s the source language code (default 'en') 229s -v, --invert invert the source and target languages for terminology 229s ========= SMOKE TEST: /usr/bin/pretranslate =========== 229s Usage: pretranslate [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 229s 229s Fill localization files with suggested translations based on translation 229s memory and existing translations. See: 229s http://docs.translatehouse.org/projects/translate- 229s toolkit/en/latest/commands/pretranslate.html for examples and usage 229s instructions. 229s 229s Options: 229s --version show program's version number and exit 229s -h, --help show this help message and exit 229s --manpage output a manpage based on the help 229s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 229s --errorlevel=ERRORLEVEL 229s show errorlevel as: none, message, exception, 229s traceback 229s -i INPUT, --input=INPUT 229s read from INPUT in po, pot, pot, xlf, xliff formats 229s -x EXCLUDE, --exclude=EXCLUDE 229s exclude names matching EXCLUDE from input paths 229s -o OUTPUT, --output=OUTPUT 229s write to OUTPUT in po, pot, xlf, xliff formats 229s -t TEMPLATE, --template=TEMPLATE 229s read from TEMPLATE in po, pot, xlf, xliff formats 229s -S, --timestamp skip conversion if the output file has newer timestamp 229s --tm=TM The file to use as translation memory when fuzzy 229s matching 229s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 229s The minimum similarity for inclusion (default: 75%) 229s --nofuzzymatching Disable fuzzy matching 229s ========= SMOKE TEST: /usr/bin/prop2po =========== 230s Usage: prop2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 230s 230s Convert Java/Mozilla .properties files to Gettext PO localization files. 230s See: http://docs.translatehouse.org/projects/translate- 230s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 230s 230s Options: 230s --version show program's version number and exit 230s -h, --help show this help message and exit 230s --manpage output a manpage based on the help 230s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 230s --errorlevel=ERRORLEVEL 230s show errorlevel as: none, message, exception, 230s traceback 230s -i INPUT, --input=INPUT 230s read from INPUT in lang, properties, strings formats 230s -x EXCLUDE, --exclude=EXCLUDE 230s exclude names matching EXCLUDE from input paths 230s -o OUTPUT, --output=OUTPUT 230s write to OUTPUT in po, pot formats 230s -t TEMPLATE, --template=TEMPLATE 230s read from TEMPLATE in lang, properties, strings 230s formats 230s -S, --timestamp skip conversion if the output file has newer timestamp 230s -P, --pot output PO Templates (.pot) rather than PO files (.po) 230s --personality=TYPE override the input file format: java, java-utf8, java- 230s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 230s strings, strings-utf8, joomla (for .properties files, 230s default: java) 230s --encoding=ENCODING override the encoding set by the personality 230s --duplicates=DUPLICATESTYLE 230s what to do with duplicate strings (identical source 230s text): merge, msgctxt (default: 'msgctxt') 230s ========= SMOKE TEST: /usr/bin/pydiff =========== 230s usage: pydiff [-h] [-i] [-U NUM] [-r] [-N] [--unidirectional-new-file] [-s] 230s [-x PAT] [--fromcontains TEXT] [--tocontains TEXT] 230s [--contains TEXT] [-I] [--accelerator ACCELERATORS] 230s fromfile tofile 230s 230s positional arguments: 230s fromfile 230s tofile 230s 230s options: 230s -h, --help show this help message and exit 230s -i, --ignore-case Ignore case differences in file contents. 230s -U NUM, --unified NUM 230s Output NUM (default 3) lines of unified context 230s -r, --recursive Recursively compare any subdirectories found. 230s -N, --new-file Treat absent files as empty. 230s --unidirectional-new-file 230s Treat absent first files as empty. 230s -s, --report-identical-files 230s Report when two files are the same. 230s -x PAT, --exclude PAT 230s Exclude files that match PAT. 230s --fromcontains TEXT Only show changes where fromfile contains TEXT 230s --tocontains TEXT Only show changes where tofile contains TEXT 230s --contains TEXT Only show changes where fromfile or tofile contains 230s TEXT 230s -I, --ignore-case-contains 230s Ignore case differences when matching any of the 230s changes 230s --accelerator ACCELERATORS 230s ignores the given accelerator characters when matching 230s ========= SMOKE TEST: /usr/bin/pypo2phppo =========== 230s Usage: pypo2phppo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 230s 230s Convert Python format .po files to PHP format .po files. 230s 230s Options: 230s --version show program's version number and exit 230s -h, --help show this help message and exit 230s --manpage output a manpage based on the help 230s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 230s --errorlevel=ERRORLEVEL 230s show errorlevel as: none, message, exception, 230s traceback 230s -i INPUT, --input=INPUT 230s read from INPUT in po, pot formats 230s -x EXCLUDE, --exclude=EXCLUDE 230s exclude names matching EXCLUDE from input paths 230s -o OUTPUT, --output=OUTPUT 230s write to OUTPUT in po, pot formats 230s -S, --timestamp skip conversion if the output file has newer timestamp 230s ========= SMOKE TEST: /usr/bin/rc2po =========== 230s Usage: rc2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 230s 230s Convert Windows RC files to Gettext PO localization files. See: 230s http://docs.translatehouse.org/projects/translate- 230s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 230s 230s Options: 230s --version show program's version number and exit 230s -h, --help show this help message and exit 230s --manpage output a manpage based on the help 230s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 230s --errorlevel=ERRORLEVEL 230s show errorlevel as: none, message, exception, 230s traceback 230s -i INPUT, --input=INPUT 230s read from INPUT in nls, rc formats 230s -x EXCLUDE, --exclude=EXCLUDE 230s exclude names matching EXCLUDE from input paths 230s -o OUTPUT, --output=OUTPUT 230s write to OUTPUT in po, pot formats 230s -t TEMPLATE, --template=TEMPLATE 230s read from TEMPLATE in nls, rc formats 230s -S, --timestamp skip conversion if the output file has newer timestamp 230s -P, --pot output PO Templates (.pot) rather than PO files (.po) 230s --charset=CHARSET charset to use to decode the RC files (autodetection 230s is used by default) 230s -l LANG, --lang=LANG LANG entry (default: None) 230s --sublang=SUBLANG SUBLANG entry (default: None) 230s --duplicates=DUPLICATESTYLE 230s what to do with duplicate strings (identical source 230s text): merge, msgctxt (default: 'msgctxt') 230s ========= SMOKE TEST: /usr/bin/resx2po =========== 231s Usage: resx2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 231s 231s Convert .Net Resource (.resx) to Gettext PO localisation files. See: 231s http://docs.translatehouse.org/projects/translate- 231s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 231s 231s Options: 231s --version show program's version number and exit 231s -h, --help show this help message and exit 231s --manpage output a manpage based on the help 231s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 231s --errorlevel=ERRORLEVEL 231s show errorlevel as: none, message, exception, 231s traceback 231s -i INPUT, --input=INPUT 231s read from INPUT in resx format 231s -x EXCLUDE, --exclude=EXCLUDE 231s exclude names matching EXCLUDE from input paths 231s -o OUTPUT, --output=OUTPUT 231s write to OUTPUT in po, pot formats 231s -t TEMPLATE, --template=TEMPLATE 231s read from TEMPLATE in resx format 231s -S, --timestamp skip conversion if the output file has newer timestamp 231s -P, --pot output PO Templates (.pot) rather than PO files (.po) 231s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 231s everything) 231s --duplicates=DUPLICATESTYLE 231s what to do with duplicate strings (identical source 231s text): merge, msgctxt (default: 'msgctxt') 231s ========= SMOKE TEST: /usr/bin/sub2po =========== 231s Usage: sub2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 231s 231s Convert subtitle files to Gettext PO localization files. See: 231s http://docs.translatehouse.org/projects/translate- 231s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 231s 231s Options: 231s --version show program's version number and exit 231s -h, --help show this help message and exit 231s --manpage output a manpage based on the help 231s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 231s --errorlevel=ERRORLEVEL 231s show errorlevel as: none, message, exception, 231s traceback 231s -i INPUT, --input=INPUT 231s read from INPUT in ass, srt, ssa, sub formats 231s -x EXCLUDE, --exclude=EXCLUDE 231s exclude names matching EXCLUDE from input paths 231s -o OUTPUT, --output=OUTPUT 231s write to OUTPUT in po, pot formats 231s -t TEMPLATE, --template=TEMPLATE 231s read from TEMPLATE in ass, srt, ssa, sub formats 231s -S, --timestamp skip conversion if the output file has newer timestamp 231s -P, --pot output PO Templates (.pot) rather than PO files (.po) 231s --duplicates=DUPLICATESTYLE 231s what to do with duplicate strings (identical source 231s text): merge, msgctxt (default: 'msgctxt') 231s ========= SMOKE TEST: /usr/bin/symb2po =========== 231s Usage: symb2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 231s 231s Convert Symbian localisation files to Gettext PO localization files. See: 231s http://docs.translatehouse.org/projects/translate- 231s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 231s 231s Options: 231s --version show program's version number and exit 231s -h, --help show this help message and exit 231s --manpage output a manpage based on the help 231s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 231s --errorlevel=ERRORLEVEL 231s show errorlevel as: none, message, exception, 231s traceback 231s -i INPUT, --input=INPUT 231s read from INPUT in r01 format 231s -x EXCLUDE, --exclude=EXCLUDE 231s exclude names matching EXCLUDE from input paths 231s -o OUTPUT, --output=OUTPUT 231s write to OUTPUT in po, pot formats 231s -t TEMPLATE, --template=TEMPLATE 231s read from TEMPLATE in 231s -S, --timestamp skip conversion if the output file has newer timestamp 231s -P, --pot output PO Templates (.pot) rather than PO files (.po) 231s --duplicates=DUPLICATESTYLE 231s what to do with duplicate strings (identical source 231s text): merge, msgctxt (default: 'msgctxt') 231s ========= SMOKE TEST: /usr/bin/tbx2po =========== 231s Usage: tbx2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 231s 231s Convert TermBase eXchange (.tbx) glossary file into a Gettext PO file. See: 231s http://docs.translatehouse.org/projects/translate- 231s toolkit/en/latest/commands/tbx2po.html for examples and usage instructions 231s 231s Options: 231s --version show program's version number and exit 231s -h, --help show this help message and exit 231s --manpage output a manpage based on the help 231s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 231s --errorlevel=ERRORLEVEL 231s show errorlevel as: none, message, exception, 231s traceback 231s -i INPUT, --input=INPUT 231s read from INPUT in tbx format 231s -x EXCLUDE, --exclude=EXCLUDE 231s exclude names matching EXCLUDE from input paths 231s -o OUTPUT, --output=OUTPUT 231s write to OUTPUT in po, pot formats 231s -S, --timestamp skip conversion if the output file has newer timestamp 231s ========= SMOKE TEST: /usr/bin/tiki2po =========== 231s Usage: tiki2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 231s 231s Convert TikiWiki's language.php files to Gettext PO localization files. See: 231s http://docs.translatehouse.org/projects/translate- 231s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 231s 231s Options: 231s --version show program's version number and exit 231s -h, --help show this help message and exit 231s --manpage output a manpage based on the help 231s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 231s --errorlevel=ERRORLEVEL 231s show errorlevel as: none, message, exception, 231s traceback 231s -i INPUT, --input=INPUT 231s read from INPUT in php format 231s -x EXCLUDE, --exclude=EXCLUDE 231s exclude names matching EXCLUDE from input paths 231s -o OUTPUT, --output=OUTPUT 231s write to OUTPUT in po, pot formats 231s -S, --timestamp skip conversion if the output file has newer timestamp 231s --include-unused Include strings in the unused section 231s ========= SMOKE TEST: /usr/bin/tmserver =========== 231s usage: tmserver [-h] [-d TMDBFILE] [-f TMFILES] [-t TARGET_LANG] 231s [-s SOURCE_LANG] [-b BIND] [-p PORT] 231s [--max-candidates MAX_CANDIDATES] 231s [--min-similarity MIN_SIMILARITY] [--max-length MAX_LENGTH] 231s [--debug] 231s 231s options: 231s -h, --help show this help message and exit 231s -d TMDBFILE, --tmdb TMDBFILE 231s translation memory database file 231s -f TMFILES, --import-translation-file TMFILES 231s translation file to import into the database 231s -t TARGET_LANG, --import-target-lang TARGET_LANG 231s target language of translation files 231s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 231s source language of translation files 231s -b BIND, --bind BIND address to bind server to (default: localhost) 231s -p PORT, --port PORT port to listen on (default: 8888) 231s --max-candidates MAX_CANDIDATES 231s Maximum number of candidates 231s --min-similarity MIN_SIMILARITY 231s minimum similarity 231s --max-length MAX_LENGTH 231s Maxmimum string length 231s --debug enable debugging features 232s ========= SMOKE TEST: /usr/bin/ts2po =========== 232s Usage: ts2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 232s 232s Convert Qt Linguist (.ts) files to Gettext PO localization files. See: 232s http://docs.translatehouse.org/projects/translate- 232s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 232s 232s Options: 232s --version show program's version number and exit 232s -h, --help show this help message and exit 232s --manpage output a manpage based on the help 232s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 232s --errorlevel=ERRORLEVEL 232s show errorlevel as: none, message, exception, 232s traceback 232s -i INPUT, --input=INPUT 232s read from INPUT in ts format 232s -x EXCLUDE, --exclude=EXCLUDE 232s exclude names matching EXCLUDE from input paths 232s -o OUTPUT, --output=OUTPUT 232s write to OUTPUT in po, pot formats 232s -S, --timestamp skip conversion if the output file has newer timestamp 232s -P, --pot output PO Templates (.pot) rather than PO files (.po) 232s --duplicates=DUPLICATESTYLE 232s what to do with duplicate strings (identical source 232s text): merge, msgctxt (default: 'msgctxt') 232s ========= SMOKE TEST: /usr/bin/txt2po =========== 232s Usage: txt2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 232s 232s Convert plain text (.txt) files to Gettext PO localization files. See: 232s http://docs.translatehouse.org/projects/translate- 232s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 232s 232s Options: 232s --version show program's version number and exit 232s -h, --help show this help message and exit 232s --manpage output a manpage based on the help 232s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 232s --errorlevel=ERRORLEVEL 232s show errorlevel as: none, message, exception, 232s traceback 232s -i INPUT, --input=INPUT 232s read from INPUT in *, txt formats 232s -x EXCLUDE, --exclude=EXCLUDE 232s exclude names matching EXCLUDE from input paths 232s -o OUTPUT, --output=OUTPUT 232s write to OUTPUT in po, pot formats 232s -S, --timestamp skip conversion if the output file has newer timestamp 232s -P, --pot output PO Templates (.pot) rather than PO files (.po) 232s --encoding=ENCODING The encoding of the input file (default: UTF-8) 232s --flavour=FLAVOUR The flavour of text file: plain (default), dokuwiki, 232s mediawiki 232s --no-segmentation Don't segment the file, treat it like a single message 232s --duplicates=DUPLICATESTYLE 232s what to do with duplicate strings (identical source 232s text): merge, msgctxt (default: 'msgctxt') 232s ========= SMOKE TEST: /usr/bin/web2py2po =========== 232s Usage: web2py2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 232s 232s Convert web2py translation dictionaries (.py) to GNU/gettext PO files. See: 232s http://docs.translatehouse.org/projects/translate- 232s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 232s 232s Options: 232s --version show program's version number and exit 232s -h, --help show this help message and exit 232s --manpage output a manpage based on the help 232s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 232s --errorlevel=ERRORLEVEL 232s show errorlevel as: none, message, exception, 232s traceback 232s -i INPUT, --input=INPUT 232s read from INPUT in py format 232s -x EXCLUDE, --exclude=EXCLUDE 232s exclude names matching EXCLUDE from input paths 232s -o OUTPUT, --output=OUTPUT 232s write to OUTPUT in po, pot formats 232s -S, --timestamp skip conversion if the output file has newer timestamp 232s -P, --pot output PO Templates (.pot) rather than PO files (.po) 232s --duplicates=DUPLICATESTYLE 232s what to do with duplicate strings (identical source 232s text): merge, msgctxt (default: 'msgctxt') 232s ========= SMOKE TEST: /usr/bin/xliff2odf =========== 232s Usage: xliff2odf [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 232s 232s Convert XLIFF translation files to OpenDocument (ODF) files. See: 232s http://docs.translatehouse.org/projects/translate- 232s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 232s 232s Options: 232s --version show program's version number and exit 232s -h, --help show this help message and exit 232s --manpage output a manpage based on the help 232s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 232s --errorlevel=ERRORLEVEL 232s show errorlevel as: none, message, exception, 232s traceback 232s -i INPUT, --input=INPUT 232s read from INPUT in xlf format 232s -x EXCLUDE, --exclude=EXCLUDE 232s exclude names matching EXCLUDE from input paths 232s -o OUTPUT, --output=OUTPUT 232s write to OUTPUT in odc, odf, odg, odi, odm, odp, ods, 232s odt, otc, otf, otg, oth, oti, otp, ots, ott formats 232s -t TEMPLATE, --template=TEMPLATE 232s read from TEMPLATE in odc, odf, odg, odi, odm, odp, 232s ods, odt, otc, otf, otg, oth, oti, otp, ots, ott 232s formats 232s -S, --timestamp skip conversion if the output file has newer timestamp 232s ========= SMOKE TEST: /usr/bin/xliff2oo =========== 233s Usage: xliff2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 233s 233s Convert XLIFF localization files to an OpenOffice.org (SDF) localization 233s file. See: http://docs.translatehouse.org/projects/translate- 233s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 233s 233s Options: 233s --version show program's version number and exit 233s -h, --help show this help message and exit 233s --manpage output a manpage based on the help 233s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 233s --errorlevel=ERRORLEVEL 233s show errorlevel as: none, message, exception, 233s traceback 233s -i INPUT, --input=INPUT 233s read from INPUT in po, pot, xlf, xliff formats 233s -x EXCLUDE, --exclude=EXCLUDE 233s exclude names matching EXCLUDE from input paths 233s -o OUTPUT, --output=OUTPUT 233s write to OUTPUT in oo, sdf formats 233s -t TEMPLATE, --template=TEMPLATE 233s read from TEMPLATE in oo, sdf formats 233s -S, --timestamp skip conversion if the output file has newer timestamp 233s -l LANG, --language=LANG 233s set target language code (e.g. af-ZA) [required] 233s --source-language=LANG 233s set source language code (default en-US) 233s -T, --keeptimestamp don't change the timestamps of the strings 233s --nonrecursiveoutput don't treat the output oo as a recursive store 233s --nonrecursivetemplate 233s don't treat the template oo as a recursive store 233s --skipsource don't output the source language, but fallback to it 233s where needed 233s --filteraction=ACTION 233s action on pofilter failure: none (default), warn, 233s exclude-serious, exclude-all 233s --fuzzy use translations marked fuzzy 233s --nofuzzy don't use translations marked fuzzy (default) 233s --multifile=MULTIFILESTYLE 233s how to split po/pot files (single, toplevel or 233s onefile) 233s ========= SMOKE TEST: /usr/bin/xliff2po =========== 233s Usage: xliff2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 233s 233s Convert XLIFF localization files to Gettext PO localization files. See: 233s http://docs.translatehouse.org/projects/translate- 233s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 233s 233s Options: 233s --version show program's version number and exit 233s -h, --help show this help message and exit 233s --manpage output a manpage based on the help 233s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 233s --errorlevel=ERRORLEVEL 233s show errorlevel as: none, message, exception, 233s traceback 233s -i INPUT, --input=INPUT 233s read from INPUT in xlf, xliff formats 233s -x EXCLUDE, --exclude=EXCLUDE 233s exclude names matching EXCLUDE from input paths 233s -o OUTPUT, --output=OUTPUT 233s write to OUTPUT in po, pot formats 233s -S, --timestamp skip conversion if the output file has newer timestamp 233s -P, --pot output PO Templates (.pot) rather than PO files (.po) 233s --duplicates=DUPLICATESTYLE 233s what to do with duplicate strings (identical source 233s text): merge, msgctxt (default: 'msgctxt') 233s ========= SMOKE TEST: /usr/bin/yaml2po =========== 233s Usage: yaml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] [-P|--pot] 233s 233s Convert YAML files to Gettext PO localization files. See: 233s http://docs.translatehouse.org/projects/translate- 233s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 233s 233s Options: 233s --version show program's version number and exit 233s -h, --help show this help message and exit 233s --manpage output a manpage based on the help 233s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 233s --errorlevel=ERRORLEVEL 233s show errorlevel as: none, message, exception, 233s traceback 233s -i INPUT, --input=INPUT 233s read from INPUT in yaml, yml formats 233s -x EXCLUDE, --exclude=EXCLUDE 233s exclude names matching EXCLUDE from input paths 233s -o OUTPUT, --output=OUTPUT 233s write to OUTPUT in po, pot formats 233s -t TEMPLATE, --template=TEMPLATE 233s read from TEMPLATE in yaml, yml formats 233s -S, --timestamp skip conversion if the output file has newer timestamp 233s -P, --pot output PO Templates (.pot) rather than PO files (.po) 233s --duplicates=DUPLICATESTYLE 233s what to do with duplicate strings (identical source 233s text): merge, msgctxt (default: 'msgctxt') 234s autopkgtest [13:50:03]: test translate-toolkit: -----------------------] 236s translate-toolkit PASS 236s autopkgtest [13:50:05]: test translate-toolkit: - - - - - - - - - - results - - - - - - - - - - 238s autopkgtest [13:50:07]: test python3-translate: preparing testbed 955s autopkgtest [14:02:04]: testbed dpkg architecture: arm64 955s autopkgtest [14:02:04]: testbed apt version: 2.9.3 955s autopkgtest [14:02:04]: @@@@@@@@@@@@@@@@@@@@ test bed setup 956s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 956s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [1680 B] 956s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [338 kB] 956s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.2 kB] 956s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 956s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main arm64 Packages [67.9 kB] 956s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted arm64 Packages [31.8 kB] 956s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe arm64 Packages [305 kB] 956s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse arm64 Packages [9192 B] 956s Fetched 916 kB in 1s (1156 kB/s) 956s Reading package lists... 959s Reading package lists... 960s Building dependency tree... 960s Reading state information... 960s Calculating upgrade... 960s The following packages will be upgraded: 960s bash 961s 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 961s Need to get 781 kB of archives. 961s After this operation, 0 B of additional disk space will be used. 961s Get:1 http://ftpmaster.internal/ubuntu oracular/main arm64 bash arm64 5.2.21-2.1ubuntu1 [781 kB] 962s Fetched 781 kB in 0s (1582 kB/s) 962s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78200 files and directories currently installed.) 962s Preparing to unpack .../bash_5.2.21-2.1ubuntu1_arm64.deb ... 962s Unpacking bash (5.2.21-2.1ubuntu1) over (5.2.21-2ubuntu5) ... 962s Setting up bash (5.2.21-2.1ubuntu1) ... 962s update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode 962s Processing triggers for debianutils (5.18) ... 962s Processing triggers for install-info (7.1-3build2) ... 962s Processing triggers for man-db (2.12.1-1) ... 964s Reading package lists... 964s Building dependency tree... 964s Reading state information... 964s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 965s Hit:1 http://ftpmaster.internal/ubuntu oracular InRelease 965s Hit:2 http://ftpmaster.internal/ubuntu oracular-updates InRelease 965s Hit:3 http://ftpmaster.internal/ubuntu oracular-security InRelease 965s Hit:4 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 967s Reading package lists... 967s Reading package lists... 967s Building dependency tree... 967s Reading state information... 967s Calculating upgrade... 968s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 968s Reading package lists... 968s Building dependency tree... 968s Reading state information... 969s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 973s Reading package lists... 973s Building dependency tree... 973s Reading state information... 973s Starting pkgProblemResolver with broken count: 0 973s Starting 2 pkgProblemResolver with broken count: 0 973s Done 974s The following additional packages will be installed: 974s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 974s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 974s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 974s python3-aeidon python3-all python3-bs4 python3-cheroot python3-dateutil 974s python3-diff-match-patch python3-enchant python3-iniconfig python3-iniparse 974s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 974s python3-more-itertools python3-packaging python3-phply python3-pluggy 974s python3-ply python3-pycountry python3-pytest python3-rapidfuzz 974s python3-ruamel.yaml python3-ruamel.yaml.clib python3-simplejson 974s python3-soupsieve python3-syrupy python3-translate python3-vobject 974s python3-xapian subversion 974s Suggested packages: 974s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 974s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 974s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 974s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 974s db5.3-util libapache2-mod-svn subversion-tools 974s Recommended packages: 974s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 974s python3-cssselect python3-html5lib 974s The following NEW packages will be installed: 974s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 974s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 974s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 974s libxslt1.1 python3-aeidon python3-all python3-bs4 python3-cheroot 974s python3-dateutil python3-diff-match-patch python3-enchant python3-iniconfig 974s python3-iniparse python3-jaraco.functools python3-levenshtein python3-lxml 974s python3-mistletoe python3-more-itertools python3-packaging python3-phply 974s python3-pluggy python3-ply python3-pycountry python3-pytest 974s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 974s python3-simplejson python3-soupsieve python3-syrupy python3-translate 974s python3-vobject python3-xapian subversion 974s 0 upgraded, 47 newly installed, 0 to remove and 0 not upgraded. 974s Need to get 10.2 MB/10.2 MB of archives. 974s After this operation, 47.6 MB of additional disk space will be used. 974s Get:1 /tmp/autopkgtest.qvxWnj/2-autopkgtest-satdep.deb autopkgtest-satdep arm64 0 [876 B] 976s Get:2 http://ftpmaster.internal/ubuntu oracular/main arm64 emacsen-common all 3.0.5 [12.1 kB] 976s Get:3 http://ftpmaster.internal/ubuntu oracular/main arm64 dictionaries-common all 1.29.7 [188 kB] 976s Get:4 http://ftpmaster.internal/ubuntu oracular/main arm64 libgomp1 arm64 14.1.0-1ubuntu1 [144 kB] 976s Get:5 http://ftpmaster.internal/ubuntu oracular/main arm64 gettext arm64 0.21-14ubuntu2 [845 kB] 976s Get:6 http://ftpmaster.internal/ubuntu oracular/main arm64 hunspell-en-us all 1:2020.12.07-2 [280 kB] 976s Get:7 http://ftpmaster.internal/ubuntu oracular/main arm64 libapr1t64 arm64 1.7.2-3.2 [105 kB] 976s Get:8 http://ftpmaster.internal/ubuntu oracular/main arm64 libaprutil1t64 arm64 1.6.3-1.1ubuntu7 [93.9 kB] 976s Get:9 http://ftpmaster.internal/ubuntu oracular/main arm64 libaspell15 arm64 0.60.8.1-1build1 [316 kB] 976s Get:10 http://ftpmaster.internal/ubuntu oracular/main arm64 libhunspell-1.7-0 arm64 1.7.2+really1.7.2-10build3 [274 kB] 976s Get:11 http://ftpmaster.internal/ubuntu oracular/main arm64 libenchant-2-2 arm64 2.3.3-2build2 [50.3 kB] 976s Get:12 http://ftpmaster.internal/ubuntu oracular/main arm64 libexttextcat-data all 3.4.7-1build1 [193 kB] 976s Get:13 http://ftpmaster.internal/ubuntu oracular/universe arm64 libserf-1-1 arm64 1.3.10-2 [48.6 kB] 976s Get:14 http://ftpmaster.internal/ubuntu oracular/universe arm64 libutf8proc3 arm64 2.9.0-1build1 [71.1 kB] 976s Get:15 http://ftpmaster.internal/ubuntu oracular/universe arm64 libsvn1 arm64 1.14.3-1build4 [1339 kB] 976s Get:16 http://ftpmaster.internal/ubuntu oracular/universe arm64 libxapian30 arm64 1.4.22-1build1 [680 kB] 976s Get:17 http://ftpmaster.internal/ubuntu oracular/main arm64 libxslt1.1 arm64 1.1.39-0exp1build1 [166 kB] 976s Get:18 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-aeidon all 1.11-2 [221 kB] 976s Get:19 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-all arm64 3.12.3-0ubuntu1 [888 B] 976s Get:20 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-soupsieve all 2.5-1 [33.0 kB] 976s Get:21 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-bs4 all 4.12.3-1 [109 kB] 976s Get:22 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-more-itertools all 10.2.0-1 [52.9 kB] 976s Get:23 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-jaraco.functools all 4.0.0-1 [10.7 kB] 976s Get:24 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 976s Get:25 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-dateutil all 2.9.0-2 [80.3 kB] 976s Get:26 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-diff-match-patch all 20230430-1 [33.1 kB] 976s Get:27 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-enchant all 3.2.2-1 [34.0 kB] 976s Get:28 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-iniconfig all 1.1.1-2 [6024 B] 976s Get:29 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-rapidfuzz arm64 3.6.2+ds-3 [990 kB] 976s Get:30 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-levenshtein arm64 0.25.1-3 [108 kB] 976s Get:31 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-lxml arm64 5.2.1-1 [1179 kB] 976s Get:32 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-mistletoe all 1.3.0-1 [38.0 kB] 976s Get:33 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-packaging all 24.0-1 [41.1 kB] 976s Get:34 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-ply all 3.11-6 [46.5 kB] 976s Get:35 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-phply all 1.2.6-1 [50.5 kB] 976s Get:36 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pluggy all 1.5.0-1 [21.0 kB] 976s Get:37 http://ftpmaster.internal/ubuntu oracular-proposed/universe arm64 python3-pytest all 8.2.2-1ubuntu1 [250 kB] 976s Get:38 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-ruamel.yaml.clib arm64 0.2.8-1build1 [126 kB] 976s Get:39 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 976s Get:40 http://ftpmaster.internal/ubuntu oracular/main arm64 python3-simplejson arm64 3.19.2-1build2 [53.6 kB] 976s Get:41 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-syrupy all 4.6.1-1 [42.8 kB] 976s Get:42 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-translate all 3.12.2-1ubuntu1 [318 kB] 976s Get:43 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-vobject all 0.9.6.1-2 [40.6 kB] 976s Get:44 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-xapian arm64 1.4.22-1build5 [355 kB] 976s Get:45 http://ftpmaster.internal/ubuntu oracular/universe arm64 subversion arm64 1.14.3-1build4 [906 kB] 976s Get:46 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-iniparse all 0.5-2 [20.0 kB] 976s Get:47 http://ftpmaster.internal/ubuntu oracular/universe arm64 python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 977s Preconfiguring packages ... 977s Fetched 10.2 MB in 3s (3990 kB/s) 977s Selecting previously unselected package emacsen-common. 977s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78200 files and directories currently installed.) 977s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 977s Unpacking emacsen-common (3.0.5) ... 977s Selecting previously unselected package dictionaries-common. 977s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 977s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 977s Unpacking dictionaries-common (1.29.7) ... 977s Selecting previously unselected package libgomp1:arm64. 977s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_arm64.deb ... 977s Unpacking libgomp1:arm64 (14.1.0-1ubuntu1) ... 977s Selecting previously unselected package gettext. 977s Preparing to unpack .../03-gettext_0.21-14ubuntu2_arm64.deb ... 977s Unpacking gettext (0.21-14ubuntu2) ... 977s Selecting previously unselected package hunspell-en-us. 977s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 977s Unpacking hunspell-en-us (1:2020.12.07-2) ... 977s Selecting previously unselected package libapr1t64:arm64. 978s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_arm64.deb ... 978s Unpacking libapr1t64:arm64 (1.7.2-3.2) ... 978s Selecting previously unselected package libaprutil1t64:arm64. 978s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_arm64.deb ... 978s Unpacking libaprutil1t64:arm64 (1.6.3-1.1ubuntu7) ... 978s Selecting previously unselected package libaspell15:arm64. 978s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_arm64.deb ... 978s Unpacking libaspell15:arm64 (0.60.8.1-1build1) ... 978s Selecting previously unselected package libhunspell-1.7-0:arm64. 978s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_arm64.deb ... 978s Unpacking libhunspell-1.7-0:arm64 (1.7.2+really1.7.2-10build3) ... 978s Selecting previously unselected package libenchant-2-2:arm64. 978s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_arm64.deb ... 978s Unpacking libenchant-2-2:arm64 (2.3.3-2build2) ... 978s Selecting previously unselected package libexttextcat-data. 978s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 978s Unpacking libexttextcat-data (3.4.7-1build1) ... 978s Selecting previously unselected package libserf-1-1:arm64. 978s Preparing to unpack .../11-libserf-1-1_1.3.10-2_arm64.deb ... 978s Unpacking libserf-1-1:arm64 (1.3.10-2) ... 978s Selecting previously unselected package libutf8proc3:arm64. 978s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_arm64.deb ... 978s Unpacking libutf8proc3:arm64 (2.9.0-1build1) ... 978s Selecting previously unselected package libsvn1:arm64. 978s Preparing to unpack .../13-libsvn1_1.14.3-1build4_arm64.deb ... 978s Unpacking libsvn1:arm64 (1.14.3-1build4) ... 978s Selecting previously unselected package libxapian30:arm64. 978s Preparing to unpack .../14-libxapian30_1.4.22-1build1_arm64.deb ... 978s Unpacking libxapian30:arm64 (1.4.22-1build1) ... 978s Selecting previously unselected package libxslt1.1:arm64. 978s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_arm64.deb ... 978s Unpacking libxslt1.1:arm64 (1.1.39-0exp1build1) ... 978s Selecting previously unselected package python3-aeidon. 978s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 978s Unpacking python3-aeidon (1.11-2) ... 978s Selecting previously unselected package python3-all. 978s Preparing to unpack .../17-python3-all_3.12.3-0ubuntu1_arm64.deb ... 978s Unpacking python3-all (3.12.3-0ubuntu1) ... 978s Selecting previously unselected package python3-soupsieve. 978s Preparing to unpack .../18-python3-soupsieve_2.5-1_all.deb ... 978s Unpacking python3-soupsieve (2.5-1) ... 978s Selecting previously unselected package python3-bs4. 978s Preparing to unpack .../19-python3-bs4_4.12.3-1_all.deb ... 978s Unpacking python3-bs4 (4.12.3-1) ... 978s Selecting previously unselected package python3-more-itertools. 979s Preparing to unpack .../20-python3-more-itertools_10.2.0-1_all.deb ... 979s Unpacking python3-more-itertools (10.2.0-1) ... 979s Selecting previously unselected package python3-jaraco.functools. 979s Preparing to unpack .../21-python3-jaraco.functools_4.0.0-1_all.deb ... 979s Unpacking python3-jaraco.functools (4.0.0-1) ... 979s Selecting previously unselected package python3-cheroot. 979s Preparing to unpack .../22-python3-cheroot_10.0.0+ds1-2_all.deb ... 979s Unpacking python3-cheroot (10.0.0+ds1-2) ... 979s Selecting previously unselected package python3-dateutil. 979s Preparing to unpack .../23-python3-dateutil_2.9.0-2_all.deb ... 979s Unpacking python3-dateutil (2.9.0-2) ... 979s Selecting previously unselected package python3-diff-match-patch. 979s Preparing to unpack .../24-python3-diff-match-patch_20230430-1_all.deb ... 979s Unpacking python3-diff-match-patch (20230430-1) ... 979s Selecting previously unselected package python3-enchant. 979s Preparing to unpack .../25-python3-enchant_3.2.2-1_all.deb ... 979s Unpacking python3-enchant (3.2.2-1) ... 979s Selecting previously unselected package python3-iniconfig. 979s Preparing to unpack .../26-python3-iniconfig_1.1.1-2_all.deb ... 979s Unpacking python3-iniconfig (1.1.1-2) ... 979s Selecting previously unselected package python3-rapidfuzz. 979s Preparing to unpack .../27-python3-rapidfuzz_3.6.2+ds-3_arm64.deb ... 979s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 979s Selecting previously unselected package python3-levenshtein. 979s Preparing to unpack .../28-python3-levenshtein_0.25.1-3_arm64.deb ... 979s Unpacking python3-levenshtein (0.25.1-3) ... 979s Selecting previously unselected package python3-lxml:arm64. 979s Preparing to unpack .../29-python3-lxml_5.2.1-1_arm64.deb ... 979s Unpacking python3-lxml:arm64 (5.2.1-1) ... 979s Selecting previously unselected package python3-mistletoe. 979s Preparing to unpack .../30-python3-mistletoe_1.3.0-1_all.deb ... 979s Unpacking python3-mistletoe (1.3.0-1) ... 979s Selecting previously unselected package python3-packaging. 980s Preparing to unpack .../31-python3-packaging_24.0-1_all.deb ... 980s Unpacking python3-packaging (24.0-1) ... 980s Selecting previously unselected package python3-ply. 980s Preparing to unpack .../32-python3-ply_3.11-6_all.deb ... 980s Unpacking python3-ply (3.11-6) ... 980s Selecting previously unselected package python3-phply. 980s Preparing to unpack .../33-python3-phply_1.2.6-1_all.deb ... 980s Unpacking python3-phply (1.2.6-1) ... 980s Selecting previously unselected package python3-pluggy. 980s Preparing to unpack .../34-python3-pluggy_1.5.0-1_all.deb ... 980s Unpacking python3-pluggy (1.5.0-1) ... 980s Selecting previously unselected package python3-pytest. 980s Preparing to unpack .../35-python3-pytest_8.2.2-1ubuntu1_all.deb ... 980s Unpacking python3-pytest (8.2.2-1ubuntu1) ... 980s Selecting previously unselected package python3-ruamel.yaml.clib:arm64. 980s Preparing to unpack .../36-python3-ruamel.yaml.clib_0.2.8-1build1_arm64.deb ... 980s Unpacking python3-ruamel.yaml.clib:arm64 (0.2.8-1build1) ... 980s Selecting previously unselected package python3-ruamel.yaml. 980s Preparing to unpack .../37-python3-ruamel.yaml_0.17.21-1_all.deb ... 980s Unpacking python3-ruamel.yaml (0.17.21-1) ... 981s Selecting previously unselected package python3-simplejson. 981s Preparing to unpack .../38-python3-simplejson_3.19.2-1build2_arm64.deb ... 981s Unpacking python3-simplejson (3.19.2-1build2) ... 981s Selecting previously unselected package python3-syrupy. 981s Preparing to unpack .../39-python3-syrupy_4.6.1-1_all.deb ... 981s Unpacking python3-syrupy (4.6.1-1) ... 981s Selecting previously unselected package python3-translate. 981s Preparing to unpack .../40-python3-translate_3.12.2-1ubuntu1_all.deb ... 981s Unpacking python3-translate (3.12.2-1ubuntu1) ... 981s Selecting previously unselected package python3-vobject. 981s Preparing to unpack .../41-python3-vobject_0.9.6.1-2_all.deb ... 981s Unpacking python3-vobject (0.9.6.1-2) ... 981s Selecting previously unselected package python3-xapian. 981s Preparing to unpack .../42-python3-xapian_1.4.22-1build5_arm64.deb ... 981s Unpacking python3-xapian (1.4.22-1build5) ... 981s Selecting previously unselected package subversion. 981s Preparing to unpack .../43-subversion_1.14.3-1build4_arm64.deb ... 981s Unpacking subversion (1.14.3-1build4) ... 981s Selecting previously unselected package python3-iniparse. 981s Preparing to unpack .../44-python3-iniparse_0.5-2_all.deb ... 981s Unpacking python3-iniparse (0.5-2) ... 981s Selecting previously unselected package python3-pycountry. 981s Preparing to unpack .../45-python3-pycountry_23.12.11+ds1-2_all.deb ... 981s Unpacking python3-pycountry (23.12.11+ds1-2) ... 981s Selecting previously unselected package autopkgtest-satdep. 981s Preparing to unpack .../46-2-autopkgtest-satdep.deb ... 981s Unpacking autopkgtest-satdep (0) ... 981s Setting up python3-more-itertools (10.2.0-1) ... 982s Setting up python3-iniconfig (1.1.1-2) ... 982s Setting up libxapian30:arm64 (1.4.22-1build1) ... 982s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 982s Setting up python3-diff-match-patch (20230430-1) ... 982s Setting up python3-jaraco.functools (4.0.0-1) ... 982s Setting up python3-aeidon (1.11-2) ... 983s Setting up libutf8proc3:arm64 (2.9.0-1build1) ... 983s Setting up libaspell15:arm64 (0.60.8.1-1build1) ... 983s Setting up python3-ply (3.11-6) ... 983s Setting up python3-ruamel.yaml.clib:arm64 (0.2.8-1build1) ... 983s Setting up python3-all (3.12.3-0ubuntu1) ... 983s Setting up libgomp1:arm64 (14.1.0-1ubuntu1) ... 983s Setting up python3-simplejson (3.19.2-1build2) ... 983s Setting up python3-packaging (24.0-1) ... 983s Setting up emacsen-common (3.0.5) ... 983s Setting up python3-cheroot (10.0.0+ds1-2) ... 983s Setting up python3-pycountry (23.12.11+ds1-2) ... 984s Setting up python3-xapian (1.4.22-1build5) ... 984s Setting up python3-pluggy (1.5.0-1) ... 984s Setting up python3-ruamel.yaml (0.17.21-1) ... 984s Setting up python3-mistletoe (1.3.0-1) ... 984s Setting up libexttextcat-data (3.4.7-1build1) ... 984s Setting up libapr1t64:arm64 (1.7.2-3.2) ... 984s Setting up libxslt1.1:arm64 (1.1.39-0exp1build1) ... 984s Setting up python3-dateutil (2.9.0-2) ... 985s Setting up python3-levenshtein (0.25.1-3) ... 985s Setting up libhunspell-1.7-0:arm64 (1.7.2+really1.7.2-10build3) ... 985s Setting up python3-soupsieve (2.5-1) ... 985s Setting up python3-iniparse (0.5-2) ... 985s Setting up libaprutil1t64:arm64 (1.6.3-1.1ubuntu7) ... 985s Setting up python3-vobject (0.9.6.1-2) ... 985s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 985s patterns['name'] = '[a-zA-Z0-9\-_]+' 985s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 985s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 985s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 985s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 985s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 985s """ 985s Setting up gettext (0.21-14ubuntu2) ... 985s Setting up python3-phply (1.2.6-1) ... 985s Setting up dictionaries-common (1.29.7) ... 986s Setting up python3-pytest (8.2.2-1ubuntu1) ... 986s Setting up python3-syrupy (4.6.1-1) ... 986s Setting up libserf-1-1:arm64 (1.3.10-2) ... 986s Setting up python3-bs4 (4.12.3-1) ... 987s Setting up python3-lxml:arm64 (5.2.1-1) ... 987s Setting up hunspell-en-us (1:2020.12.07-2) ... 987s Setting up libsvn1:arm64 (1.14.3-1build4) ... 987s Setting up libenchant-2-2:arm64 (2.3.3-2build2) ... 987s Setting up subversion (1.14.3-1build4) ... 987s Setting up python3-enchant (3.2.2-1) ... 987s Setting up python3-translate (3.12.2-1ubuntu1) ... 987s Setting up autopkgtest-satdep (0) ... 987s Processing triggers for man-db (2.12.1-1) ... 988s Processing triggers for install-info (7.1-3build2) ... 989s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 989s Processing triggers for dictionaries-common (1.29.7) ... 994s (Reading database ... 81654 files and directories currently installed.) 994s Removing autopkgtest-satdep (0) ... 996s autopkgtest [14:02:45]: test python3-translate: [----------------------- 997s ============================= test session starts ============================== 997s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 997s cachedir: .pytest_cache 997s rootdir: /tmp/autopkgtest.qvxWnj/autopkgtest_tmp 997s plugins: syrupy-4.6.1 1003s collecting ... collected 3313 items / 2 skipped 1003s 1004s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 1004s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 1004s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 1004s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 1004s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 1004s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 1004s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 1004s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 1004s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 1004s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 1004s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 1004s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 1004s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 1004s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 1004s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 1004s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 1004s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 1004s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 1004s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 1004s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 1004s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 1004s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 1004s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 1004s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 1004s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 1004s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 1004s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 1004s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 1004s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 1004s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 1004s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 1004s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 1004s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 1004s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 1004s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 1004s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 1004s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 1004s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 1004s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 1004s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 1004s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 1004s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 1004s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 1004s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 1005s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 1005s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 1005s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 1005s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 1005s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 1005s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 1005s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 1005s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 1005s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 1005s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 1005s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 1005s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 1005s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 1005s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 1005s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 1005s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 1005s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 1005s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 1005s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 1005s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 1005s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 1005s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 1005s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 1005s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 1005s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 1005s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 1005s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 1006s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 1006s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 1007s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 1007s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 1007s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 1007s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 1007s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 1007s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 1007s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 1007s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 1007s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 1007s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 1007s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 1007s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 1007s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 1007s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 1007s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 1007s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 1007s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 1007s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 1007s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 1007s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 1007s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 1007s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 1007s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 1007s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 1007s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 1007s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 1007s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 1007s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 1007s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 1007s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 1007s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 1007s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 1007s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 1007s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 1007s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 1007s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 1007s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 1007s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 1007s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 1007s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 1007s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 1007s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 1007s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 1007s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 1007s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 1007s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 1007s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 1007s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 1007s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 1008s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 1008s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 1008s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 1008s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 1008s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 1008s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 1008s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 1008s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 1008s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 1008s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 1008s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 1008s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 1008s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 1008s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 1008s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 1008s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 1008s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 1008s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 1008s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 1008s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 1008s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 1008s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 1008s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 1008s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 1008s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 1008s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 1008s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 1008s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 1008s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 1008s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 1008s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 1008s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 1008s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 1008s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 1008s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 1008s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 1008s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 1008s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 1008s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 1008s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 1008s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 1008s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 1008s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 1008s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 1008s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 1008s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 1008s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 1008s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 1008s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 1008s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 1008s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 1008s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 1008s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 1008s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 1008s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 1008s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 1008s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 1008s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 1008s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 1008s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 1008s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 1008s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 1008s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 1008s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 1008s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 1008s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 1008s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 1008s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 1008s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 1008s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 1008s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 1008s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 1008s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 1008s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 1008s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 1008s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 1008s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 1008s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 1008s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 1008s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 1008s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 1008s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 1008s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 1008s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 1008s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 1008s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 1008s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 1008s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 1008s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 1009s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 1009s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 1009s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 1009s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 1009s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 1009s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 1009s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 1009s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 1009s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 1009s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 1009s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 1009s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 1009s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 1009s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 1009s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 1009s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 1009s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 1009s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 1009s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 1009s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 1009s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 1009s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 1009s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 1009s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 1009s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 1009s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 1009s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 1010s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 1010s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 1010s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 1010s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 1010s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 1010s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 1010s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 1010s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 1010s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 1010s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 1010s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 1010s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 1010s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 1010s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 1010s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 1010s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 1010s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 1010s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 1010s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 1010s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 1010s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 1010s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 1010s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 1010s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 1010s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 1010s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 1010s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 1010s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 1010s tests/translate/storage/test_mo.py::TestMOFile::test_output SKIPPED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 1010s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[\u015e\u0167\u0159\u012b\u019e\u0260 {ok}-\u015e\u0167\u0159\u012b\u019e\u0260] PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 1010s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 1010s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 1010s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 1010s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 1010s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 1010s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 1010s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 1010s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 1010s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 1010s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 1010s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 1010s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 1010s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 1011s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 1011s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 1011s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 1011s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 1011s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 1011s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 1011s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 1011s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 1011s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 1011s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 1011s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 1011s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 1011s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 1011s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 1011s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 1011s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 1012s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 1012s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 1012s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 1012s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 1012s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 1012s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 1012s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 1012s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 1012s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 1012s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 1012s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 1012s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 1012s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 1012s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 1012s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 1012s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 1012s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 1013s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 1013s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 1013s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 1013s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 1013s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 1013s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 1013s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 1013s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 1013s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 1013s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 1013s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 1013s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 1013s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 1013s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 1013s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 1013s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 1013s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 1013s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 1013s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 1013s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 1013s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 1013s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 1013s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 1015s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 1015s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 1015s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 1015s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 1015s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 1015s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 1015s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 1015s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 1015s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 1015s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 1015s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 1015s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 1015s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 1015s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 1015s tests/translate/tools/test_help.py::test_help[build_tmdb] SKIPPED (S...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[phppo2pypo] SKIPPED (S...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[poclean] SKIPPED (Skip...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[pocompile] SKIPPED (Sk...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[poconflicts] SKIPPED (...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[pocount] SKIPPED (Skip...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[podebug] SKIPPED (Skip...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[pogrep] SKIPPED (Skip ...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[pomerge] SKIPPED (Skip...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[porestructure] SKIPPED [ 94%] 1015s tests/translate/tools/test_help.py::test_help[posegment] SKIPPED (Sk...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[poswap] SKIPPED (Skip ...) [ 94%] 1015s tests/translate/tools/test_help.py::test_help[poterminology] SKIPPED [ 95%] 1015s tests/translate/tools/test_help.py::test_help[pretranslate] SKIPPED [ 95%] 1015s tests/translate/tools/test_help.py::test_help[pydiff] SKIPPED (Skip ...) [ 95%] 1015s tests/translate/tools/test_help.py::test_help[pypo2phppo] SKIPPED (S...) [ 95%] 1015s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 1015s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 1015s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 1015s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 1015s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 1015s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 1015s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 1015s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 1015s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 1015s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 1015s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 1015s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 1015s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 1015s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 1015s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 1016s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 1016s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 1016s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 1016s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 1016s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 1016s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 1016s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 1016s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 1016s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 1016s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 1016s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 1016s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 1016s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 1016s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 1016s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 1016s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff SKIPPED [ 99%] 1016s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff SKIPPED [100%] 1016s 1016s ================================== XFAILURES =================================== 1016s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_accelerator_keys_not_in_sentence(self): 1016s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 1016s dtdtemplate = """ 1016s """ 1016s dtdlanguage = """ 1016s """ 1016s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 1016s print(pofile) 1016s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 1016s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 1016s 1016s tests/translate/convert/test_dtd2po.py:348: AttributeError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s 1016s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_accelerator_keys_not_in_sentence(self): 1016s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 1016s dtdtemplate = """ 1016s """ 1016s dtdlanguage = """ 1016s """ 1016s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 1016s print(pofile) 1016s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 1016s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 1016s 1016s tests/translate/convert/test_dtd2po.py:348: AttributeError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s 1016s ________________ TestPO2Php.test_merging_propertyless_template _________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Need to review if we want this behaviour") 1016s def test_merging_propertyless_template(self): 1016s """Check that when merging with a template with no property values that we copy the template.""" 1016s posource = "" 1016s proptemplate = "# A comment\n" 1016s propexpected = proptemplate 1016s > propfile = self.merge2prop(proptemplate, posource) 1016s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 1016s 1016s tests/translate/convert/test_po2php.py:386: AttributeError 1016s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Need to review if we want this behaviour") 1016s def test_merging_propertyless_template(self): 1016s """Check that when merging with a template with no property values that we copy the template.""" 1016s posource = "" 1016s proptemplate = "# A comment\n" 1016s propexpected = proptemplate 1016s > propfile = self.merge2prop(proptemplate, posource) 1016s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 1016s 1016s tests/translate/convert/test_po2php.py:386: AttributeError 1016s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not implemented - review if this is even correct") 1016s def test_merging_msgid_change(self): 1016s """Tests that if the msgid changes but the location stays the same that we merge.""" 1016s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 1016s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1016s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1016s newpo = self.convertpot(potsource, posource) 1016s print(newpo) 1016s > assert str(self.singleunit(newpo)) == poexpected 1016s 1016s tests/translate/convert/test_pot2po.py:121: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pofile = 1016s 1016s @staticmethod 1016s def singleunit(pofile): 1016s """Checks that the pofile contains a single non-header unit, and returns it.""" 1016s > assert len(pofile.units) == 2 1016s E assert 3 == 2 1016s E + where 3 = len([, , ]) 1016s E + where [, , ] = .units 1016s 1016s tests/translate/convert/test_pot2po.py:25: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s 1016s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented - needs review") 1016s def test_merging_accelerator_changes(self): 1016s """Test that a change in the accelerator localtion still allows merging.""" 1016s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 1016s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 1016s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 1016s newpo = self.convertpot(potsource, posource) 1016s print(newpo) 1016s > assert str(self.singleunit(newpo)) == poexpected 1016s 1016s tests/translate/convert/test_pot2po.py:190: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pofile = 1016s 1016s @staticmethod 1016s def singleunit(pofile): 1016s """Checks that the pofile contains a single non-header unit, and returns it.""" 1016s > assert len(pofile.units) == 2 1016s E assert 3 == 2 1016s E + where 3 = len([, , ]) 1016s E + where [, , ] = .units 1016s 1016s tests/translate/convert/test_pot2po.py:25: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s 1016s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented - review if this is even correct") 1016s def test_lines_cut_differently(self): 1016s """Checks that the correct formatting is preserved when pot an po lines differ.""" 1016s potsource = ( 1016s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 1016s ) 1016s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 1016s newpo = self.convertpot(potsource, posource) 1016s newpounit = self.singleunit(newpo) 1016s > assert str(newpounit) == posource 1016s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 1016s E 1016s E #: simple.label 1016s E - msgid "Line" 1016s E + msgid "Line split " 1016s E ? +++++++ 1016s E - " split differently" 1016s E ? ------- 1016s E + "differently" 1016s E msgstr "Lyne verskillend gesny" 1016s 1016s tests/translate/convert/test_pot2po.py:201: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s #: simple.label 1016s msgid "Line split " 1016s "differently" 1016s msgstr "Lyne verskillend gesny" 1016s 1016s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not implemented - review if this is even correct") 1016s def test_merging_msgid_change(self): 1016s """Tests that if the msgid changes but the location stays the same that we merge.""" 1016s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 1016s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1016s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1016s newpo = self.convertpot(potsource, posource) 1016s print(newpo) 1016s > assert str(self.singleunit(newpo)) == poexpected 1016s 1016s tests/translate/convert/test_pot2po.py:121: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pofile = 1016s 1016s @staticmethod 1016s def singleunit(pofile): 1016s """Checks that the pofile contains a single non-header unit, and returns it.""" 1016s > assert len(pofile.units) == 2 1016s E assert 3 == 2 1016s E + where 3 = len([, , ]) 1016s E + where [, , ] = .units 1016s 1016s tests/translate/convert/test_pot2po.py:25: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s 1016s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented - needs review") 1016s def test_merging_accelerator_changes(self): 1016s """Test that a change in the accelerator localtion still allows merging.""" 1016s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 1016s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 1016s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 1016s newpo = self.convertpot(potsource, posource) 1016s print(newpo) 1016s > assert str(self.singleunit(newpo)) == poexpected 1016s 1016s tests/translate/convert/test_pot2po.py:190: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s pofile = 1016s 1016s @staticmethod 1016s def singleunit(pofile): 1016s """Checks that the pofile contains a single non-header unit, and returns it.""" 1016s > assert len(pofile.units) == 2 1016s E assert 3 == 2 1016s E + where 3 = len([, , ]) 1016s E + where [, , ] = .units 1016s 1016s tests/translate/convert/test_pot2po.py:25: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s 1016s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented - review if this is even correct") 1016s def test_lines_cut_differently(self): 1016s """Checks that the correct formatting is preserved when pot an po lines differ.""" 1016s potsource = ( 1016s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 1016s ) 1016s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 1016s newpo = self.convertpot(potsource, posource) 1016s newpounit = self.singleunit(newpo) 1016s > assert str(newpounit) == posource 1016s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 1016s E 1016s E #: simple.label 1016s E - msgid "Line" 1016s E + msgid "Line split " 1016s E ? +++++++ 1016s E - " split differently" 1016s E ? ------- 1016s E + "differently" 1016s E msgstr "Lyne verskillend gesny" 1016s 1016s tests/translate/convert/test_pot2po.py:201: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s #: simple.label 1016s msgid "Line split " 1016s "differently" 1016s msgstr "Lyne verskillend gesny" 1016s 1016s ________________________ TestYAML2PO.test_no_duplicates ________________________ 1016s 1016s self = 1016s input = '\nfoo: bar\nfoo: baz\n' 1016s 1016s def parse(self, input): 1016s """Parse the given file or file source string.""" 1016s if hasattr(input, "name"): 1016s self.filename = input.name 1016s elif not getattr(self, "filename", ""): 1016s self.filename = "" 1016s if hasattr(input, "read"): 1016s src = input.read() 1016s input.close() 1016s input = src 1016s if isinstance(input, bytes): 1016s input = input.decode("utf-8") 1016s try: 1016s > self._original = self.yaml.load(input) 1016s 1016s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 1016s return constructor.get_single_data() 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 1016s return self.construct_document(node) 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 1016s for _dummy in generator: 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 1016s self.construct_mapping(node, data, deep=True) 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 1016s if self.check_mapping_key(node, key_node, maptyp, key, value): 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s self = 1016s node = MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag=...'bar')), (ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag='tag:yaml.org,2002:str', value='baz'))]) 1016s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 1016s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 1016s 1016s def check_mapping_key(self, node, key_node, mapping, key, value): 1016s # type: (Any, Any, Any, Any, Any) -> bool 1016s """return True if key is unique""" 1016s if key in mapping: 1016s if not self.allow_duplicate_keys: 1016s mk = mapping.get(key) 1016s args = [ 1016s 'while constructing a mapping', 1016s node.start_mark, 1016s 'found duplicate key "{}" with value "{}" ' 1016s '(original value: "{}")'.format(key, value, mk), 1016s key_node.start_mark, 1016s """ 1016s To suppress this check see: 1016s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 1016s """, 1016s """\ 1016s Duplicate keys will become an error in future releases, and are errors 1016s by default when using the new API. 1016s """, 1016s ] 1016s if self.allow_duplicate_keys is None: 1016s warnings.warn(DuplicateKeyFutureWarning(*args)) 1016s else: 1016s > raise DuplicateKeyError(*args) 1016s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 1016s E in "", line 2, column 1: 1016s E foo: bar 1016s E ^ (line: 2) 1016s E found duplicate key "foo" with value "baz" (original value: "bar") 1016s E in "", line 3, column 1: 1016s E foo: baz 1016s E ^ (line: 3) 1016s E 1016s E To suppress this check see: 1016s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 1016s 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 1016s 1016s During handling of the above exception, another exception occurred: 1016s 1016s self = 1016s 1016s @pytest.mark.xfail(reason="This is invalid YAML document") 1016s def test_no_duplicates(self): 1016s """Check converting drops duplicates.""" 1016s input_string = """ 1016s foo: bar 1016s foo: baz 1016s """ 1016s > target_store = self._convert_to_store(input_string) 1016s 1016s tests/translate/convert/test_yaml2po.py:112: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 1016s return self._convert(*args, **kwargs)[0] 1016s tests/translate/convert/test_yaml2po.py:28: in _convert 1016s converter = self.ConverterClass( 1016s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 1016s self.source_store = self.SourceStoreClass(input_file) 1016s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 1016s self.parse(inputfile) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s self = 1016s input = '\nfoo: bar\nfoo: baz\n' 1016s 1016s def parse(self, input): 1016s """Parse the given file or file source string.""" 1016s if hasattr(input, "name"): 1016s self.filename = input.name 1016s elif not getattr(self, "filename", ""): 1016s self.filename = "" 1016s if hasattr(input, "read"): 1016s src = input.read() 1016s input.close() 1016s input = src 1016s if isinstance(input, bytes): 1016s input = input.decode("utf-8") 1016s try: 1016s self._original = self.yaml.load(input) 1016s except YAMLError as e: 1016s message = getattr(e, "problem", getattr(e, "message", str(e))) 1016s if hasattr(e, "problem_mark"): 1016s message += f" {e.problem_mark}" 1016s > raise base.ParseError(message) 1016s E translate.storage.base.ParseError: 'found duplicate key "foo" with value "baz" (original value: "bar") in "", line 3, column 1:\n foo: baz\n ^ (line: 3)' 1016s 1016s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 1016s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 1016s 1016s self = 1016s input = '\nfoo: bar\nfoo: baz\n' 1016s 1016s def parse(self, input): 1016s """Parse the given file or file source string.""" 1016s if hasattr(input, "name"): 1016s self.filename = input.name 1016s elif not getattr(self, "filename", ""): 1016s self.filename = "" 1016s if hasattr(input, "read"): 1016s src = input.read() 1016s input.close() 1016s input = src 1016s if isinstance(input, bytes): 1016s input = input.decode("utf-8") 1016s try: 1016s > self._original = self.yaml.load(input) 1016s 1016s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 1016s return constructor.get_single_data() 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 1016s return self.construct_document(node) 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 1016s for _dummy in generator: 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 1016s self.construct_mapping(node, data, deep=True) 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 1016s if self.check_mapping_key(node, key_node, maptyp, key, value): 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s self = 1016s node = MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag=...'bar')), (ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag='tag:yaml.org,2002:str', value='baz'))]) 1016s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 1016s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 1016s 1016s def check_mapping_key(self, node, key_node, mapping, key, value): 1016s # type: (Any, Any, Any, Any, Any) -> bool 1016s """return True if key is unique""" 1016s if key in mapping: 1016s if not self.allow_duplicate_keys: 1016s mk = mapping.get(key) 1016s args = [ 1016s 'while constructing a mapping', 1016s node.start_mark, 1016s 'found duplicate key "{}" with value "{}" ' 1016s '(original value: "{}")'.format(key, value, mk), 1016s key_node.start_mark, 1016s """ 1016s To suppress this check see: 1016s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 1016s """, 1016s """\ 1016s Duplicate keys will become an error in future releases, and are errors 1016s by default when using the new API. 1016s """, 1016s ] 1016s if self.allow_duplicate_keys is None: 1016s warnings.warn(DuplicateKeyFutureWarning(*args)) 1016s else: 1016s > raise DuplicateKeyError(*args) 1016s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 1016s E in "", line 2, column 1: 1016s E foo: bar 1016s E ^ (line: 2) 1016s E found duplicate key "foo" with value "baz" (original value: "bar") 1016s E in "", line 3, column 1: 1016s E foo: baz 1016s E ^ (line: 3) 1016s E 1016s E To suppress this check see: 1016s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 1016s 1016s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 1016s 1016s During handling of the above exception, another exception occurred: 1016s 1016s self = 1016s 1016s @pytest.mark.xfail(reason="This is invalid YAML document") 1016s def test_no_duplicates(self): 1016s """Check converting drops duplicates.""" 1016s input_string = """ 1016s foo: bar 1016s foo: baz 1016s """ 1016s > target_store = self._convert_to_store(input_string) 1016s 1016s tests/translate/convert/test_yaml2po.py:112: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 1016s return self._convert(*args, **kwargs)[0] 1016s tests/translate/convert/test_yaml2po.py:28: in _convert 1016s converter = self.ConverterClass( 1016s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 1016s self.source_store = self.SourceStoreClass(input_file) 1016s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 1016s self.parse(inputfile) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s self = 1016s input = '\nfoo: bar\nfoo: baz\n' 1016s 1016s def parse(self, input): 1016s """Parse the given file or file source string.""" 1016s if hasattr(input, "name"): 1016s self.filename = input.name 1016s elif not getattr(self, "filename", ""): 1016s self.filename = "" 1016s if hasattr(input, "read"): 1016s src = input.read() 1016s input.close() 1016s input = src 1016s if isinstance(input, bytes): 1016s input = input.decode("utf-8") 1016s try: 1016s self._original = self.yaml.load(input) 1016s except YAMLError as e: 1016s message = getattr(e, "problem", getattr(e, "message", str(e))) 1016s if hasattr(e, "problem_mark"): 1016s message += f" {e.problem_mark}" 1016s > raise base.ParseError(message) 1016s E translate.storage.base.ParseError: 'found duplicate key "foo" with value "baz" (original value: "bar") in "", line 3, column 1:\n foo: baz\n ^ (line: 3)' 1016s 1016s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 1016s __________________________ test_acceleratedvariables ___________________________ 1016s 1016s @mark.xfail(reason="Accelerated variables needs a better implementation") 1016s def test_acceleratedvariables(): 1016s """Test for accelerated variables.""" 1016s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 1016s mozillachecker = checks.MozillaChecker() 1016s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 1016s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 1016s 1016s tests/translate/filters/test_checks.py:206: AttributeError 1016s ___________________________ test_musttranslatewords ____________________________ 1016s 1016s @mark.xfail(reason="FIXME: All fails() tests are not working") 1016s def test_musttranslatewords(): 1016s """Tests stopwords.""" 1016s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 1016s assert passes( 1016s stdchecker.musttranslatewords, 1016s "This uses Mozilla of course", 1016s "hierdie gebruik le mozille natuurlik", 1016s ) 1016s stdchecker = checks.StandardChecker( 1016s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 1016s ) 1016s assert passes( 1016s stdchecker.musttranslatewords, 1016s "This uses Mozilla of course", 1016s "hierdie gebruik le mozille natuurlik", 1016s ) 1016s > assert fails( 1016s stdchecker.musttranslatewords, 1016s "This uses Mozilla of course", 1016s "hierdie gebruik Mozilla natuurlik", 1016s ) 1016s E AssertionError: assert False 1016s E + where False = fails(>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 1016s E + where > = .musttranslatewords 1016s 1016s tests/translate/filters/test_checks.py:612: AssertionError 1016s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 1016s 1016s @mark.xfail(reason="Bug #3408") 1016s def test_persian_single_and_double_quote_fail_at_the_same_time(): 1016s """Test Persian single and double quote failures in string with single quotes.""" 1016s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 1016s 1016s # With single quote check. 1016s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 1016s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 1016s E assert False 1016s E + where False = fails(>, "Path: '%S'", 'مسیر: "%S"\u200e') 1016s E + where > = .singlequoting 1016s 1016s tests/translate/filters/test_checks.py:1271: AssertionError 1016s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 1016s 1016s @mark.xfail(reason="Bug #3506") 1016s def test_bengali_mozilla_inverted_xmltags(): 1016s """Test Bengali Mozilla XML tags.""" 1016s bn_mozilla_checker = checks.MozillaChecker( 1016s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 1016s ) 1016s str_en = """We co-founded the WHAT-WG to.""" 1016s str_bn = """এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।""" 1016s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 1016s E assert False 1016s E + where False = passes(>, 'We co-founded the WHAT-WG to.', 'এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।') 1016s E + where > = .xmltags 1016s 1016s tests/translate/filters/test_checks.py:2065: AssertionError 1016s _______________________________ test_word_khmer ________________________________ 1016s 1016s @mark.xfail( 1016s reason="ZWS is not considered a space in Python 2.6+. Khmer " 1016s "should extend words() to include \\u200b in addition to " 1016s "other word breakers." 1016s ) 1016s def test_word_khmer(): 1016s language = common.Common 1016s # Let's test Khmer with zero width space (\u200b) 1016s words = language.words("ផ្ដល់\u200bយោបល់") 1016s print("ផ្ដល់\u200bយោបល់") 1016s print(language.words("ផ្ដល់<200b>យោបល់")) 1016s print(["ផ្ដល់", "យោបល់"]) 1016s > assert words == ["ផ្ដល់", "យោបល់"] 1016s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 1016s E 1016s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 1016s E Right contains one more item: 'យោបល់' 1016s E 1016s E Full diff: 1016s E [ 1016s E + 'ផ្ដល់\u200bយោបល់',... 1016s E 1016s E ...Full output truncated (3 lines hidden), use '-vv' to show 1016s 1016s tests/translate/lang/test_common.py:47: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s ផ្ដល់​យោបល់ 1016s ['ផ្ដល់<200b>យោបល់'] 1016s ['ផ្ដល់', 'យោបល់'] 1016s __________________ TestConverters.test_to_general_placeables ___________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Test needs fixing, disabled for now") 1016s def test_to_general_placeables(self): 1016s basetree = base.to_base_placeables(self.elem) 1016s gentree = general.to_general_placeables(basetree) 1016s > assert gentree == self.elem 1016s E assert '])>])> == '])>])> 1016s E 1016s E Full diff: 1016s E - , '])>, , '])>])> 1016s E ? ^^^ 1016s E + , '])>, , '])>])> 1016s E ? ^^^^^^ 1016s 1016s tests/translate/storage/placeables/test_base.py:210: AssertionError 1016s ___________________ TestConverters.test_to_xliff_placeables ____________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Test needs fixing, disabled for now") 1016s def test_to_xliff_placeables(self): 1016s basetree = base.to_base_placeables(self.elem) 1016s xliff_from_base = xliff.to_xliff_placeables(basetree) 1016s > assert str(xliff_from_base) != str(self.elem) 1016s E assert 'Ģët &brandLong;' != 'Ģët &brandLong;' 1016s E + where 'Ģët &brandLong;' = str(, '])>, , '])>])>) 1016s E + and 'Ģët &brandLong;' = str(, '])>, , '])>])>) 1016s E + where , '])>, , '])>])> = .elem 1016s 1016s tests/translate/storage/placeables/test_base.py:216: AssertionError 1016s _____________________ test_quotefordtd_unimplemented_cases _____________________ 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_quotefordtd_unimplemented_cases(): 1016s """Test unimplemented quoting DTD cases.""" 1016s > assert dtd.quotefordtd("Between

and

") == ( 1016s '"Between <p> and </p>"' 1016s ) 1016s E assert '"Between

and

"' == '"Between <...d </p>"' 1016s E 1016s E - "Between <p> and </p>" 1016s E + "Between

and

" 1016s 1016s tests/translate/storage/test_dtd.py:72: AssertionError 1016s ___________________ test_unquotefromdtd_unimplemented_cases ____________________ 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_unquotefromdtd_unimplemented_cases(): 1016s """Test unimplemented unquoting DTD cases.""" 1016s > assert dtd.unquotefromdtd('"<p> and </p>"') == "

and

" 1016s E AssertionError: assert '<p> and </p>' == '

and

' 1016s E 1016s E -

and

1016s E + <p> and </p> 1016s 1016s tests/translate/storage/test_dtd.py:103: AssertionError 1016s ________________________ TestDTD.test_comment_following ________________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_comment_following(self): 1016s """Check that comments that appear after and entity are not pushed onto another line.""" 1016s dtdsource = ' ' 1016s dtdregen = self.dtdregen(dtdsource) 1016s > assert dtdsource == dtdregen 1016s E assert '' == ' 1016s E - 1016s E - 1016s 1016s tests/translate/storage/test_dtd.py:344: AssertionError 1016s _________________________ TestDTD.test_invalid_quoting _________________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_invalid_quoting(self): 1016s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 1016s # TODO: we should rather raise an error 1016s dtdsource = '\n' 1016s assert ( 1016s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 1016s ) 1016s dtdfile = self.dtdparse(dtdsource) 1016s assert len(dtdfile.units) == 1 1016s dtdunit = dtdfile.units[0] 1016s assert dtdunit.definition == '"bananas for sale"' 1016s > assert bytes(dtdfile) == b'\n' 1016s E assert b'' == b'\n' 1016s E 1016s E Full diff: 1016s E - (b'\n') 1016s E + b'' 1016s 1016s tests/translate/storage/test_dtd.py:364: AssertionError 1016s __________________________ TestOtFile.test_extensions __________________________ 1016s 1016s self = 1016s 1016s @mark.xfail( 1016s reason="This doesn't work, due to two store classes handling different " 1016s "extensions, but factory listing it as one supported file type" 1016s ) 1016s def test_extensions(self): 1016s > super().test_extensions() 1016s 1016s tests/translate/storage/test_omegat.py:20: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s self = 1016s 1016s def test_extensions(self): 1016s """Test that the factory knows the extensions for this class.""" 1016s supported = factory.supported_files() 1016s supported_dict = { 1016s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 1016s } 1016s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 1016s return 1016s detail = supported_dict[ 1016s self.StoreClass.Name 1016s ] # will start to get problematic once translated 1016s print("Factory:", detail[0]) 1016s print("StoreClass:", self.StoreClass.Extensions) 1016s for ext in detail[0]: 1016s > assert ext in self.StoreClass.Extensions 1016s E AssertionError: assert 'tab' in ['utf8'] 1016s E + where ['utf8'] = .Extensions 1016s E + where = .StoreClass 1016s 1016s tests/translate/storage/test_base.py:386: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s Factory: ['utf8', 'tab'] 1016s StoreClass: ['utf8'] 1016s _________________________ TestPOFile.test_kde_plurals __________________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_kde_plurals(self): 1016s """Tests kde-style plurals. (Bug: 191).""" 1016s posource = r"""msgid "_n Singular\n" 1016s "Plural" 1016s msgstr "Een\n" 1016s "Twee\n" 1016s "Drie" 1016s """ 1016s pofile = self.poparse(posource) 1016s assert len(pofile.units) == 1 1016s unit = pofile.units[0] 1016s > assert unit.hasplural() 1016s E assert False 1016s E + where False = >() 1016s E + where > = .hasplural 1016s 1016s tests/translate/storage/test_po.py:374: AssertionError 1016s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 1016s def test_makeobsolete_untranslated(self): 1016s """Tests making an untranslated unit obsolete.""" 1016s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 1016s pofile = self.poparse(posource) 1016s unit = pofile.units[0] 1016s print(bytes(pofile)) 1016s assert not unit.isobsolete() 1016s unit.makeobsolete() 1016s > assert str(unit) == "" 1016s E assert '#~ msgid "te...~ msgstr ""\n' == '' 1016s E 1016s E + #~ msgid "test" 1016s E + #~ msgstr "" 1016s 1016s tests/translate/storage/test_po.py:449: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 1016s ________________________ TestXWikiFullPage.test_remove _________________________ 1016s 1016s self = 1016s 1016s @mark.xfail(reason="removal not working in full page") 1016s def test_remove(self): 1016s > super().test_remove() 1016s 1016s tests/translate/storage/test_properties.py:1614: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s self = 1016s 1016s def test_remove(self): 1016s """Tests removing a unit with a source string.""" 1016s store = self.StoreClass() 1016s unit = store.addsourceunit("Test String") 1016s # Some storages (MO, OmegaT) serialize only translated units 1016s unit.target = "Test target" 1016s assert headerless_len(store.units) == 1 1016s withunit = bytes(store) 1016s print(withunit) 1016s store.removeunit(unit) 1016s assert headerless_len(store.units) == 0 1016s withoutunit = bytes(store) 1016s print(withoutunit) 1016s > assert withoutunit != withunit 1016s E assert b'\n\n\n\n\n 0\n \n \n <content/>\n </xwikidoc>\n' != b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' 1016s 1016s tests/translate/storage/test_base.py:278: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' 1016s b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' 1016s ________________________ TestPYPOFile.test_kde_plurals _________________________ 1016s 1016s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xea8dd91c04a0> 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_kde_plurals(self): 1016s """Tests kde-style plurals. (Bug: 191).""" 1016s posource = r"""msgid "_n Singular\n" 1016s "Plural" 1016s msgstr "Een\n" 1016s "Twee\n" 1016s "Drie" 1016s """ 1016s pofile = self.poparse(posource) 1016s assert len(pofile.units) == 1 1016s unit = pofile.units[0] 1016s > assert unit.hasplural() 1016s E assert False 1016s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xea8dd53648f0>>() 1016s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xea8dd53648f0>> = <translate.storage.pypo.pounit object at 0xea8dd53648f0>.hasplural 1016s 1016s tests/translate/storage/test_po.py:374: AssertionError 1016s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 1016s 1016s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xea8dd91c1340> 1016s 1016s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 1016s def test_makeobsolete_untranslated(self): 1016s """Tests making an untranslated unit obsolete.""" 1016s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 1016s pofile = self.poparse(posource) 1016s unit = pofile.units[0] 1016s print(bytes(pofile)) 1016s assert not unit.isobsolete() 1016s unit.makeobsolete() 1016s > assert str(unit) == "" 1016s E assert '#~ msgid "te...~ msgstr ""\n' == '' 1016s E 1016s E + #~ msgid "test" 1016s E + #~ msgstr "" 1016s 1016s tests/translate/storage/test_po.py:449: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 1016s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 1016s 1016s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xea8dd9158c50> 1016s 1016s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 1016s def test_mixed_newlines_typecomment(self): 1016s """Checks that mixed newlines in typecomments are properly parsed.""" 1016s # This was generated by translate-tookit prior to 1016s # issue that test_dos_newlines_write is covering was fixed. 1016s posource = b"""#, fuzzy 1016s msgid "test me"\r 1016s msgstr ""\r 1016s """ 1016s > pofile = self.poparse(posource) 1016s 1016s tests/translate/storage/test_pypo.py:620: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s tests/translate/storage/test_po.py:214: in poparse 1016s return self.StoreClass(dummyfile) 1016s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 1016s super().__init__(inputfile, **kwargs) 1016s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 1016s self.parse(inputfile) 1016s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 1016s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s parse_state = <translate.storage.poparser.ParseState object at 0xea8dd4990680> 1016s store = <translate.storage.pypo.pofile object at 0xea8dd4992930> 1016s 1016s def parse_units(parse_state, store): 1016s unit = parse_header(parse_state, store) 1016s while unit: 1016s unit.infer_state() 1016s store.addunit(unit) 1016s unit = parse_unit(parse_state) 1016s if not parse_state.eof: 1016s > raise PoParseError(parse_state) 1016s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 1016s 1016s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 1016s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 1016s 1016s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0xea8dd918c7d0> 1016s 1016s @pytest.mark.xfail(reason="Not Implemented") 1016s def test_note_sanity(self): 1016s > super().test_note_sanity() 1016s 1016s tests/translate/storage/test_subtitles.py:13: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0xea8dd918c7d0> 1016s 1016s def test_note_sanity(self): 1016s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 1016s unit = self.unit 1016s 1016s unit.addnote("Test note 1", origin="translator") 1016s unit.addnote("Test note 2", origin="translator") 1016s unit.addnote("Test note 3", origin="translator") 1016s expected_notes = "Test note 1\nTest note 2\nTest note 3" 1016s actual_notes = unit.getnotes(origin="translator") 1016s > assert actual_notes == expected_notes 1016s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 1016s E 1016s E - Test note 1 1016s E - Test note 2 1016s E - Test note 3 1016s 1016s tests/translate/storage/test_base.py:180: AssertionError 1016s __________________________ TestCount.test_plurals_kde __________________________ 1016s 1016s self = <tests.translate.tools.test_pocount.TestCount object at 0xea8dd87cf890> 1016s 1016s @mark.xfail(reason="Support commented out pending removal") 1016s def test_plurals_kde(self): 1016s """Test that we correcly count old style KDE plurals.""" 1016s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 1016s 1016s tests/translate/tools/test_pocount.py:91: 1016s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1016s 1016s source = '_n: Singular\\n\nPlural', expectedsource = 2 1016s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 1016s 1016s @staticmethod 1016s def count(source, expectedsource, target=None, expectedtarget=None): 1016s """Simple helper to check the respective word counts.""" 1016s poelement = po.pounit(source) 1016s if target is not None: 1016s poelement.target = target 1016s wordssource, wordstarget = pocount.wordsinunit(poelement) 1016s print( 1016s 'Source (expected=%d; actual=%d): "%s"' 1016s % (expectedsource, wordssource, source) 1016s ) 1016s > assert wordssource == expectedsource 1016s E assert 3 == 2 1016s 1016s tests/translate/tools/test_pocount.py:33: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s Source (expected=2; actual=3): "_n: Singular\n 1016s Plural" 1016s _________________________ TestPOMerge.test_escape_tabs _________________________ 1016s 1016s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0xea8dd903dd00> 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_escape_tabs(self): 1016s """Ensure that input tabs are escaped in the output, like gettext does.""" 1016s # The strings below contains the tab character, not spaces. 1016s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 1016s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 1016s expectedpo = r"""msgid "First\tSecond" 1016s msgstr "Eerste\tTweede" 1016s """ 1016s pofile = self.mergestore(templatepo, mergepo) 1016s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 1016s > assert bytes(pofile).decode("utf-8") == expectedpo 1016s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 1016s E 1016s E - msgid "First\tSecond" 1016s E ? ^^ 1016s E + msgid "First Second" 1016s E ? ^ 1016s E msgstr "Eerste\tTweede" 1016s 1016s tests/translate/tools/test_pomerge.py:349: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s Expected: 1016s msgid "First\tSecond" 1016s msgstr "Eerste\tTweede" 1016s 1016s 1016s Merged: 1016s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 1016s __________________ TestPretranslate.test_merging_msgid_change __________________ 1016s 1016s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xea8dd90cc170> 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_merging_msgid_change(self): 1016s """ 1016s tests that if the msgid changes but the location stays the same that 1016s we merge. 1016s """ 1016s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 1016s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1016s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1016s newpo = self.pretranslatepo(input_source, template_source) 1016s print(bytes(newpo)) 1016s > assert bytes(newpo).decode("utf-8") == poexpected 1016s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 1016s E 1016s E #: simple.label 1016s E #: simple.accesskey 1016s E - #, fuzzy 1016s E msgid "Its &hard coding a newline.\n" 1016s E - msgstr "&Hart gekoeerde nuwe lyne\n" 1016s E + msgstr "" 1016s 1016s tests/translate/tools/test_pretranslate.py:130: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 1016s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 1016s 1016s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xea8dd90cc500> 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_merging_accelerator_changes(self): 1016s """ 1016s test that a change in the accelerator localtion still allows 1016s merging. 1016s """ 1016s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 1016s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 1016s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 1016s newpo = self.pretranslatepo(input_source, template_source) 1016s print(bytes(newpo)) 1016s > assert bytes(newpo).decode("utf-8") == poexpected 1016s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 1016s E 1016s E #: someline.c 1016s E msgid "A&bout" 1016s E - msgstr "&Info" 1016s E ? ----- 1016s E + msgstr "" 1016s 1016s tests/translate/tools/test_pretranslate.py:185: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 1016s _________________ TestPretranslate.test_lines_cut_differently __________________ 1016s 1016s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xea8dd90cc620> 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_lines_cut_differently(self): 1016s """ 1016s Checks that the correct formatting is preserved when pot an po lines 1016s differ. 1016s """ 1016s input_source = ( 1016s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 1016s ) 1016s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 1016s newpo = self.pretranslatepo(input_source, template_source) 1016s newpounit = self.singleunit(newpo) 1016s > assert str(newpounit) == template_source 1016s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 1016s E 1016s E #: simple.label 1016s E - msgid "Line" 1016s E + msgid "Line split " 1016s E ? +++++++ 1016s E - " split differently" 1016s E ? ------- 1016s E + "differently" 1016s E msgstr "Lyne verskillend gesny" 1016s 1016s tests/translate/tools/test_pretranslate.py:199: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s #: simple.label 1016s msgid "Line split " 1016s "differently" 1016s msgstr "Lyne verskillend gesny" 1016s 1016s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 1016s 1016s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xea8dd90cca70> 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_merging_msgid_change(self): 1016s """ 1016s tests that if the msgid changes but the location stays the same that 1016s we merge. 1016s """ 1016s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 1016s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1016s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1016s newpo = self.pretranslatepo(input_source, template_source) 1016s print(bytes(newpo)) 1016s > assert bytes(newpo).decode("utf-8") == poexpected 1016s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 1016s E 1016s E #: simple.label 1016s E #: simple.accesskey 1016s E - #, fuzzy 1016s E msgid "Its &hard coding a newline.\n" 1016s E - msgstr "&Hart gekoeerde nuwe lyne\n" 1016s E + msgstr "" 1016s 1016s tests/translate/tools/test_pretranslate.py:130: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 1016s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 1016s 1016s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xea8dd90cc1d0> 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_merging_accelerator_changes(self): 1016s """ 1016s test that a change in the accelerator localtion still allows 1016s merging. 1016s """ 1016s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 1016s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 1016s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 1016s newpo = self.pretranslatepo(input_source, template_source) 1016s print(bytes(newpo)) 1016s > assert bytes(newpo).decode("utf-8") == poexpected 1016s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 1016s E 1016s E #: someline.c 1016s E msgid "A&bout" 1016s E - msgstr "&Info" 1016s E ? ----- 1016s E + msgstr "" 1016s 1016s tests/translate/tools/test_pretranslate.py:185: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 1016s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 1016s 1016s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xea8dd90cc7a0> 1016s 1016s @mark.xfail(reason="Not Implemented") 1016s def test_lines_cut_differently(self): 1016s """ 1016s Checks that the correct formatting is preserved when pot an po lines 1016s differ. 1016s """ 1016s input_source = ( 1016s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 1016s ) 1016s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 1016s newpo = self.pretranslatepo(input_source, template_source) 1016s newpounit = self.singleunit(newpo) 1016s > assert str(newpounit) == template_source 1016s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 1016s E 1016s E #: simple.label 1016s E - msgid "Line" 1016s E + msgid "Line split " 1016s E ? +++++++ 1016s E - " split differently" 1016s E ? ------- 1016s E + "differently" 1016s E msgstr "Lyne verskillend gesny" 1016s 1016s tests/translate/tools/test_pretranslate.py:199: AssertionError 1016s ----------------------------- Captured stdout call ----------------------------- 1016s #: simple.label 1016s msgid "Line split " 1016s "differently" 1016s msgstr "Lyne verskillend gesny" 1016s 1016s =============================== warnings summary =============================== 1016s tests/translate/storage/test_cpo.py:15 1016s Warning: 1016s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 1016s ImportError('gettext PO library not found') 1016s In pytest 9.1 this warning will become an error by default. 1016s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 1016s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 1016s 1016s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 1016s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.qvxWnj/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 1016s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 1016s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 1016s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 1016s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 1016s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 1016s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 1016s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 1016s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 1016s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 1016s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 1016s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 1016s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 1016s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 1016s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 1016s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 1016s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 1016s Warning: Could not find accesskey for key.accesskey 1016s 1016s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 1016s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 1016s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 1016s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 1016s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 1016s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.qvxWnj/autopkgtest_tmp/tests/translate/convert/test.idml'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 1016s Warning: unclosed file <_io.BufferedReader name='translation.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 1016s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 1016s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 1016s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 1016s Warning: Could not find accesskey for prop.accesskey 1016s 1016s tests/translate/convert/test_po2tmx.py: 26 warnings 1016s tests/translate/filters/test_pofilter.py: 13 warnings 1016s tests/translate/storage/test_tbx.py: 17 warnings 1016s tests/translate/storage/test_tmx.py: 24 warnings 1016s Warning: This search incorrectly ignores the root element, and will be fixed in a future version. If you rely on the current behaviour, change it to './/body' 1016s 1016s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 1016s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 1016s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 1016s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 1016s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 1016s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 1016s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 1016s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 1016s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 1016s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 1016s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 1016s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 1016s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.qvxWnj/autopkgtest_tmp/tests/translate/convert/test.odt'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 1016s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 1016s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 1016s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 1016s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 1016s Enable tracemalloc to get traceback where the object was allocated. 1016s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1016s 1016s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 1016s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 1016s 1016s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 1016s Warning: DTD file '' does not validate 1016s 1016s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 1016s --------------------------- snapshot report summary ---------------------------- 1016s 23 snapshots passed. 1016s =========================== short test summary info ============================ 1016s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 1016s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 1016s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 1016s SKIPPED [1] tests/translate/storage/test_mo.py:498: Skip testing command line tools 1016s SKIPPED [16] tests/translate/tools/test_help.py:16: Skip testing command line tools 1016s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:49: Skip testing command line tools 1016s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:58: Skip testing command line tools 1016s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 1016s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 1016s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 1016s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 1016s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 1016s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 1016s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 1016s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 1016s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 1016s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 1016s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 1016s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 1016s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 1016s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 1016s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 1016s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 1016s XFAIL tests/translate/lang/test_common.py::test_word_khmer - ZWS is not considered a space in Python 2.6+. Khmer should extend words() to include \u200b in addition to other word breakers. 1016s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 1016s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 1016s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 1016s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 1016s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 1016s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 1016s XFAIL tests/translate/storage/test_omegat.py::TestOtFile::test_extensions - This doesn't work, due to two store classes handling different extensions, but factory listing it as one supported file type 1016s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 1016s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 1016s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 1016s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 1016s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 1016s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 1016s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 1016s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 1016s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 1016s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 1016s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 1016s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 1016s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 1016s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 1016s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 1016s ========= 3254 passed, 22 skipped, 39 xfailed, 127 warnings in 19.22s ========== 1018s autopkgtest [14:03:07]: test python3-translate: -----------------------] 1019s autopkgtest [14:03:08]: test python3-translate: - - - - - - - - - - results - - - - - - - - - - 1019s python3-translate PASS 1019s autopkgtest [14:03:08]: test python3-translate-commands: preparing testbed 1020s Reading package lists... 1020s Building dependency tree... 1020s Reading state information... 1021s Starting pkgProblemResolver with broken count: 0 1021s Starting 2 pkgProblemResolver with broken count: 0 1021s Done 1021s The following additional packages will be installed: 1021s translate-toolkit 1021s Recommended packages: 1021s translate-toolkit-doc 1021s The following NEW packages will be installed: 1021s autopkgtest-satdep translate-toolkit 1022s 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. 1022s Need to get 88.2 kB/89.1 kB of archives. 1022s After this operation, 253 kB of additional disk space will be used. 1022s Get:1 /tmp/autopkgtest.qvxWnj/3-autopkgtest-satdep.deb autopkgtest-satdep arm64 0 [884 B] 1023s Get:2 http://ftpmaster.internal/ubuntu oracular/universe arm64 translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 1024s Fetched 88.2 kB in 1s (77.0 kB/s) 1024s Selecting previously unselected package translate-toolkit. 1024s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 81654 files and directories currently installed.) 1024s Preparing to unpack .../translate-toolkit_3.12.2-1ubuntu1_all.deb ... 1024s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 1024s Selecting previously unselected package autopkgtest-satdep. 1024s Preparing to unpack .../3-autopkgtest-satdep.deb ... 1024s Unpacking autopkgtest-satdep (0) ... 1024s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 1024s Setting up autopkgtest-satdep (0) ... 1024s Processing triggers for man-db (2.12.1-1) ... 1029s (Reading database ... 81827 files and directories currently installed.) 1029s Removing autopkgtest-satdep (0) ... 1029s autopkgtest [14:03:18]: test python3-translate-commands: [----------------------- 1030s ============================= test session starts ============================== 1030s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 1030s cachedir: .pytest_cache 1030s rootdir: /tmp/autopkgtest.qvxWnj/autopkgtest_tmp 1030s plugins: syrupy-4.6.1 1036s collecting ... collected 3313 items / 2 skipped 1036s 1036s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 1036s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 1036s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 1036s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 1037s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 1037s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 1037s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 1037s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 1037s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 1037s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 1037s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 1037s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 1037s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 1037s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 1037s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 1037s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 1037s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 1037s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 1037s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 1037s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 1037s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 1037s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 1037s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 1037s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 1037s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 1037s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 1037s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 1037s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 1037s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 1037s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 1037s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 1037s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 1037s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 1037s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 1037s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 1037s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 1037s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 1037s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 1037s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 1037s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 1037s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 1037s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 1037s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 1037s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 1037s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 1037s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 1037s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 1037s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 1037s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 1037s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 1037s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 1037s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 1037s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 1037s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 1037s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 1037s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 1037s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 1037s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 1037s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 1037s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 1037s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 1037s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 1037s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 1037s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 1037s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 1037s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 1037s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 1038s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 1038s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 1038s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 1038s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 1038s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 1038s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 1038s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 1039s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 1039s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 1039s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 1039s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 1039s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 1039s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 1039s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 1039s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 1039s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 1039s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 1039s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 1039s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 1039s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 1039s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 1039s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 1039s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 1039s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 1039s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 1039s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 1039s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 1039s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 1039s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 1039s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 1039s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 1039s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 1039s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 1039s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 1039s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 1039s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 1039s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 1039s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 1039s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 1039s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 1039s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 1039s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 1039s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 1039s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 1039s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 1039s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 1039s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 1039s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 1039s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 1039s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 1039s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 1039s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 1039s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 1039s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 1039s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 1039s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 1039s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 1039s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 1039s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 1039s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 1039s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 1040s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 1040s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 1040s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 1040s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 1040s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 1040s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 1040s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 1040s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 1040s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 1040s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 1040s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 1040s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 1040s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 1040s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 1040s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 1040s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 1040s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 1040s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 1040s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 1040s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 1040s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 1040s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 1040s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 1040s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 1040s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 1040s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 1040s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 1040s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 1040s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 1040s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 1040s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 1040s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 1040s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 1040s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 1040s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 1040s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 1040s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 1040s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 1040s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 1040s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 1040s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 1040s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 1040s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 1040s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 1040s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 1040s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 1040s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 1040s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 1040s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 1040s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 1040s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 1040s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 1040s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 1040s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 1040s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 1040s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 1040s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 1040s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 1040s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 1040s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 1040s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 1040s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 1040s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 1040s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 1040s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 1040s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 1040s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 1040s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 1040s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 1040s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 1040s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 1040s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 1040s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 1040s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 1040s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 1040s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 1040s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 1040s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 1040s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 1040s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 1040s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 1040s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 1040s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 1040s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 1040s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 1040s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 1040s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 1040s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 1040s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 1040s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 1040s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 1040s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 1040s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 1040s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 1040s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 1040s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 1040s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 1040s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 1041s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 1041s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 1041s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 1041s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 1041s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 1041s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 1041s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 1041s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 1041s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 1041s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 1041s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 1041s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 1041s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 1042s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 1042s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 1042s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 1042s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 1042s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 1042s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 1042s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 1042s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 1042s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 1042s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 1042s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 1042s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 1042s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 1042s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 1042s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 1042s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 1042s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 1042s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 1042s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 1042s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 1042s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 1042s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 1042s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 1042s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 1042s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 1042s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 1042s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 1042s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 1042s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 1042s tests/translate/storage/test_mo.py::TestMOFile::test_output PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 1042s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[\u015e\u0167\u0159\u012b\u019e\u0260 {ok}-\u015e\u0167\u0159\u012b\u019e\u0260] PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 1042s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 1042s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 1042s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 1042s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 1042s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 1042s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 1042s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 1042s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 1042s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 1042s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 1042s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 1042s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 1042s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 1043s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 1043s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 1043s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 1043s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 1043s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 1043s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 1043s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 1043s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 1043s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 1043s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 1043s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 1043s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 1043s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 1043s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 1043s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 1043s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 1044s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 1044s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 1044s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 1044s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 1044s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 1044s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 1044s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 1044s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 1044s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 1044s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 1044s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 1044s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 1044s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 1044s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 1045s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 1045s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 1045s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 1045s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 1045s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 1045s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 1045s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 1045s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 1046s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 1046s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 1046s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 1046s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 1046s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 1046s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 1046s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 1046s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 1046s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 1046s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 1046s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 1046s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 1046s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 1046s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 1046s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 1046s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 1046s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 1046s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 1047s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 1047s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 1047s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 1047s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 1047s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 1047s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 1047s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 1047s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 1047s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 1047s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 1047s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 1047s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 1047s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 1047s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[build_tmdb] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[phppo2pypo] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[poclean] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[pocompile] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[poconflicts] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[pocount] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[podebug] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[pogrep] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[pomerge] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[porestructure] PASSED [ 94%] 1048s tests/translate/tools/test_help.py::test_help[posegment] PASSED [ 94%] 1049s tests/translate/tools/test_help.py::test_help[poswap] PASSED [ 94%] 1049s tests/translate/tools/test_help.py::test_help[poterminology] PASSED [ 95%] 1049s tests/translate/tools/test_help.py::test_help[pretranslate] PASSED [ 95%] 1049s tests/translate/tools/test_help.py::test_help[pydiff] PASSED [ 95%] 1049s tests/translate/tools/test_help.py::test_help[pypo2phppo] PASSED [ 95%] 1049s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 1049s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 1049s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 1049s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 1049s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 1049s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 1049s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 1049s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 1049s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 1049s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 1050s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 1050s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 1050s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 1050s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 1050s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 1050s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 1050s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 1050s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 1050s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 1050s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 1050s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 1050s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 1050s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff PASSED [ 99%] 1050s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff PASSED [100%] 1050s 1050s ================================== XFAILURES =================================== 1050s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 1050s 1050s self = <tests.translate.convert.test_dtd2po.TestDTD2PO object at 0xed41edb6d550> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_accelerator_keys_not_in_sentence(self): 1050s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 1050s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 1050s <!ENTITY useAutoScroll.accesskey "a">""" 1050s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 1050s <!ENTITY useAutoScroll.accesskey "a">""" 1050s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 1050s print(pofile) 1050s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 1050s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 1050s 1050s tests/translate/convert/test_dtd2po.py:348: AttributeError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s <translate.storage.pypo.pofile object at 0xed41ebd015b0> 1050s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 1050s 1050s self = <tests.translate.convert.test_dtd2po.TestDTD2POCommand object at 0xed41ed7b2e40> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_accelerator_keys_not_in_sentence(self): 1050s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 1050s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 1050s <!ENTITY useAutoScroll.accesskey "a">""" 1050s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 1050s <!ENTITY useAutoScroll.accesskey "a">""" 1050s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 1050s print(pofile) 1050s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 1050s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 1050s 1050s tests/translate/convert/test_dtd2po.py:348: AttributeError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s <translate.storage.pypo.pofile object at 0xed41ebd03440> 1050s ________________ TestPO2Php.test_merging_propertyless_template _________________ 1050s 1050s self = <tests.translate.convert.test_po2php.TestPO2Php object at 0xed41ecefb5c0> 1050s 1050s @mark.xfail(reason="Need to review if we want this behaviour") 1050s def test_merging_propertyless_template(self): 1050s """Check that when merging with a template with no property values that we copy the template.""" 1050s posource = "" 1050s proptemplate = "# A comment\n" 1050s propexpected = proptemplate 1050s > propfile = self.merge2prop(proptemplate, posource) 1050s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 1050s 1050s tests/translate/convert/test_po2php.py:386: AttributeError 1050s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 1050s 1050s self = <tests.translate.convert.test_po2php.TestPO2PhpCommand object at 0xed41ecee8bf0> 1050s 1050s @mark.xfail(reason="Need to review if we want this behaviour") 1050s def test_merging_propertyless_template(self): 1050s """Check that when merging with a template with no property values that we copy the template.""" 1050s posource = "" 1050s proptemplate = "# A comment\n" 1050s propexpected = proptemplate 1050s > propfile = self.merge2prop(proptemplate, posource) 1050s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 1050s 1050s tests/translate/convert/test_po2php.py:386: AttributeError 1050s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 1050s 1050s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0xed41ec8fc380> 1050s 1050s @mark.xfail(reason="Not implemented - review if this is even correct") 1050s def test_merging_msgid_change(self): 1050s """Tests that if the msgid changes but the location stays the same that we merge.""" 1050s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 1050s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1050s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1050s newpo = self.convertpot(potsource, posource) 1050s print(newpo) 1050s > assert str(self.singleunit(newpo)) == poexpected 1050s 1050s tests/translate/convert/test_pot2po.py:121: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s pofile = <translate.storage.pypo.pofile object at 0xed41eb5f9c40> 1050s 1050s @staticmethod 1050s def singleunit(pofile): 1050s """Checks that the pofile contains a single non-header unit, and returns it.""" 1050s > assert len(pofile.units) == 2 1050s E assert 3 == 2 1050s E + where 3 = len([<translate.storage.pypo.pounit object at 0xed41eb5fbbc0>, <translate.storage.pypo.pounit object at 0xed41eb6d8440>, <translate.storage.pypo.pounit object at 0xed41eb6da480>]) 1050s E + where [<translate.storage.pypo.pounit object at 0xed41eb5fbbc0>, <translate.storage.pypo.pounit object at 0xed41eb6d8440>, <translate.storage.pypo.pounit object at 0xed41eb6da480>] = <translate.storage.pypo.pofile object at 0xed41eb5f9c40>.units 1050s 1050s tests/translate/convert/test_pot2po.py:25: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s <translate.storage.pypo.pofile object at 0xed41eb5f9c40> 1050s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 1050s 1050s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0xed41ec875bb0> 1050s 1050s @mark.xfail(reason="Not Implemented - needs review") 1050s def test_merging_accelerator_changes(self): 1050s """Test that a change in the accelerator localtion still allows merging.""" 1050s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 1050s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 1050s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 1050s newpo = self.convertpot(potsource, posource) 1050s print(newpo) 1050s > assert str(self.singleunit(newpo)) == poexpected 1050s 1050s tests/translate/convert/test_pot2po.py:190: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s pofile = <translate.storage.pypo.pofile object at 0xed41eb6dbd40> 1050s 1050s @staticmethod 1050s def singleunit(pofile): 1050s """Checks that the pofile contains a single non-header unit, and returns it.""" 1050s > assert len(pofile.units) == 2 1050s E assert 3 == 2 1050s E + where 3 = len([<translate.storage.pypo.pounit object at 0xed41eb6daab0>, <translate.storage.pypo.pounit object at 0xed41eb6db3e0>, <translate.storage.pypo.pounit object at 0xed41eb6dafc0>]) 1050s E + where [<translate.storage.pypo.pounit object at 0xed41eb6daab0>, <translate.storage.pypo.pounit object at 0xed41eb6db3e0>, <translate.storage.pypo.pounit object at 0xed41eb6dafc0>] = <translate.storage.pypo.pofile object at 0xed41eb6dbd40>.units 1050s 1050s tests/translate/convert/test_pot2po.py:25: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s <translate.storage.pypo.pofile object at 0xed41eb6dbd40> 1050s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 1050s 1050s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0xed41ec875d30> 1050s 1050s @mark.xfail(reason="Not Implemented - review if this is even correct") 1050s def test_lines_cut_differently(self): 1050s """Checks that the correct formatting is preserved when pot an po lines differ.""" 1050s potsource = ( 1050s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 1050s ) 1050s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 1050s newpo = self.convertpot(potsource, posource) 1050s newpounit = self.singleunit(newpo) 1050s > assert str(newpounit) == posource 1050s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 1050s E 1050s E #: simple.label 1050s E - msgid "Line" 1050s E + msgid "Line split " 1050s E ? +++++++ 1050s E - " split differently" 1050s E ? ------- 1050s E + "differently" 1050s E msgstr "Lyne verskillend gesny" 1050s 1050s tests/translate/convert/test_pot2po.py:201: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s #: simple.label 1050s msgid "Line split " 1050s "differently" 1050s msgstr "Lyne verskillend gesny" 1050s 1050s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 1050s 1050s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0xed41ec54c1a0> 1050s 1050s @mark.xfail(reason="Not implemented - review if this is even correct") 1050s def test_merging_msgid_change(self): 1050s """Tests that if the msgid changes but the location stays the same that we merge.""" 1050s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 1050s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1050s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1050s newpo = self.convertpot(potsource, posource) 1050s print(newpo) 1050s > assert str(self.singleunit(newpo)) == poexpected 1050s 1050s tests/translate/convert/test_pot2po.py:121: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s pofile = <translate.storage.pypo.pofile object at 0xed41ebc92cc0> 1050s 1050s @staticmethod 1050s def singleunit(pofile): 1050s """Checks that the pofile contains a single non-header unit, and returns it.""" 1050s > assert len(pofile.units) == 2 1050s E assert 3 == 2 1050s E + where 3 = len([<translate.storage.pypo.pounit object at 0xed41ec8757f0>, <translate.storage.pypo.pounit object at 0xed41ec898440>, <translate.storage.pypo.pounit object at 0xed41eb6b9a60>]) 1050s E + where [<translate.storage.pypo.pounit object at 0xed41ec8757f0>, <translate.storage.pypo.pounit object at 0xed41ec898440>, <translate.storage.pypo.pounit object at 0xed41eb6b9a60>] = <translate.storage.pypo.pofile object at 0xed41ebc92cc0>.units 1050s 1050s tests/translate/convert/test_pot2po.py:25: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s <translate.storage.pypo.pofile object at 0xed41ebc92cc0> 1050s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 1050s 1050s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0xed41ec54c860> 1050s 1050s @mark.xfail(reason="Not Implemented - needs review") 1050s def test_merging_accelerator_changes(self): 1050s """Test that a change in the accelerator localtion still allows merging.""" 1050s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 1050s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 1050s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 1050s newpo = self.convertpot(potsource, posource) 1050s print(newpo) 1050s > assert str(self.singleunit(newpo)) == poexpected 1050s 1050s tests/translate/convert/test_pot2po.py:190: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s pofile = <translate.storage.pypo.pofile object at 0xed41eb6daab0> 1050s 1050s @staticmethod 1050s def singleunit(pofile): 1050s """Checks that the pofile contains a single non-header unit, and returns it.""" 1050s > assert len(pofile.units) == 2 1050s E assert 3 == 2 1050s E + where 3 = len([<translate.storage.pypo.pounit object at 0xed41eb6db290>, <translate.storage.pypo.pounit object at 0xed41eb6dac60>, <translate.storage.pypo.pounit object at 0xed41eb6d98e0>]) 1050s E + where [<translate.storage.pypo.pounit object at 0xed41eb6db290>, <translate.storage.pypo.pounit object at 0xed41eb6dac60>, <translate.storage.pypo.pounit object at 0xed41eb6d98e0>] = <translate.storage.pypo.pofile object at 0xed41eb6daab0>.units 1050s 1050s tests/translate/convert/test_pot2po.py:25: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s <translate.storage.pypo.pofile object at 0xed41eb6daab0> 1050s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 1050s 1050s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0xed41ec54ca10> 1050s 1050s @mark.xfail(reason="Not Implemented - review if this is even correct") 1050s def test_lines_cut_differently(self): 1050s """Checks that the correct formatting is preserved when pot an po lines differ.""" 1050s potsource = ( 1050s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 1050s ) 1050s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 1050s newpo = self.convertpot(potsource, posource) 1050s newpounit = self.singleunit(newpo) 1050s > assert str(newpounit) == posource 1050s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 1050s E 1050s E #: simple.label 1050s E - msgid "Line" 1050s E + msgid "Line split " 1050s E ? +++++++ 1050s E - " split differently" 1050s E ? ------- 1050s E + "differently" 1050s E msgstr "Lyne verskillend gesny" 1050s 1050s tests/translate/convert/test_pot2po.py:201: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s #: simple.label 1050s msgid "Line split " 1050s "differently" 1050s msgstr "Lyne verskillend gesny" 1050s 1050s ________________________ TestYAML2PO.test_no_duplicates ________________________ 1050s 1050s self = <translate.storage.yaml.YAMLFile object at 0xed41eb65f740> 1050s input = '\nfoo: bar\nfoo: baz\n' 1050s 1050s def parse(self, input): 1050s """Parse the given file or file source string.""" 1050s if hasattr(input, "name"): 1050s self.filename = input.name 1050s elif not getattr(self, "filename", ""): 1050s self.filename = "" 1050s if hasattr(input, "read"): 1050s src = input.read() 1050s input.close() 1050s input = src 1050s if isinstance(input, bytes): 1050s input = input.decode("utf-8") 1050s try: 1050s > self._original = self.yaml.load(input) 1050s 1050s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 1050s return constructor.get_single_data() 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 1050s return self.construct_document(node) 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 1050s for _dummy in generator: 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 1050s self.construct_mapping(node, data, deep=True) 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 1050s if self.check_mapping_key(node, key_node, maptyp, key, value): 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0xed41eb65dfd0> 1050s node = MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag=...'bar')), (ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag='tag:yaml.org,2002:str', value='baz'))]) 1050s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 1050s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 1050s 1050s def check_mapping_key(self, node, key_node, mapping, key, value): 1050s # type: (Any, Any, Any, Any, Any) -> bool 1050s """return True if key is unique""" 1050s if key in mapping: 1050s if not self.allow_duplicate_keys: 1050s mk = mapping.get(key) 1050s args = [ 1050s 'while constructing a mapping', 1050s node.start_mark, 1050s 'found duplicate key "{}" with value "{}" ' 1050s '(original value: "{}")'.format(key, value, mk), 1050s key_node.start_mark, 1050s """ 1050s To suppress this check see: 1050s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 1050s """, 1050s """\ 1050s Duplicate keys will become an error in future releases, and are errors 1050s by default when using the new API. 1050s """, 1050s ] 1050s if self.allow_duplicate_keys is None: 1050s warnings.warn(DuplicateKeyFutureWarning(*args)) 1050s else: 1050s > raise DuplicateKeyError(*args) 1050s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 1050s E in "<unicode string>", line 2, column 1: 1050s E foo: bar 1050s E ^ (line: 2) 1050s E found duplicate key "foo" with value "baz" (original value: "bar") 1050s E in "<unicode string>", line 3, column 1: 1050s E foo: baz 1050s E ^ (line: 3) 1050s E 1050s E To suppress this check see: 1050s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 1050s 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 1050s 1050s During handling of the above exception, another exception occurred: 1050s 1050s self = <tests.translate.convert.test_yaml2po.TestYAML2PO object at 0xed41ec4bc260> 1050s 1050s @pytest.mark.xfail(reason="This is invalid YAML document") 1050s def test_no_duplicates(self): 1050s """Check converting drops duplicates.""" 1050s input_string = """ 1050s foo: bar 1050s foo: baz 1050s """ 1050s > target_store = self._convert_to_store(input_string) 1050s 1050s tests/translate/convert/test_yaml2po.py:112: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 1050s return self._convert(*args, **kwargs)[0] 1050s tests/translate/convert/test_yaml2po.py:28: in _convert 1050s converter = self.ConverterClass( 1050s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 1050s self.source_store = self.SourceStoreClass(input_file) 1050s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 1050s self.parse(inputfile) 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s self = <translate.storage.yaml.YAMLFile object at 0xed41eb65f740> 1050s input = '\nfoo: bar\nfoo: baz\n' 1050s 1050s def parse(self, input): 1050s """Parse the given file or file source string.""" 1050s if hasattr(input, "name"): 1050s self.filename = input.name 1050s elif not getattr(self, "filename", ""): 1050s self.filename = "" 1050s if hasattr(input, "read"): 1050s src = input.read() 1050s input.close() 1050s input = src 1050s if isinstance(input, bytes): 1050s input = input.decode("utf-8") 1050s try: 1050s self._original = self.yaml.load(input) 1050s except YAMLError as e: 1050s message = getattr(e, "problem", getattr(e, "message", str(e))) 1050s if hasattr(e, "problem_mark"): 1050s message += f" {e.problem_mark}" 1050s > raise base.ParseError(message) 1050s E translate.storage.base.ParseError: 'found duplicate key "foo" with value "baz" (original value: "bar") in "<unicode string>", line 3, column 1:\n foo: baz\n ^ (line: 3)' 1050s 1050s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 1050s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 1050s 1050s self = <translate.storage.yaml.YAMLFile object at 0xed41eb63f590> 1050s input = '\nfoo: bar\nfoo: baz\n' 1050s 1050s def parse(self, input): 1050s """Parse the given file or file source string.""" 1050s if hasattr(input, "name"): 1050s self.filename = input.name 1050s elif not getattr(self, "filename", ""): 1050s self.filename = "" 1050s if hasattr(input, "read"): 1050s src = input.read() 1050s input.close() 1050s input = src 1050s if isinstance(input, bytes): 1050s input = input.decode("utf-8") 1050s try: 1050s > self._original = self.yaml.load(input) 1050s 1050s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 1050s return constructor.get_single_data() 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 1050s return self.construct_document(node) 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 1050s for _dummy in generator: 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 1050s self.construct_mapping(node, data, deep=True) 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 1050s if self.check_mapping_key(node, key_node, maptyp, key, value): 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0xed41eb63f110> 1050s node = MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag=...'bar')), (ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag='tag:yaml.org,2002:str', value='baz'))]) 1050s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 1050s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 1050s 1050s def check_mapping_key(self, node, key_node, mapping, key, value): 1050s # type: (Any, Any, Any, Any, Any) -> bool 1050s """return True if key is unique""" 1050s if key in mapping: 1050s if not self.allow_duplicate_keys: 1050s mk = mapping.get(key) 1050s args = [ 1050s 'while constructing a mapping', 1050s node.start_mark, 1050s 'found duplicate key "{}" with value "{}" ' 1050s '(original value: "{}")'.format(key, value, mk), 1050s key_node.start_mark, 1050s """ 1050s To suppress this check see: 1050s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 1050s """, 1050s """\ 1050s Duplicate keys will become an error in future releases, and are errors 1050s by default when using the new API. 1050s """, 1050s ] 1050s if self.allow_duplicate_keys is None: 1050s warnings.warn(DuplicateKeyFutureWarning(*args)) 1050s else: 1050s > raise DuplicateKeyError(*args) 1050s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 1050s E in "<unicode string>", line 2, column 1: 1050s E foo: bar 1050s E ^ (line: 2) 1050s E found duplicate key "foo" with value "baz" (original value: "bar") 1050s E in "<unicode string>", line 3, column 1: 1050s E foo: baz 1050s E ^ (line: 3) 1050s E 1050s E To suppress this check see: 1050s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 1050s 1050s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 1050s 1050s During handling of the above exception, another exception occurred: 1050s 1050s self = <tests.translate.convert.test_yaml2po.TestYAML2POCommand object at 0xed41ec4bd790> 1050s 1050s @pytest.mark.xfail(reason="This is invalid YAML document") 1050s def test_no_duplicates(self): 1050s """Check converting drops duplicates.""" 1050s input_string = """ 1050s foo: bar 1050s foo: baz 1050s """ 1050s > target_store = self._convert_to_store(input_string) 1050s 1050s tests/translate/convert/test_yaml2po.py:112: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 1050s return self._convert(*args, **kwargs)[0] 1050s tests/translate/convert/test_yaml2po.py:28: in _convert 1050s converter = self.ConverterClass( 1050s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 1050s self.source_store = self.SourceStoreClass(input_file) 1050s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 1050s self.parse(inputfile) 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s self = <translate.storage.yaml.YAMLFile object at 0xed41eb63f590> 1050s input = '\nfoo: bar\nfoo: baz\n' 1050s 1050s def parse(self, input): 1050s """Parse the given file or file source string.""" 1050s if hasattr(input, "name"): 1050s self.filename = input.name 1050s elif not getattr(self, "filename", ""): 1050s self.filename = "" 1050s if hasattr(input, "read"): 1050s src = input.read() 1050s input.close() 1050s input = src 1050s if isinstance(input, bytes): 1050s input = input.decode("utf-8") 1050s try: 1050s self._original = self.yaml.load(input) 1050s except YAMLError as e: 1050s message = getattr(e, "problem", getattr(e, "message", str(e))) 1050s if hasattr(e, "problem_mark"): 1050s message += f" {e.problem_mark}" 1050s > raise base.ParseError(message) 1050s E translate.storage.base.ParseError: 'found duplicate key "foo" with value "baz" (original value: "bar") in "<unicode string>", line 3, column 1:\n foo: baz\n ^ (line: 3)' 1050s 1050s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 1050s __________________________ test_acceleratedvariables ___________________________ 1050s 1050s @mark.xfail(reason="Accelerated variables needs a better implementation") 1050s def test_acceleratedvariables(): 1050s """Test for accelerated variables.""" 1050s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 1050s mozillachecker = checks.MozillaChecker() 1050s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 1050s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 1050s 1050s tests/translate/filters/test_checks.py:206: AttributeError 1050s ___________________________ test_musttranslatewords ____________________________ 1050s 1050s @mark.xfail(reason="FIXME: All fails() tests are not working") 1050s def test_musttranslatewords(): 1050s """Tests stopwords.""" 1050s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 1050s assert passes( 1050s stdchecker.musttranslatewords, 1050s "This uses Mozilla of course", 1050s "hierdie gebruik le mozille natuurlik", 1050s ) 1050s stdchecker = checks.StandardChecker( 1050s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 1050s ) 1050s assert passes( 1050s stdchecker.musttranslatewords, 1050s "This uses Mozilla of course", 1050s "hierdie gebruik le mozille natuurlik", 1050s ) 1050s > assert fails( 1050s stdchecker.musttranslatewords, 1050s "This uses Mozilla of course", 1050s "hierdie gebruik Mozilla natuurlik", 1050s ) 1050s E AssertionError: assert False 1050s E + where False = fails(<bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0xed41eb351790>>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 1050s E + where <bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0xed41eb351790>> = <translate.filters.checks.StandardChecker object at 0xed41eb351790>.musttranslatewords 1050s 1050s tests/translate/filters/test_checks.py:612: AssertionError 1050s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 1050s 1050s @mark.xfail(reason="Bug #3408") 1050s def test_persian_single_and_double_quote_fail_at_the_same_time(): 1050s """Test Persian single and double quote failures in string with single quotes.""" 1050s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 1050s 1050s # With single quote check. 1050s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 1050s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 1050s E assert False 1050s E + where False = fails(<bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0xed41eb324a70>>, "Path: '%S'", 'مسیر: "%S"\u200e') 1050s E + where <bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0xed41eb324a70>> = <translate.filters.checks.StandardChecker object at 0xed41eb324a70>.singlequoting 1050s 1050s tests/translate/filters/test_checks.py:1271: AssertionError 1050s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 1050s 1050s @mark.xfail(reason="Bug #3506") 1050s def test_bengali_mozilla_inverted_xmltags(): 1050s """Test Bengali Mozilla XML tags.""" 1050s bn_mozilla_checker = checks.MozillaChecker( 1050s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 1050s ) 1050s str_en = """We <a href="%(cofound_url)s" rel="external">co-founded</a> the <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> to.""" 1050s str_bn = """এর প্রচলন ঘটাতে আমরা <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> প্রতিষ্ঠায় <a href="%(cofound_url)s" rel="external">সহযোগী</a> ছিলাম।ন।""" 1050s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 1050s E assert False 1050s E + where False = passes(<bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0xed41eb358e00>>, 'We <a href="%(cofound_url)s" rel="external">co-founded</a> the <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> to.', 'এর প্রচলন ঘটাতে আমরা <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> প্রতিষ্ঠায় <a href="%(cofound_url)s" rel="external">সহযোগী</a> ছিলাম।ন।') 1050s E + where <bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0xed41eb358e00>> = <translate.filters.checks.MozillaChecker object at 0xed41eb358e00>.xmltags 1050s 1050s tests/translate/filters/test_checks.py:2065: AssertionError 1050s _______________________________ test_word_khmer ________________________________ 1050s 1050s @mark.xfail( 1050s reason="ZWS is not considered a space in Python 2.6+. Khmer " 1050s "should extend words() to include \\u200b in addition to " 1050s "other word breakers." 1050s ) 1050s def test_word_khmer(): 1050s language = common.Common 1050s # Let's test Khmer with zero width space (\u200b) 1050s words = language.words("ផ្ដល់\u200bយោបល់") 1050s print("ផ្ដល់\u200bយោបល់") 1050s print(language.words("ផ្ដល់<200b>យោបល់")) 1050s print(["ផ្ដល់", "យោបល់"]) 1050s > assert words == ["ផ្ដល់", "យោបល់"] 1050s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 1050s E 1050s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 1050s E Right contains one more item: 'យោបល់' 1050s E 1050s E Full diff: 1050s E [ 1050s E + 'ផ្ដល់\u200bយោបល់',... 1050s E 1050s E ...Full output truncated (3 lines hidden), use '-vv' to show 1050s 1050s tests/translate/lang/test_common.py:47: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s ផ្ដល់​យោបល់ 1050s ['ផ្ដល់<200b>យោបល់'] 1050s ['ផ្ដល់', 'យោបល់'] 1050s __________________ TestConverters.test_to_general_placeables ___________________ 1050s 1050s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0xed41ea907470> 1050s 1050s @mark.xfail(reason="Test needs fixing, disabled for now") 1050s def test_to_general_placeables(self): 1050s basetree = base.to_base_placeables(self.elem) 1050s gentree = general.to_general_placeables(basetree) 1050s > assert gentree == self.elem 1050s E assert <StringElem([...(['</a>'])>])> == <StringElem([...(['</a>'])>])> 1050s E 1050s E Full diff: 1050s E - <StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 1050s E ? ^^^ 1050s E + <StringElem([<StringElem(['Ģët '])>, <XMLEntityPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 1050s E ? ^^^^^^ 1050s 1050s tests/translate/storage/placeables/test_base.py:210: AssertionError 1050s ___________________ TestConverters.test_to_xliff_placeables ____________________ 1050s 1050s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0xed41ea9c29c0> 1050s 1050s @mark.xfail(reason="Test needs fixing, disabled for now") 1050s def test_to_xliff_placeables(self): 1050s basetree = base.to_base_placeables(self.elem) 1050s xliff_from_base = xliff.to_xliff_placeables(basetree) 1050s > assert str(xliff_from_base) != str(self.elem) 1050s E assert 'Ģët <a href="http://www.example.com" alt="Ģët &brand;!">&brandLong;</a>' != 'Ģët <a href="http://www.example.com" alt="Ģët &brand;!">&brandLong;</a>' 1050s E + where 'Ģët <a href="http://www.example.com" alt="Ģët &brand;!">&brandLong;</a>' = str(<StringElem([<StringElem(['Ģët '])>, <Ph(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <Ph(['&brandLong;'])>, <Ph(['</a>'])>])>) 1050s E + and 'Ģët <a href="http://www.example.com" alt="Ģët &brand;!">&brandLong;</a>' = str(<StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])>) 1050s E + where <StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> = <tests.translate.storage.placeables.test_base.TestConverters object at 0xed41ea9c29c0>.elem 1050s 1050s tests/translate/storage/placeables/test_base.py:216: AssertionError 1050s _____________________ test_quotefordtd_unimplemented_cases _____________________ 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_quotefordtd_unimplemented_cases(): 1050s """Test unimplemented quoting DTD cases.""" 1050s > assert dtd.quotefordtd("Between <p> and </p>") == ( 1050s '"Between <p> and </p>"' 1050s ) 1050s E assert '"Between <p> and </p>"' == '"Between <...d </p>"' 1050s E 1050s E - "Between <p> and </p>" 1050s E + "Between <p> and </p>" 1050s 1050s tests/translate/storage/test_dtd.py:72: AssertionError 1050s ___________________ test_unquotefromdtd_unimplemented_cases ____________________ 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_unquotefromdtd_unimplemented_cases(): 1050s """Test unimplemented unquoting DTD cases.""" 1050s > assert dtd.unquotefromdtd('"<p> and </p>"') == "<p> and </p>" 1050s E AssertionError: assert '<p> and </p>' == '<p> and </p>' 1050s E 1050s E - <p> and </p> 1050s E + <p> and </p> 1050s 1050s tests/translate/storage/test_dtd.py:103: AssertionError 1050s ________________________ TestDTD.test_comment_following ________________________ 1050s 1050s self = <tests.translate.storage.test_dtd.TestDTD object at 0xed41ea9ceed0> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_comment_following(self): 1050s """Check that comments that appear after and entity are not pushed onto another line.""" 1050s dtdsource = '<!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->' 1050s dtdregen = self.dtdregen(dtdsource) 1050s > assert dtdsource == dtdregen 1050s E assert '<!ENTITY tex...keyboards -->' == '<!-- + is ab...dkey2 "="> \n' 1050s E 1050s E + <!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards --> 1050s E - <!-- + is above this key on many keyboards --> 1050s E - <!ENTITY textZoomEnlargeCmd.commandkey2 "="> 1050s 1050s tests/translate/storage/test_dtd.py:344: AssertionError 1050s _________________________ TestDTD.test_invalid_quoting _________________________ 1050s 1050s self = <tests.translate.storage.test_dtd.TestDTD object at 0xed41ea9cd790> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_invalid_quoting(self): 1050s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 1050s # TODO: we should rather raise an error 1050s dtdsource = '<!ENTITY test.me "bananas for sale""room">\n' 1050s assert ( 1050s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 1050s ) 1050s dtdfile = self.dtdparse(dtdsource) 1050s assert len(dtdfile.units) == 1 1050s dtdunit = dtdfile.units[0] 1050s assert dtdunit.definition == '"bananas for sale"' 1050s > assert bytes(dtdfile) == b'<!ENTITY test.me "bananas for sale">\n' 1050s E assert b'' == b'<!ENTITY te... for sale">\n' 1050s E 1050s E Full diff: 1050s E - (b'<!ENTITY test.me "bananas for sale">\n') 1050s E + b'' 1050s 1050s tests/translate/storage/test_dtd.py:364: AssertionError 1050s __________________________ TestOtFile.test_extensions __________________________ 1050s 1050s self = <tests.translate.storage.test_omegat.TestOtFile object at 0xed41ebe9c230> 1050s 1050s @mark.xfail( 1050s reason="This doesn't work, due to two store classes handling different " 1050s "extensions, but factory listing it as one supported file type" 1050s ) 1050s def test_extensions(self): 1050s > super().test_extensions() 1050s 1050s tests/translate/storage/test_omegat.py:20: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s self = <tests.translate.storage.test_omegat.TestOtFile object at 0xed41ebe9c230> 1050s 1050s def test_extensions(self): 1050s """Test that the factory knows the extensions for this class.""" 1050s supported = factory.supported_files() 1050s supported_dict = { 1050s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 1050s } 1050s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 1050s return 1050s detail = supported_dict[ 1050s self.StoreClass.Name 1050s ] # will start to get problematic once translated 1050s print("Factory:", detail[0]) 1050s print("StoreClass:", self.StoreClass.Extensions) 1050s for ext in detail[0]: 1050s > assert ext in self.StoreClass.Extensions 1050s E AssertionError: assert 'tab' in ['utf8'] 1050s E + where ['utf8'] = <class 'translate.storage.omegat.OmegaTFile'>.Extensions 1050s E + where <class 'translate.storage.omegat.OmegaTFile'> = <tests.translate.storage.test_omegat.TestOtFile object at 0xed41ebe9c230>.StoreClass 1050s 1050s tests/translate/storage/test_base.py:386: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s Factory: ['utf8', 'tab'] 1050s StoreClass: ['utf8'] 1050s _________________________ TestPOFile.test_kde_plurals __________________________ 1050s 1050s self = <tests.translate.storage.test_po.TestPOFile object at 0xed41eaa695e0> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_kde_plurals(self): 1050s """Tests kde-style plurals. (Bug: 191).""" 1050s posource = r"""msgid "_n Singular\n" 1050s "Plural" 1050s msgstr "Een\n" 1050s "Twee\n" 1050s "Drie" 1050s """ 1050s pofile = self.poparse(posource) 1050s assert len(pofile.units) == 1 1050s unit = pofile.units[0] 1050s > assert unit.hasplural() 1050s E assert False 1050s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xed41e9e29940>>() 1050s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xed41e9e29940>> = <translate.storage.pypo.pounit object at 0xed41e9e29940>.hasplural 1050s 1050s tests/translate/storage/test_po.py:374: AssertionError 1050s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 1050s 1050s self = <tests.translate.storage.test_po.TestPOFile object at 0xed41eaa699d0> 1050s 1050s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 1050s def test_makeobsolete_untranslated(self): 1050s """Tests making an untranslated unit obsolete.""" 1050s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 1050s pofile = self.poparse(posource) 1050s unit = pofile.units[0] 1050s print(bytes(pofile)) 1050s assert not unit.isobsolete() 1050s unit.makeobsolete() 1050s > assert str(unit) == "" 1050s E assert '#~ msgid "te...~ msgstr ""\n' == '' 1050s E 1050s E + #~ msgid "test" 1050s E + #~ msgstr "" 1050s 1050s tests/translate/storage/test_po.py:449: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 1050s ________________________ TestXWikiFullPage.test_remove _________________________ 1050s 1050s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0xed41eaa35220> 1050s 1050s @mark.xfail(reason="removal not working in full page") 1050s def test_remove(self): 1050s > super().test_remove() 1050s 1050s tests/translate/storage/test_properties.py:1614: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0xed41eaa35220> 1050s 1050s def test_remove(self): 1050s """Tests removing a unit with a source string.""" 1050s store = self.StoreClass() 1050s unit = store.addsourceunit("Test String") 1050s # Some storages (MO, OmegaT) serialize only translated units 1050s unit.target = "Test target" 1050s assert headerless_len(store.units) == 1 1050s withunit = bytes(store) 1050s print(withunit) 1050s store.removeunit(unit) 1050s assert headerless_len(store.units) == 0 1050s withoutunit = bytes(store) 1050s print(withoutunit) 1050s > assert withoutunit != withunit 1050s E assert b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' != b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' 1050s 1050s tests/translate/storage/test_base.py:278: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' 1050s b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' 1050s ________________________ TestPYPOFile.test_kde_plurals _________________________ 1050s 1050s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xed41eaa37bf0> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_kde_plurals(self): 1050s """Tests kde-style plurals. (Bug: 191).""" 1050s posource = r"""msgid "_n Singular\n" 1050s "Plural" 1050s msgstr "Een\n" 1050s "Twee\n" 1050s "Drie" 1050s """ 1050s pofile = self.poparse(posource) 1050s assert len(pofile.units) == 1 1050s unit = pofile.units[0] 1050s > assert unit.hasplural() 1050s E assert False 1050s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xed41e8854ec0>>() 1050s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xed41e8854ec0>> = <translate.storage.pypo.pounit object at 0xed41e8854ec0>.hasplural 1050s 1050s tests/translate/storage/test_po.py:374: AssertionError 1050s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 1050s 1050s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xed41eaa375f0> 1050s 1050s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 1050s def test_makeobsolete_untranslated(self): 1050s """Tests making an untranslated unit obsolete.""" 1050s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 1050s pofile = self.poparse(posource) 1050s unit = pofile.units[0] 1050s print(bytes(pofile)) 1050s assert not unit.isobsolete() 1050s unit.makeobsolete() 1050s > assert str(unit) == "" 1050s E assert '#~ msgid "te...~ msgstr ""\n' == '' 1050s E 1050s E + #~ msgid "test" 1050s E + #~ msgstr "" 1050s 1050s tests/translate/storage/test_po.py:449: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 1050s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 1050s 1050s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xed41ea9f0e00> 1050s 1050s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 1050s def test_mixed_newlines_typecomment(self): 1050s """Checks that mixed newlines in typecomments are properly parsed.""" 1050s # This was generated by translate-tookit prior to 1050s # issue that test_dos_newlines_write is covering was fixed. 1050s posource = b"""#, fuzzy 1050s msgid "test me"\r 1050s msgstr ""\r 1050s """ 1050s > pofile = self.poparse(posource) 1050s 1050s tests/translate/storage/test_pypo.py:620: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s tests/translate/storage/test_po.py:214: in poparse 1050s return self.StoreClass(dummyfile) 1050s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 1050s super().__init__(inputfile, **kwargs) 1050s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 1050s self.parse(inputfile) 1050s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 1050s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s parse_state = <translate.storage.poparser.ParseState object at 0xed41e9e7a6c0> 1050s store = <translate.storage.pypo.pofile object at 0xed41e8b7deb0> 1050s 1050s def parse_units(parse_state, store): 1050s unit = parse_header(parse_state, store) 1050s while unit: 1050s unit.infer_state() 1050s store.addunit(unit) 1050s unit = parse_unit(parse_state) 1050s if not parse_state.eof: 1050s > raise PoParseError(parse_state) 1050s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 1050s 1050s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 1050s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 1050s 1050s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0xed41eaa00860> 1050s 1050s @pytest.mark.xfail(reason="Not Implemented") 1050s def test_note_sanity(self): 1050s > super().test_note_sanity() 1050s 1050s tests/translate/storage/test_subtitles.py:13: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0xed41eaa00860> 1050s 1050s def test_note_sanity(self): 1050s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 1050s unit = self.unit 1050s 1050s unit.addnote("Test note 1", origin="translator") 1050s unit.addnote("Test note 2", origin="translator") 1050s unit.addnote("Test note 3", origin="translator") 1050s expected_notes = "Test note 1\nTest note 2\nTest note 3" 1050s actual_notes = unit.getnotes(origin="translator") 1050s > assert actual_notes == expected_notes 1050s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 1050s E 1050s E - Test note 1 1050s E - Test note 2 1050s E - Test note 3 1050s 1050s tests/translate/storage/test_base.py:180: AssertionError 1050s __________________________ TestCount.test_plurals_kde __________________________ 1050s 1050s self = <tests.translate.tools.test_pocount.TestCount object at 0xed41eb8dca10> 1050s 1050s @mark.xfail(reason="Support commented out pending removal") 1050s def test_plurals_kde(self): 1050s """Test that we correcly count old style KDE plurals.""" 1050s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 1050s 1050s tests/translate/tools/test_pocount.py:91: 1050s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1050s 1050s source = '_n: Singular\\n\nPlural', expectedsource = 2 1050s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 1050s 1050s @staticmethod 1050s def count(source, expectedsource, target=None, expectedtarget=None): 1050s """Simple helper to check the respective word counts.""" 1050s poelement = po.pounit(source) 1050s if target is not None: 1050s poelement.target = target 1050s wordssource, wordstarget = pocount.wordsinunit(poelement) 1050s print( 1050s 'Source (expected=%d; actual=%d): "%s"' 1050s % (expectedsource, wordssource, source) 1050s ) 1050s > assert wordssource == expectedsource 1050s E assert 3 == 2 1050s 1050s tests/translate/tools/test_pocount.py:33: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s Source (expected=2; actual=3): "_n: Singular\n 1050s Plural" 1050s _________________________ TestPOMerge.test_escape_tabs _________________________ 1050s 1050s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0xed41ebd39ee0> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_escape_tabs(self): 1050s """Ensure that input tabs are escaped in the output, like gettext does.""" 1050s # The strings below contains the tab character, not spaces. 1050s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 1050s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 1050s expectedpo = r"""msgid "First\tSecond" 1050s msgstr "Eerste\tTweede" 1050s """ 1050s pofile = self.mergestore(templatepo, mergepo) 1050s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 1050s > assert bytes(pofile).decode("utf-8") == expectedpo 1050s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 1050s E 1050s E - msgid "First\tSecond" 1050s E ? ^^ 1050s E + msgid "First Second" 1050s E ? ^ 1050s E msgstr "Eerste\tTweede" 1050s 1050s tests/translate/tools/test_pomerge.py:349: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s Expected: 1050s msgid "First\tSecond" 1050s msgstr "Eerste\tTweede" 1050s 1050s 1050s Merged: 1050s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 1050s __________________ TestPretranslate.test_merging_msgid_change __________________ 1050s 1050s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xed41ebd7c080> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_merging_msgid_change(self): 1050s """ 1050s tests that if the msgid changes but the location stays the same that 1050s we merge. 1050s """ 1050s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 1050s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1050s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1050s newpo = self.pretranslatepo(input_source, template_source) 1050s print(bytes(newpo)) 1050s > assert bytes(newpo).decode("utf-8") == poexpected 1050s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 1050s E 1050s E #: simple.label 1050s E #: simple.accesskey 1050s E - #, fuzzy 1050s E msgid "Its &hard coding a newline.\n" 1050s E - msgstr "&Hart gekoeerde nuwe lyne\n" 1050s E + msgstr "" 1050s 1050s tests/translate/tools/test_pretranslate.py:130: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 1050s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 1050s 1050s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xed41ebd7f980> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_merging_accelerator_changes(self): 1050s """ 1050s test that a change in the accelerator localtion still allows 1050s merging. 1050s """ 1050s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 1050s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 1050s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 1050s newpo = self.pretranslatepo(input_source, template_source) 1050s print(bytes(newpo)) 1050s > assert bytes(newpo).decode("utf-8") == poexpected 1050s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 1050s E 1050s E #: someline.c 1050s E msgid "A&bout" 1050s E - msgstr "&Info" 1050s E ? ----- 1050s E + msgstr "" 1050s 1050s tests/translate/tools/test_pretranslate.py:185: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 1050s _________________ TestPretranslate.test_lines_cut_differently __________________ 1050s 1050s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xed41ebd7ca10> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_lines_cut_differently(self): 1050s """ 1050s Checks that the correct formatting is preserved when pot an po lines 1050s differ. 1050s """ 1050s input_source = ( 1050s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 1050s ) 1050s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 1050s newpo = self.pretranslatepo(input_source, template_source) 1050s newpounit = self.singleunit(newpo) 1050s > assert str(newpounit) == template_source 1050s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 1050s E 1050s E #: simple.label 1050s E - msgid "Line" 1050s E + msgid "Line split " 1050s E ? +++++++ 1050s E - " split differently" 1050s E ? ------- 1050s E + "differently" 1050s E msgstr "Lyne verskillend gesny" 1050s 1050s tests/translate/tools/test_pretranslate.py:199: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s #: simple.label 1050s msgid "Line split " 1050s "differently" 1050s msgstr "Lyne verskillend gesny" 1050s 1050s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 1050s 1050s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xed41ebd7d190> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_merging_msgid_change(self): 1050s """ 1050s tests that if the msgid changes but the location stays the same that 1050s we merge. 1050s """ 1050s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 1050s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1050s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 1050s newpo = self.pretranslatepo(input_source, template_source) 1050s print(bytes(newpo)) 1050s > assert bytes(newpo).decode("utf-8") == poexpected 1050s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 1050s E 1050s E #: simple.label 1050s E #: simple.accesskey 1050s E - #, fuzzy 1050s E msgid "Its &hard coding a newline.\n" 1050s E - msgstr "&Hart gekoeerde nuwe lyne\n" 1050s E + msgstr "" 1050s 1050s tests/translate/tools/test_pretranslate.py:130: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 1050s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 1050s 1050s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xed41ebd7c260> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_merging_accelerator_changes(self): 1050s """ 1050s test that a change in the accelerator localtion still allows 1050s merging. 1050s """ 1050s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 1050s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 1050s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 1050s newpo = self.pretranslatepo(input_source, template_source) 1050s print(bytes(newpo)) 1050s > assert bytes(newpo).decode("utf-8") == poexpected 1050s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 1050s E 1050s E #: someline.c 1050s E msgid "A&bout" 1050s E - msgstr "&Info" 1050s E ? ----- 1050s E + msgstr "" 1050s 1050s tests/translate/tools/test_pretranslate.py:185: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 1050s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 1050s 1050s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xed41ebd7eff0> 1050s 1050s @mark.xfail(reason="Not Implemented") 1050s def test_lines_cut_differently(self): 1050s """ 1050s Checks that the correct formatting is preserved when pot an po lines 1050s differ. 1050s """ 1050s input_source = ( 1050s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 1050s ) 1050s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 1050s newpo = self.pretranslatepo(input_source, template_source) 1050s newpounit = self.singleunit(newpo) 1050s > assert str(newpounit) == template_source 1050s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 1050s E 1050s E #: simple.label 1050s E - msgid "Line" 1050s E + msgid "Line split " 1050s E ? +++++++ 1050s E - " split differently" 1050s E ? ------- 1050s E + "differently" 1050s E msgstr "Lyne verskillend gesny" 1050s 1050s tests/translate/tools/test_pretranslate.py:199: AssertionError 1050s ----------------------------- Captured stdout call ----------------------------- 1050s #: simple.label 1050s msgid "Line split " 1050s "differently" 1050s msgstr "Lyne verskillend gesny" 1050s 1050s =============================== warnings summary =============================== 1050s tests/translate/storage/test_cpo.py:15 1050s Warning: 1050s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 1050s ImportError('gettext PO library not found') 1050s In pytest 9.1 this warning will become an error by default. 1050s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 1050s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 1050s 1050s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 1050s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.qvxWnj/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 1050s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 1050s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 1050s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 1050s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 1050s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 1050s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 1050s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 1050s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 1050s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 1050s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 1050s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 1050s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 1050s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 1050s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 1050s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 1050s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 1050s Warning: Could not find accesskey for key.accesskey 1050s 1050s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 1050s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 1050s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 1050s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 1050s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 1050s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.qvxWnj/autopkgtest_tmp/tests/translate/convert/test.idml'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 1050s Warning: unclosed file <_io.BufferedReader name='translation.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 1050s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 1050s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 1050s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 1050s Warning: Could not find accesskey for prop.accesskey 1050s 1050s tests/translate/convert/test_po2tmx.py: 26 warnings 1050s tests/translate/filters/test_pofilter.py: 13 warnings 1050s tests/translate/storage/test_tbx.py: 17 warnings 1050s tests/translate/storage/test_tmx.py: 24 warnings 1050s Warning: This search incorrectly ignores the root element, and will be fixed in a future version. If you rely on the current behaviour, change it to './/body' 1050s 1050s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 1050s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 1050s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 1050s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 1050s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 1050s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 1050s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 1050s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 1050s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 1050s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1050s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 1050s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 1050s Enable tracemalloc to get traceback where the object was allocated. 1050s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1050s 1051s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 1051s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 1051s Enable tracemalloc to get traceback where the object was allocated. 1051s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1051s 1051s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 1051s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.qvxWnj/autopkgtest_tmp/tests/translate/convert/test.odt'> 1051s Enable tracemalloc to get traceback where the object was allocated. 1051s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1051s 1051s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 1051s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 1051s Enable tracemalloc to get traceback where the object was allocated. 1051s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1051s 1051s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 1051s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 1051s Enable tracemalloc to get traceback where the object was allocated. 1051s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1051s 1051s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 1051s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 1051s Enable tracemalloc to get traceback where the object was allocated. 1051s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1051s 1051s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 1051s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 1051s Enable tracemalloc to get traceback where the object was allocated. 1051s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 1051s 1051s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 1051s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 1051s 1051s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 1051s Warning: DTD file '' does not validate 1051s 1051s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 1051s --------------------------- snapshot report summary ---------------------------- 1051s 23 snapshots passed. 1051s =========================== short test summary info ============================ 1051s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 1051s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 1051s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 1051s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 1051s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 1051s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 1051s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 1051s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 1051s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 1051s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 1051s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 1051s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 1051s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 1051s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 1051s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 1051s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 1051s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 1051s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 1051s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 1051s XFAIL tests/translate/lang/test_common.py::test_word_khmer - ZWS is not considered a space in Python 2.6+. Khmer should extend words() to include \u200b in addition to other word breakers. 1051s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 1051s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 1051s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 1051s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 1051s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 1051s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 1051s XFAIL tests/translate/storage/test_omegat.py::TestOtFile::test_extensions - This doesn't work, due to two store classes handling different extensions, but factory listing it as one supported file type 1051s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 1051s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 1051s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 1051s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 1051s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 1051s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 1051s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 1051s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 1051s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 1051s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 1051s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 1051s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 1051s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 1051s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 1051s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 1051s ========== 3273 passed, 3 skipped, 39 xfailed, 127 warnings in 20.31s ========== 1052s autopkgtest [14:03:41]: test python3-translate-commands: -----------------------] 1053s autopkgtest [14:03:42]: test python3-translate-commands: - - - - - - - - - - results - - - - - - - - - - 1053s python3-translate-commands PASS 1053s autopkgtest [14:03:42]: @@@@@@@@@@@@@@@@@@@@ summary 1053s translate-toolkit PASS 1053s python3-translate PASS 1053s python3-translate-commands PASS 1121s nova [W] Skipping flock in bos03-arm64 1121s Creating nova instance adt-oracular-arm64-translate-toolkit-20240608-134609-juju-7f2275-prod-proposed-migration-environment-3-fdf2528c-7838-4ead-871e-336d19df6e63 from image adt/ubuntu-oracular-arm64-server-20240608.img (UUID 22fa5d69-8269-442f-bb5d-fd1454f7b08f)... 1121s nova [W] Skipping flock in bos03-arm64 1121s Creating nova instance adt-oracular-arm64-translate-toolkit-20240608-134609-juju-7f2275-prod-proposed-migration-environment-3-fdf2528c-7838-4ead-871e-336d19df6e63 from image adt/ubuntu-oracular-arm64-server-20240608.img (UUID 22fa5d69-8269-442f-bb5d-fd1454f7b08f)...