0s autopkgtest [04:03:05]: starting date and time: 2024-06-08 04:03:05+0000 0s autopkgtest [04:03:05]: git checkout: 433ed4c Merge branch 'skia/nova_flock' into 'ubuntu/5.34+prod' 0s autopkgtest [04:03:05]: host juju-7f2275-prod-proposed-migration-environment-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.govige2l/out --timeout-copy=6000 --setup-commands 'ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_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\n" >> /etc/environment' --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' -- lxd -r lxd-armhf-10.145.243.222 lxd-armhf-10.145.243.222:autopkgtest/ubuntu/oracular/armhf 42s autopkgtest [04:03:47]: testbed dpkg architecture: armhf 44s autopkgtest [04:03:49]: testbed apt version: 2.9.3 44s autopkgtest [04:03:49]: @@@@@@@@@@@@@@@@@@@@ test bed setup 54s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 55s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [328 kB] 56s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [1680 B] 56s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 56s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 56s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main armhf Packages [35.4 kB] 56s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted armhf Packages [1860 B] 56s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf Packages [238 kB] 56s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse armhf Packages [1768 B] 56s Fetched 769 kB in 3s (303 kB/s) 57s Reading package lists... 73s tee: /proc/self/fd/2: Permission denied 96s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 96s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 97s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 97s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 98s Reading package lists... 98s Reading package lists... 99s Building dependency tree... 99s Reading state information... 99s Calculating upgrade... 100s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 100s Reading package lists... 100s Building dependency tree... 100s Reading state information... 101s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 104s autopkgtest [04:04:49]: rebooting testbed after setup commands that affected boot 200s autopkgtest [04:06:25]: testbed running kernel: Linux 6.5.0-35-generic #35~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 7 11:19:33 UTC 2 226s autopkgtest [04:06:51]: @@@@@@@@@@@@@@@@@@@@ apt-source translate-toolkit 245s Get:1 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (dsc) [3172 B] 245s Get:2 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (tar) [1203 kB] 245s Get:3 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (diff) [24.4 kB] 246s gpgv: Signature made Wed Apr 10 14:04:46 2024 UTC 246s gpgv: using RSA key A62D2CFBD50B9B5BF360D54B159EB5C4EFC8774C 246s gpgv: Can't check signature: No public key 246s dpkg-source: warning: cannot verify inline signature for ./translate-toolkit_3.12.2-1ubuntu1.dsc: no acceptable signature found 248s autopkgtest [04:07:13]: testing package translate-toolkit version 3.12.2-1ubuntu1 250s autopkgtest [04:07:15]: build not needed 253s autopkgtest [04:07:18]: test translate-toolkit: preparing testbed 296s autopkgtest: WARNING: Test dependencies are unsatisfiable with using apt pinning. Retrying with using all packages from oracular-proposed 320s Reading package lists... 320s Building dependency tree... 320s Reading state information... 321s Starting pkgProblemResolver with broken count: 0 321s Starting 2 pkgProblemResolver with broken count: 0 321s Done 322s The following additional packages will be installed: 322s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 322s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 322s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 322s python3-aeidon python3-bs4 python3-cheroot python3-dateutil 322s python3-diff-match-patch python3-enchant python3-iniparse 322s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 322s python3-more-itertools python3-phply python3-ply python3-pycountry 322s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 322s python3-simplejson python3-soupsieve python3-translate python3-vobject 322s python3-xapian subversion translate-toolkit 322s Suggested packages: 322s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 322s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 322s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 322s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 322s db5.3-util libapache2-mod-svn subversion-tools 322s Recommended packages: 322s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 322s python3-cssselect python3-html5lib python3-tz translate-toolkit-doc 322s The following NEW packages will be installed: 322s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 322s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 322s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 322s libxslt1.1 python3-aeidon python3-bs4 python3-cheroot python3-dateutil 322s python3-diff-match-patch python3-enchant python3-iniparse 322s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 322s python3-more-itertools python3-phply python3-ply python3-pycountry 322s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 322s python3-simplejson python3-soupsieve python3-translate python3-vobject 322s python3-xapian subversion translate-toolkit 322s 0 upgraded, 42 newly installed, 0 to remove and 21 not upgraded. 322s Need to get 10.0 MB/10.0 MB of archives. 322s After this operation, 38.3 MB of additional disk space will be used. 322s Get:1 /tmp/autopkgtest.fz6MXe/1-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [872 B] 324s Get:2 http://ftpmaster.internal/ubuntu oracular/main armhf emacsen-common all 3.0.5 [12.1 kB] 324s Get:3 http://ftpmaster.internal/ubuntu oracular/main armhf dictionaries-common all 1.29.7 [188 kB] 324s Get:4 http://ftpmaster.internal/ubuntu oracular/main armhf libgomp1 armhf 14.1.0-1ubuntu1 [125 kB] 324s Get:5 http://ftpmaster.internal/ubuntu oracular/main armhf gettext armhf 0.21-14ubuntu2 [800 kB] 324s Get:6 http://ftpmaster.internal/ubuntu oracular/main armhf hunspell-en-us all 1:2020.12.07-2 [280 kB] 324s Get:7 http://ftpmaster.internal/ubuntu oracular/main armhf libapr1t64 armhf 1.7.2-3.2 [86.0 kB] 324s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/main armhf libaprutil1t64 armhf 1.6.3-2ubuntu1 [82.5 kB] 324s Get:9 http://ftpmaster.internal/ubuntu oracular/main armhf libaspell15 armhf 0.60.8.1-1build1 [307 kB] 324s Get:10 http://ftpmaster.internal/ubuntu oracular/main armhf libhunspell-1.7-0 armhf 1.7.2+really1.7.2-10build3 [307 kB] 324s Get:11 http://ftpmaster.internal/ubuntu oracular/main armhf libenchant-2-2 armhf 2.3.3-2build2 [43.4 kB] 324s Get:12 http://ftpmaster.internal/ubuntu oracular/main armhf libexttextcat-data all 3.4.7-1build1 [193 kB] 324s Get:13 http://ftpmaster.internal/ubuntu oracular/universe armhf libserf-1-1 armhf 1.3.10-2 [40.2 kB] 324s Get:14 http://ftpmaster.internal/ubuntu oracular/universe armhf libutf8proc3 armhf 2.9.0-1build1 [70.6 kB] 324s Get:15 http://ftpmaster.internal/ubuntu oracular/universe armhf libsvn1 armhf 1.14.3-1build4 [1200 kB] 325s Get:16 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf libxapian30 armhf 1.4.25-1 [693 kB] 325s Get:17 http://ftpmaster.internal/ubuntu oracular/main armhf libxslt1.1 armhf 1.1.39-0exp1build1 [150 kB] 325s Get:18 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-aeidon all 1.11-2 [221 kB] 325s Get:19 http://ftpmaster.internal/ubuntu oracular/main armhf python3-soupsieve all 2.5-1 [33.0 kB] 325s Get:20 http://ftpmaster.internal/ubuntu oracular/main armhf python3-bs4 all 4.12.3-1 [109 kB] 325s Get:21 http://ftpmaster.internal/ubuntu oracular/main armhf python3-more-itertools all 10.2.0-1 [52.9 kB] 325s Get:22 http://ftpmaster.internal/ubuntu oracular/main armhf python3-jaraco.functools all 4.0.0-1 [10.7 kB] 325s Get:23 http://ftpmaster.internal/ubuntu oracular/main armhf python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 325s Get:24 http://ftpmaster.internal/ubuntu oracular/main armhf python3-dateutil all 2.9.0-2 [80.3 kB] 325s Get:25 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-diff-match-patch all 20230430-1 [33.1 kB] 325s Get:26 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-enchant all 3.2.2-1 [34.0 kB] 325s Get:27 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-rapidfuzz armhf 3.6.2+ds-3 [1200 kB] 325s Get:28 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-levenshtein armhf 0.25.1-3 [139 kB] 325s Get:29 http://ftpmaster.internal/ubuntu oracular/main armhf python3-lxml armhf 5.2.1-1 [1200 kB] 325s Get:30 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-mistletoe all 1.3.0-1 [38.0 kB] 325s Get:31 http://ftpmaster.internal/ubuntu oracular/main armhf python3-ply all 3.11-6 [46.5 kB] 325s Get:32 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-phply all 1.2.6-1 [50.5 kB] 325s Get:33 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf python3-ruamel.yaml.clib armhf 0.2.8+ds-1 [120 kB] 325s Get:34 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf python3-ruamel.yaml all 0.18.6+ds-3 [126 kB] 325s Get:35 http://ftpmaster.internal/ubuntu oracular/main armhf python3-simplejson armhf 3.19.2-1build2 [52.0 kB] 325s Get:36 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-translate all 3.12.2-1ubuntu1 [318 kB] 325s Get:37 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-vobject all 0.9.6.1-2 [40.6 kB] 325s Get:38 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf python3-xapian armhf 1.4.25-1 [436 kB] 325s Get:39 http://ftpmaster.internal/ubuntu oracular/universe armhf subversion armhf 1.14.3-1build4 [890 kB] 325s Get:40 http://ftpmaster.internal/ubuntu oracular/universe armhf translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 325s Get:41 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-iniparse all 0.5-2 [20.0 kB] 325s Get:42 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 329s Preconfiguring packages ... 330s Fetched 10.0 MB in 3s (3852 kB/s) 330s Selecting previously unselected package emacsen-common. 330s (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 ... 58338 files and directories currently installed.) 330s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 330s Unpacking emacsen-common (3.0.5) ... 330s Selecting previously unselected package dictionaries-common. 331s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 331s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 331s Unpacking dictionaries-common (1.29.7) ... 331s Selecting previously unselected package libgomp1:armhf. 331s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_armhf.deb ... 331s Unpacking libgomp1:armhf (14.1.0-1ubuntu1) ... 331s Selecting previously unselected package gettext. 332s Preparing to unpack .../03-gettext_0.21-14ubuntu2_armhf.deb ... 332s Unpacking gettext (0.21-14ubuntu2) ... 332s Selecting previously unselected package hunspell-en-us. 333s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 333s Unpacking hunspell-en-us (1:2020.12.07-2) ... 333s Selecting previously unselected package libapr1t64:armhf. 333s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_armhf.deb ... 333s Unpacking libapr1t64:armhf (1.7.2-3.2) ... 333s Selecting previously unselected package libaprutil1t64:armhf. 333s Preparing to unpack .../06-libaprutil1t64_1.6.3-2ubuntu1_armhf.deb ... 333s Unpacking libaprutil1t64:armhf (1.6.3-2ubuntu1) ... 333s Selecting previously unselected package libaspell15:armhf. 334s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_armhf.deb ... 334s Unpacking libaspell15:armhf (0.60.8.1-1build1) ... 334s Selecting previously unselected package libhunspell-1.7-0:armhf. 334s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_armhf.deb ... 334s Unpacking libhunspell-1.7-0:armhf (1.7.2+really1.7.2-10build3) ... 334s Selecting previously unselected package libenchant-2-2:armhf. 334s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_armhf.deb ... 334s Unpacking libenchant-2-2:armhf (2.3.3-2build2) ... 334s Selecting previously unselected package libexttextcat-data. 334s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 334s Unpacking libexttextcat-data (3.4.7-1build1) ... 334s Selecting previously unselected package libserf-1-1:armhf. 334s Preparing to unpack .../11-libserf-1-1_1.3.10-2_armhf.deb ... 334s Unpacking libserf-1-1:armhf (1.3.10-2) ... 334s Selecting previously unselected package libutf8proc3:armhf. 335s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_armhf.deb ... 335s Unpacking libutf8proc3:armhf (2.9.0-1build1) ... 335s Selecting previously unselected package libsvn1:armhf. 335s Preparing to unpack .../13-libsvn1_1.14.3-1build4_armhf.deb ... 335s Unpacking libsvn1:armhf (1.14.3-1build4) ... 335s Selecting previously unselected package libxapian30:armhf. 335s Preparing to unpack .../14-libxapian30_1.4.25-1_armhf.deb ... 335s Unpacking libxapian30:armhf (1.4.25-1) ... 335s Selecting previously unselected package libxslt1.1:armhf. 335s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_armhf.deb ... 335s Unpacking libxslt1.1:armhf (1.1.39-0exp1build1) ... 335s Selecting previously unselected package python3-aeidon. 335s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 335s Unpacking python3-aeidon (1.11-2) ... 335s Selecting previously unselected package python3-soupsieve. 335s Preparing to unpack .../17-python3-soupsieve_2.5-1_all.deb ... 335s Unpacking python3-soupsieve (2.5-1) ... 335s Selecting previously unselected package python3-bs4. 336s Preparing to unpack .../18-python3-bs4_4.12.3-1_all.deb ... 336s Unpacking python3-bs4 (4.12.3-1) ... 336s Selecting previously unselected package python3-more-itertools. 336s Preparing to unpack .../19-python3-more-itertools_10.2.0-1_all.deb ... 336s Unpacking python3-more-itertools (10.2.0-1) ... 336s Selecting previously unselected package python3-jaraco.functools. 337s Preparing to unpack .../20-python3-jaraco.functools_4.0.0-1_all.deb ... 337s Unpacking python3-jaraco.functools (4.0.0-1) ... 337s Selecting previously unselected package python3-cheroot. 337s Preparing to unpack .../21-python3-cheroot_10.0.0+ds1-2_all.deb ... 337s Unpacking python3-cheroot (10.0.0+ds1-2) ... 337s Selecting previously unselected package python3-dateutil. 338s Preparing to unpack .../22-python3-dateutil_2.9.0-2_all.deb ... 338s Unpacking python3-dateutil (2.9.0-2) ... 338s Selecting previously unselected package python3-diff-match-patch. 338s Preparing to unpack .../23-python3-diff-match-patch_20230430-1_all.deb ... 338s Unpacking python3-diff-match-patch (20230430-1) ... 338s Selecting previously unselected package python3-enchant. 339s Preparing to unpack .../24-python3-enchant_3.2.2-1_all.deb ... 339s Unpacking python3-enchant (3.2.2-1) ... 339s Selecting previously unselected package python3-rapidfuzz. 339s Preparing to unpack .../25-python3-rapidfuzz_3.6.2+ds-3_armhf.deb ... 339s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 339s Selecting previously unselected package python3-levenshtein. 340s Preparing to unpack .../26-python3-levenshtein_0.25.1-3_armhf.deb ... 340s Unpacking python3-levenshtein (0.25.1-3) ... 340s Selecting previously unselected package python3-lxml:armhf. 340s Preparing to unpack .../27-python3-lxml_5.2.1-1_armhf.deb ... 340s Unpacking python3-lxml:armhf (5.2.1-1) ... 340s Selecting previously unselected package python3-mistletoe. 340s Preparing to unpack .../28-python3-mistletoe_1.3.0-1_all.deb ... 340s Unpacking python3-mistletoe (1.3.0-1) ... 340s Selecting previously unselected package python3-ply. 341s Preparing to unpack .../29-python3-ply_3.11-6_all.deb ... 341s Unpacking python3-ply (3.11-6) ... 341s Selecting previously unselected package python3-phply. 341s Preparing to unpack .../30-python3-phply_1.2.6-1_all.deb ... 341s Unpacking python3-phply (1.2.6-1) ... 341s Selecting previously unselected package python3-ruamel.yaml.clib:armhf. 341s Preparing to unpack .../31-python3-ruamel.yaml.clib_0.2.8+ds-1_armhf.deb ... 341s Unpacking python3-ruamel.yaml.clib:armhf (0.2.8+ds-1) ... 341s Selecting previously unselected package python3-ruamel.yaml. 342s Preparing to unpack .../32-python3-ruamel.yaml_0.18.6+ds-3_all.deb ... 342s Unpacking python3-ruamel.yaml (0.18.6+ds-3) ... 342s Selecting previously unselected package python3-simplejson. 342s Preparing to unpack .../33-python3-simplejson_3.19.2-1build2_armhf.deb ... 342s Unpacking python3-simplejson (3.19.2-1build2) ... 342s Selecting previously unselected package python3-translate. 343s Preparing to unpack .../34-python3-translate_3.12.2-1ubuntu1_all.deb ... 343s Unpacking python3-translate (3.12.2-1ubuntu1) ... 343s Selecting previously unselected package python3-vobject. 343s Preparing to unpack .../35-python3-vobject_0.9.6.1-2_all.deb ... 343s Unpacking python3-vobject (0.9.6.1-2) ... 343s Selecting previously unselected package python3-xapian. 343s Preparing to unpack .../36-python3-xapian_1.4.25-1_armhf.deb ... 343s Unpacking python3-xapian (1.4.25-1) ... 343s Selecting previously unselected package subversion. 343s Preparing to unpack .../37-subversion_1.14.3-1build4_armhf.deb ... 343s Unpacking subversion (1.14.3-1build4) ... 343s Selecting previously unselected package translate-toolkit. 344s Preparing to unpack .../38-translate-toolkit_3.12.2-1ubuntu1_all.deb ... 344s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 344s Selecting previously unselected package python3-iniparse. 344s Preparing to unpack .../39-python3-iniparse_0.5-2_all.deb ... 344s Unpacking python3-iniparse (0.5-2) ... 344s Selecting previously unselected package python3-pycountry. 344s Preparing to unpack .../40-python3-pycountry_23.12.11+ds1-2_all.deb ... 344s Unpacking python3-pycountry (23.12.11+ds1-2) ... 344s Selecting previously unselected package autopkgtest-satdep. 344s Preparing to unpack .../41-1-autopkgtest-satdep.deb ... 344s Unpacking autopkgtest-satdep (0) ... 344s Setting up python3-more-itertools (10.2.0-1) ... 345s Setting up libxapian30:armhf (1.4.25-1) ... 345s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 345s Setting up python3-diff-match-patch (20230430-1) ... 345s Setting up python3-jaraco.functools (4.0.0-1) ... 346s Setting up python3-aeidon (1.11-2) ... 346s Setting up libutf8proc3:armhf (2.9.0-1build1) ... 346s Setting up libaspell15:armhf (0.60.8.1-1build1) ... 346s Setting up python3-ply (3.11-6) ... 346s Setting up python3-ruamel.yaml.clib:armhf (0.2.8+ds-1) ... 346s Setting up libgomp1:armhf (14.1.0-1ubuntu1) ... 346s Setting up python3-simplejson (3.19.2-1build2) ... 346s Setting up emacsen-common (3.0.5) ... 346s Setting up python3-cheroot (10.0.0+ds1-2) ... 347s Setting up python3-pycountry (23.12.11+ds1-2) ... 347s Setting up python3-xapian (1.4.25-1) ... 347s Setting up python3-ruamel.yaml (0.18.6+ds-3) ... 347s Setting up python3-mistletoe (1.3.0-1) ... 347s Setting up libexttextcat-data (3.4.7-1build1) ... 347s Setting up libapr1t64:armhf (1.7.2-3.2) ... 347s Setting up libxslt1.1:armhf (1.1.39-0exp1build1) ... 347s Setting up python3-dateutil (2.9.0-2) ... 348s Setting up python3-levenshtein (0.25.1-3) ... 348s Setting up libhunspell-1.7-0:armhf (1.7.2+really1.7.2-10build3) ... 348s Setting up python3-soupsieve (2.5-1) ... 348s Setting up python3-iniparse (0.5-2) ... 348s Setting up libaprutil1t64:armhf (1.6.3-2ubuntu1) ... 348s Setting up python3-vobject (0.9.6.1-2) ... 348s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 348s patterns['name'] = '[a-zA-Z0-9\-_]+' 348s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 348s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 348s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 348s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 348s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 348s """ 348s Setting up gettext (0.21-14ubuntu2) ... 348s Setting up python3-phply (1.2.6-1) ... 349s Setting up dictionaries-common (1.29.7) ... 349s Setting up libserf-1-1:armhf (1.3.10-2) ... 349s Setting up python3-bs4 (4.12.3-1) ... 349s Setting up python3-lxml:armhf (5.2.1-1) ... 349s Setting up hunspell-en-us (1:2020.12.07-2) ... 349s Setting up libsvn1:armhf (1.14.3-1build4) ... 349s Setting up libenchant-2-2:armhf (2.3.3-2build2) ... 349s Setting up subversion (1.14.3-1build4) ... 349s Setting up python3-enchant (3.2.2-1) ... 350s Setting up python3-translate (3.12.2-1ubuntu1) ... 350s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 350s Setting up autopkgtest-satdep (0) ... 350s Processing triggers for man-db (2.12.1-1) ... 351s Processing triggers for install-info (7.1-3build2) ... 351s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 352s Processing triggers for dictionaries-common (1.29.7) ... 370s (Reading database ... 61789 files and directories currently installed.) 370s Removing autopkgtest-satdep (0) ... 375s autopkgtest [04:09:20]: test translate-toolkit: [----------------------- 377s ========= SMOKE TEST: /usr/bin/android2po =========== 377s Usage: android2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 377s 377s Convert Android string files to Gettext PO localization files. See: 377s http://docs.translatehouse.org/projects/translate- 377s toolkit/en/latest/commands/android2po.html for examples and usage 377s instructions. 377s 377s Options: 377s --version show program's version number and exit 377s -h, --help show this help message and exit 377s --manpage output a manpage based on the help 377s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 377s --errorlevel=ERRORLEVEL 377s show errorlevel as: none, message, exception, 377s traceback 377s -i INPUT, --input=INPUT 377s read from INPUT in xml format 377s -x EXCLUDE, --exclude=EXCLUDE 377s exclude names matching EXCLUDE from input paths 377s -o OUTPUT, --output=OUTPUT 377s write to OUTPUT in po, pot formats 377s -t TEMPLATE, --template=TEMPLATE 377s read from TEMPLATE in xml format 377s -S, --timestamp skip conversion if the output file has newer timestamp 377s --duplicates=DUPLICATESTYLE 377s what to do with duplicate strings (identical source 377s text): merge, msgctxt (default: 'msgctxt') 377s ========= SMOKE TEST: /usr/bin/build_tmdb =========== 378s usage: build_tmdb [-h] [-d TMDB_FILE] [-s SOURCE_LANG] -t TARGET_LANG 378s input files [input files ...] 378s 378s positional arguments: 378s input files 378s 378s options: 378s -h, --help show this help message and exit 378s -d TMDB_FILE, --tmdb TMDB_FILE 378s translation memory database file (default: tm.db) 378s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 378s source language of translation files (default: en) 378s -t TARGET_LANG, --import-target-lang TARGET_LANG 378s target language of translation files 378s ========= SMOKE TEST: /usr/bin/buildxpi =========== 378s usage: Usage: buildxpi.py [] [ ...] 378s 378s positional arguments: 378s langs 378s 378s options: 378s -h, --help show this help message and exit 378s -L L10NBASE, --l10n-base L10NBASE 378s The directory containing the subdirectory. 378s -o OUTPUTDIR, --output-dir OUTPUTDIR 378s The directory to copy the built XPI to (default: 378s current directory). 378s -p MOZPRODUCT, --mozproduct MOZPRODUCT 378s The Mozilla product name (default: "browser"). 378s -s SRCDIR, --src SRCDIR 378s The directory containing the Mozilla l10n sources. 378s -d, --delete-dest Delete output XPI if it already exists. 378s -v, --verbose Be more noisy 378s --soft-max-version Override a fixed max version with one to cover the 378s whole cycle e.g. 24.0a1 becomes 24.0.* 378s ========= SMOKE TEST: /usr/bin/csv2po =========== 378s 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] 378s 378s Convert Comma-Separated Value (.csv) files to Gettext PO localization files. 378s See: http://docs.translatehouse.org/projects/translate- 378s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in csv format 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in po, pot formats 378s -t TEMPLATE, --template=TEMPLATE 378s read from TEMPLATE in po, pot, pot formats 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s -P, --pot output PO Templates (.pot) rather than PO files (.po) 378s --charset=CHARSET set charset to decode from csv files 378s --columnorder=COLUMNORDER 378s specify the order and position of columns 378s (location,source,target) 378s --duplicates=DUPLICATESTYLE 378s what to do with duplicate strings (identical source 378s text): merge, msgctxt (default: 'msgctxt') 378s ========= SMOKE TEST: /usr/bin/csv2tbx =========== 378s Usage: csv2tbx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 378s 378s Convert Comma-Separated Value (.csv) files to a TermBase eXchange (.tbx) 378s glossary file. See: http://docs.translatehouse.org/projects/translate- 378s toolkit/en/latest/commands/csv2tbx.html for examples and usage instructions 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in csv format 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in tbx format 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s --charset=CHARSET set charset to decode from csv files 378s --columnorder=COLUMNORDER 378s specify the order and position of columns 378s (comment,source,target) 378s ========= SMOKE TEST: /usr/bin/dtd2po =========== 378s 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] 378s 378s Convert a Mozilla .dtd UTF-8 localization format to a Gettext PO localization 378s file. Uses the po and dtd modules, and the dtd2po convertor class which is in 378s this module You can convert back to .dtd using po2dtd.py. 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in dtd format 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in po, pot formats 378s -t TEMPLATE, --template=TEMPLATE 378s read from TEMPLATE in dtd format 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s -P, --pot output PO Templates (.pot) rather than PO files (.po) 378s --duplicates=DUPLICATESTYLE 378s what to do with duplicate strings (identical source 378s text): merge, msgctxt (default: 'msgctxt') 378s ========= SMOKE TEST: /usr/bin/flatxml2po =========== 379s Usage: flatxml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 379s 379s Convert flat XML files to Gettext PO localization files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/flatxml2po.html for examples and usage 379s instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in xml format 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -r ROOT, --root=ROOT name of the XML root element (default: "root") 379s -v VALUE, --value=VALUE 379s name of the XML value element (default: "str") 379s -k KEY, --key=KEY name of the XML key attribute (default: "key") 379s -n NS, --namespace=NS 379s XML namespace uri (default: None) 379s ========= SMOKE TEST: /usr/bin/get_moz_enUS =========== 379s usage: get_moz_enUS [-h] [-s SRCDIR] [-d DESTDIR] [-p MOZPRODUCT] 379s [--delete-dest] [-v] 379s 379s options: 379s -h, --help show this help message and exit 379s -s SRCDIR, --src SRCDIR 379s The directory containing the Mozilla l10n sources. 379s -d DESTDIR, --dest DESTDIR 379s The destination directory to copy the en-US locale 379s files to. 379s -p MOZPRODUCT, --mozproduct MOZPRODUCT 379s The Mozilla product name. 379s --delete-dest Delete the destination directory (if it exists). 379s -v, --verbose Be more noisy 379s ========= SMOKE TEST: /usr/bin/html2po =========== 379s Usage: html2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 379s 379s Convert HTML files to Gettext PO localization files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in htm, html, xhtml formats 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -P, --pot output PO Templates (.pot) rather than PO files (.po) 379s --keepcomments preserve html comments as translation notes in the 379s output 379s --duplicates=DUPLICATESTYLE 379s what to do with duplicate strings (identical source 379s text): merge, msgctxt (default: 'msgctxt') 379s --multifile=MULTIFILESTYLE 379s how to split po/pot files (single, toplevel or 379s onefile) 379s ========= SMOKE TEST: /usr/bin/ical2po =========== 379s 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] 379s 379s Convert iCalendar files to Gettext PO localization files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in ics format 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -t TEMPLATE, --template=TEMPLATE 379s read from TEMPLATE in ics format 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -P, --pot output PO Templates (.pot) rather than PO files (.po) 379s --duplicates=DUPLICATESTYLE 379s what to do with duplicate strings (identical source 379s text): merge, msgctxt (default: 'msgctxt') 379s ========= SMOKE TEST: /usr/bin/idml2po =========== 379s Usage: idml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 379s 379s Convert IDML files to PO localization files. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in idml format 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s ========= SMOKE TEST: /usr/bin/ini2po =========== 379s 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] 379s 379s Convert .ini files to Gettext PO localization files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in ini, isl, iss formats 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -t TEMPLATE, --template=TEMPLATE 379s read from TEMPLATE in ini, isl, iss formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -P, --pot output PO Templates (.pot) rather than PO files (.po) 379s --duplicates=DUPLICATESTYLE 379s what to do with duplicate strings (identical source 379s text): merge, msgctxt (default: 'msgctxt') 379s ========= SMOKE TEST: /usr/bin/json2po =========== 379s 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] 379s 379s Convert JSON files to Gettext PO localization files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in json format 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -t TEMPLATE, --template=TEMPLATE 379s read from TEMPLATE in json format 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -P, --pot output PO Templates (.pot) rather than PO files (.po) 379s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 379s everything) 379s --duplicates=DUPLICATESTYLE 379s what to do with duplicate strings (identical source 379s text): merge, msgctxt (default: 'msgctxt') 379s ========= SMOKE TEST: /usr/bin/md2po =========== 380s Usage: md2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 380s 380s Convert Markdown files to Gettext PO localization files. See: 380s http://docs.translatehouse.org/projects/translate- 380s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 380s 380s Options: 380s --version show program's version number and exit 380s -h, --help show this help message and exit 380s --manpage output a manpage based on the help 380s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 380s --errorlevel=ERRORLEVEL 380s show errorlevel as: none, message, exception, 380s traceback 380s -i INPUT, --input=INPUT 380s read from INPUT in markdown, md, text, txt formats 380s -x EXCLUDE, --exclude=EXCLUDE 380s exclude names matching EXCLUDE from input paths 380s -o OUTPUT, --output=OUTPUT 380s write to OUTPUT in po, pot formats 380s -S, --timestamp skip conversion if the output file has newer timestamp 380s -P, --pot output PO Templates (.pot) rather than PO files (.po) 380s --duplicates=DUPLICATESTYLE 380s what to do with duplicate strings (identical source 380s text): merge, msgctxt (default: 'msgctxt') 380s --multifile=MULTIFILESTYLE 380s how to split po/pot files (single, toplevel or 380s onefile) 380s ========= SMOKE TEST: /usr/bin/moz2po =========== 380s 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] 380s 380s Convert Mozilla .dtd and .properties files to Gettext PO localization files. 380s See: http://docs.translatehouse.org/projects/translate- 380s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 380s 380s Options: 380s --version show program's version number and exit 380s -h, --help show this help message and exit 380s --manpage output a manpage based on the help 380s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 380s --errorlevel=ERRORLEVEL 380s show errorlevel as: none, message, exception, 380s traceback 380s -i INPUT, --input=INPUT 380s read from INPUT in *, dtd, inc, ini, it, js, lang, 380s manifest, properties, rdf formats 380s -x EXCLUDE, --exclude=EXCLUDE 380s exclude names matching EXCLUDE from input paths 380s -o OUTPUT, --output=OUTPUT 380s write to OUTPUT in *, dtd.po, dtd.pot, inc.po, 380s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 380s lang.pot, manifest, properties.po, properties.pot, rdf 380s formats 380s -t TEMPLATE, --template=TEMPLATE 380s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 380s manifest, properties, rdf formats 380s -S, --timestamp skip conversion if the output file has newer timestamp 380s -P, --pot output PO Templates (.pot) rather than PO files (.po) 380s --duplicates=DUPLICATESTYLE 380s what to do with duplicate strings (identical source 380s text): merge, msgctxt (default: 'msgctxt') 380s ========= SMOKE TEST: /usr/bin/mozlang2po =========== 381s Usage: mozlang2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 381s 381s Convert Mozilla .lang files to Gettext PO localization files. 381s 381s Options: 381s --version show program's version number and exit 381s -h, --help show this help message and exit 381s --manpage output a manpage based on the help 381s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 381s --errorlevel=ERRORLEVEL 381s show errorlevel as: none, message, exception, 381s traceback 381s -i INPUT, --input=INPUT 381s read from INPUT in lang format 381s -x EXCLUDE, --exclude=EXCLUDE 381s exclude names matching EXCLUDE from input paths 381s -o OUTPUT, --output=OUTPUT 381s write to OUTPUT in po, pot formats 381s -S, --timestamp skip conversion if the output file has newer timestamp 381s -P, --pot output PO Templates (.pot) rather than PO files (.po) 381s --encoding=ENCODING The encoding of the input file (default: UTF-8) 381s --duplicates=DUPLICATESTYLE 381s what to do with duplicate strings (identical source 381s text): merge, msgctxt (default: 'msgctxt') 381s ========= SMOKE TEST: /usr/bin/msghack =========== 381s Usage: /usr/bin/msghack [OPTION] file.po [ref.po] 381s This program can be used to alter .po files in ways no sane mind would think about. 381s -o result will be written to FILE 381s --invert invert a po file by switching msgid and msgstr 381s --master join any number of files in a master-formatted catalog 381s --empty empty the contents of the .po file, creating a .pot 381s --append append entries from ref.po that don't exist in file.po 381s 381s Note: It is just a replacement of msghack for backward support. 381s 381s ========= SMOKE TEST: /usr/bin/odf2xliff =========== 381s Usage: odf2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 381s 381s Convert OpenDocument (ODF) files to XLIFF localization files. See: 381s http://docs.translatehouse.org/projects/translate- 381s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 381s 381s Options: 381s --version show program's version number and exit 381s -h, --help show this help message and exit 381s --manpage output a manpage based on the help 381s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 381s --errorlevel=ERRORLEVEL 381s show errorlevel as: none, message, exception, 381s traceback 381s -i INPUT, --input=INPUT 381s read from INPUT in odc, odf, odg, odi, odm, odp, ods, 381s odt, otc, otf, otg, oth, oti, otp, ots, ott, sxw 381s formats 381s -x EXCLUDE, --exclude=EXCLUDE 381s exclude names matching EXCLUDE from input paths 381s -o OUTPUT, --output=OUTPUT 381s write to OUTPUT in xlf, xliff formats 381s -S, --timestamp skip conversion if the output file has newer timestamp 381s ========= SMOKE TEST: /usr/bin/oo2po =========== 381s Usage: oo2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 381s 381s Convert an OpenOffice.org (SDF) localization file to Gettext PO localization 381s files. See: http://docs.translatehouse.org/projects/translate- 381s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 381s 381s Options: 381s --version show program's version number and exit 381s -h, --help show this help message and exit 381s --manpage output a manpage based on the help 381s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 381s --errorlevel=ERRORLEVEL 381s show errorlevel as: none, message, exception, 381s traceback 381s -i INPUT, --input=INPUT 381s read from INPUT in oo, sdf formats 381s -x EXCLUDE, --exclude=EXCLUDE 381s exclude names matching EXCLUDE from input paths 381s -o OUTPUT, --output=OUTPUT 381s write to OUTPUT in po, pot formats 381s -S, --timestamp skip conversion if the output file has newer timestamp 381s -P, --pot output PO Templates (.pot) rather than PO files (.po) 381s -l LANG, --language=LANG 381s set target language to extract from oo file (e.g. af- 381s ZA) 381s --source-language=LANG 381s set source language code (default en-US) 381s --nonrecursiveinput don't treat the input oo as a recursive store 381s --duplicates=DUPLICATESTYLE 381s what to do with duplicate strings (identical source 381s text): merge, msgctxt (default: 'msgctxt') 381s --multifile=MULTIFILESTYLE 381s how to split po/pot files (single, toplevel or 381s onefile) 381s ========= SMOKE TEST: /usr/bin/oo2xliff =========== 381s Usage: oo2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 381s 381s Convert an OpenOffice.org (SDF) localization file to XLIFF localization 381s files. See: http://docs.translatehouse.org/projects/translate- 381s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 381s 381s Options: 381s --version show program's version number and exit 381s -h, --help show this help message and exit 381s --manpage output a manpage based on the help 381s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 381s --errorlevel=ERRORLEVEL 381s show errorlevel as: none, message, exception, 381s traceback 381s -i INPUT, --input=INPUT 381s read from INPUT in oo, sdf formats 381s -x EXCLUDE, --exclude=EXCLUDE 381s exclude names matching EXCLUDE from input paths 381s -o OUTPUT, --output=OUTPUT 381s write to OUTPUT in xlf, xliff formats 381s -S, --timestamp skip conversion if the output file has newer timestamp 381s -l LANG, --language=LANG 381s set target language to extract from oo file (e.g. af- 381s ZA) 381s --source-language=LANG 381s set source language code (default en-US) 381s --nonrecursiveinput don't treat the input oo as a recursive store 381s --duplicates=DUPLICATESTYLE 381s what to do with duplicate strings (identical source 381s text): merge, msgctxt (default: 'msgctxt') 381s --multifile=MULTIFILESTYLE 381s how to split po/pot files (single, toplevel or 381s onefile) 381s ========= SMOKE TEST: /usr/bin/php2po =========== 381s 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] 381s 381s Convert PHP localization files to Gettext PO localization files. See: 381s http://docs.translatehouse.org/projects/translate- 381s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 381s 381s Options: 381s --version show program's version number and exit 381s -h, --help show this help message and exit 381s --manpage output a manpage based on the help 381s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 381s --errorlevel=ERRORLEVEL 381s show errorlevel as: none, message, exception, 381s traceback 381s -i INPUT, --input=INPUT 381s read from INPUT in html, php formats 381s -x EXCLUDE, --exclude=EXCLUDE 381s exclude names matching EXCLUDE from input paths 381s -o OUTPUT, --output=OUTPUT 381s write to OUTPUT in po, pot formats 381s -t TEMPLATE, --template=TEMPLATE 381s read from TEMPLATE in html, php formats 381s -S, --timestamp skip conversion if the output file has newer timestamp 381s -P, --pot output PO Templates (.pot) rather than PO files (.po) 381s --duplicates=DUPLICATESTYLE 381s what to do with duplicate strings (identical source 381s text): merge, msgctxt (default: 'msgctxt') 381s ========= SMOKE TEST: /usr/bin/phppo2pypo =========== 381s Usage: phppo2pypo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 381s 381s Convert PHP format .po files to Python format .po files. 381s 381s Options: 381s --version show program's version number and exit 381s -h, --help show this help message and exit 381s --manpage output a manpage based on the help 381s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 381s --errorlevel=ERRORLEVEL 381s show errorlevel as: none, message, exception, 381s traceback 381s -i INPUT, --input=INPUT 381s read from INPUT in po, pot formats 381s -x EXCLUDE, --exclude=EXCLUDE 381s exclude names matching EXCLUDE from input paths 381s -o OUTPUT, --output=OUTPUT 381s write to OUTPUT in po, pot formats 381s -S, --timestamp skip conversion if the output file has newer timestamp 382s ========= SMOKE TEST: /usr/bin/po2csv =========== 382s Usage: po2csv [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 382s 382s Convert Gettext PO localization files to Comma-Separated Value (.csv) files. 382s See: http://docs.translatehouse.org/projects/translate- 382s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 382s 382s Options: 382s --version show program's version number and exit 382s -h, --help show this help message and exit 382s --manpage output a manpage based on the help 382s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 382s --errorlevel=ERRORLEVEL 382s show errorlevel as: none, message, exception, 382s traceback 382s -i INPUT, --input=INPUT 382s read from INPUT in po, pot formats 382s -x EXCLUDE, --exclude=EXCLUDE 382s exclude names matching EXCLUDE from input paths 382s -o OUTPUT, --output=OUTPUT 382s write to OUTPUT in csv format 382s -S, --timestamp skip conversion if the output file has newer timestamp 382s --columnorder=COLUMNORDER 382s specify the order and position of columns 382s (location,source,target) 382s ========= SMOKE TEST: /usr/bin/po2dtd =========== 382s Usage: po2dtd [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 382s 382s Converts a Gettext PO file to a UTF-8 encoded Mozilla .dtd file. .. note: 382s Conversion is either done using a template plus PO file or just using the 382s .po file. 382s 382s Options: 382s --version show program's version number and exit 382s -h, --help show this help message and exit 382s --manpage output a manpage based on the help 382s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 382s --errorlevel=ERRORLEVEL 382s show errorlevel as: none, message, exception, 382s traceback 382s -i INPUT, --input=INPUT 382s read from INPUT in po, pot formats 382s -x EXCLUDE, --exclude=EXCLUDE 382s exclude names matching EXCLUDE from input paths 382s -o OUTPUT, --output=OUTPUT 382s write to OUTPUT in dtd format 382s -t TEMPLATE, --template=TEMPLATE 382s read from TEMPLATE in dtd format 382s -S, --timestamp skip conversion if the output file has newer timestamp 382s --threshold=PERCENT only convert files where the translation completion is 382s above PERCENT 382s --fuzzy use translations marked fuzzy 382s --nofuzzy don't use translations marked fuzzy (default) 382s --removeuntranslated remove untranslated strings from output 382s ========= SMOKE TEST: /usr/bin/po2flatxml =========== 382s Usage: po2flatxml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 382s 382s Convert Gettext PO localization files to flat XML files. See: 382s http://docs.translatehouse.org/projects/translate- 382s toolkit/en/latest/commands/flatxml2po.html for examples and usage 382s instructions. 382s 382s Options: 382s --version show program's version number and exit 382s -h, --help show this help message and exit 382s --manpage output a manpage based on the help 382s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 382s --errorlevel=ERRORLEVEL 382s show errorlevel as: none, message, exception, 382s traceback 382s -i INPUT, --input=INPUT 382s read from INPUT in po, pot formats 382s -x EXCLUDE, --exclude=EXCLUDE 382s exclude names matching EXCLUDE from input paths 382s -o OUTPUT, --output=OUTPUT 382s write to OUTPUT in xml format 382s -t TEMPLATE, --template=TEMPLATE 382s read from TEMPLATE in xml format 382s -S, --timestamp skip conversion if the output file has newer timestamp 382s -r ROOT, --root=ROOT name of the XML root element (default: "root") 382s -v VALUE, --value=VALUE 382s name of the XML value element (default: "str") 382s -k KEY, --key=KEY name of the XML key attribute (default: "key") 382s -n NS, --namespace=NS 382s XML namespace uri (default: None) 382s -w INDENT, --indent=INDENT 382s indent width in spaces, 0 for no indent (default: 2) 382s ========= SMOKE TEST: /usr/bin/po2html =========== 382s Usage: po2html [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 382s 382s Translate HTML files using Gettext PO localization files. See: 382s http://docs.translatehouse.org/projects/translate- 382s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 382s 382s Options: 382s --version show program's version number and exit 382s -h, --help show this help message and exit 382s --manpage output a manpage based on the help 382s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 382s --errorlevel=ERRORLEVEL 382s show errorlevel as: none, message, exception, 382s traceback 382s -i INPUT, --input=INPUT 382s read from INPUT in po, pot formats 382s -x EXCLUDE, --exclude=EXCLUDE 382s exclude names matching EXCLUDE from input paths 382s -o OUTPUT, --output=OUTPUT 382s write to OUTPUT in htm, html, xhtml formats 382s -t TEMPLATE, --template=TEMPLATE 382s read from TEMPLATE in htm, html, xhtml formats 382s -S, --timestamp skip conversion if the output file has newer timestamp 382s --threshold=PERCENT only convert files where the translation completion is 382s above PERCENT 382s --fuzzy use translations marked fuzzy 382s --nofuzzy don't use translations marked fuzzy (default) 382s ========= SMOKE TEST: /usr/bin/po2ical =========== 382s Usage: po2ical [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 382s 382s Convert Gettext PO localization files to iCalendar files. See: 382s http://docs.translatehouse.org/projects/translate- 382s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 382s 382s Options: 382s --version show program's version number and exit 382s -h, --help show this help message and exit 382s --manpage output a manpage based on the help 382s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 382s --errorlevel=ERRORLEVEL 382s show errorlevel as: none, message, exception, 382s traceback 382s -i INPUT, --input=INPUT 382s read from INPUT in po, pot formats 382s -x EXCLUDE, --exclude=EXCLUDE 382s exclude names matching EXCLUDE from input paths 382s -o OUTPUT, --output=OUTPUT 382s write to OUTPUT in ics format 382s -t TEMPLATE, --template=TEMPLATE 382s read from TEMPLATE in ics format 382s -S, --timestamp skip conversion if the output file has newer timestamp 382s --threshold=PERCENT only convert files where the translation completion is 382s above PERCENT 382s --fuzzy use translations marked fuzzy 382s --nofuzzy don't use translations marked fuzzy (default) 382s ========= SMOKE TEST: /usr/bin/po2idml =========== 383s Usage: po2idml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 383s 383s Takes an IDML template file and a PO file containing translations of strings 383s in the IDML template. It creates a new IDML file using the translations of the 383s PO file. 383s 383s Options: 383s --version show program's version number and exit 383s -h, --help show this help message and exit 383s --manpage output a manpage based on the help 383s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 383s --errorlevel=ERRORLEVEL 383s show errorlevel as: none, message, exception, 383s traceback 383s -i INPUT, --input=INPUT 383s read from INPUT in po, pot formats 383s -x EXCLUDE, --exclude=EXCLUDE 383s exclude names matching EXCLUDE from input paths 383s -o OUTPUT, --output=OUTPUT 383s write to OUTPUT in idml format 383s -t TEMPLATE, --template=TEMPLATE 383s read from TEMPLATE in idml format 383s -S, --timestamp skip conversion if the output file has newer timestamp 383s ========= SMOKE TEST: /usr/bin/po2ini =========== 383s Usage: po2ini [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 383s 383s Convert Gettext PO localization files to .ini files. See: 383s http://docs.translatehouse.org/projects/translate- 383s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 383s 383s Options: 383s --version show program's version number and exit 383s -h, --help show this help message and exit 383s --manpage output a manpage based on the help 383s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 383s --errorlevel=ERRORLEVEL 383s show errorlevel as: none, message, exception, 383s traceback 383s -i INPUT, --input=INPUT 383s read from INPUT in po, pot formats 383s -x EXCLUDE, --exclude=EXCLUDE 383s exclude names matching EXCLUDE from input paths 383s -o OUTPUT, --output=OUTPUT 383s write to OUTPUT in ini, isl formats 383s -t TEMPLATE, --template=TEMPLATE 383s read from TEMPLATE in ini, isl formats 383s -S, --timestamp skip conversion if the output file has newer timestamp 383s --threshold=PERCENT only convert files where the translation completion is 383s above PERCENT 383s --fuzzy use translations marked fuzzy 383s --nofuzzy don't use translations marked fuzzy (default) 383s ========= SMOKE TEST: /usr/bin/po2json =========== 383s Usage: po2json [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 383s 383s Convert Gettext PO localization files to JSON files. See: 383s http://docs.translatehouse.org/projects/translate- 383s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 383s 383s Options: 383s --version show program's version number and exit 383s -h, --help show this help message and exit 383s --manpage output a manpage based on the help 383s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 383s --errorlevel=ERRORLEVEL 383s show errorlevel as: none, message, exception, 383s traceback 383s -i INPUT, --input=INPUT 383s read from INPUT in po, pot formats 383s -x EXCLUDE, --exclude=EXCLUDE 383s exclude names matching EXCLUDE from input paths 383s -o OUTPUT, --output=OUTPUT 383s write to OUTPUT in json format 383s -t TEMPLATE, --template=TEMPLATE 383s read from TEMPLATE in json format 383s -S, --timestamp skip conversion if the output file has newer timestamp 383s --threshold=PERCENT only convert files where the translation completion is 383s above PERCENT 383s --fuzzy use translations marked fuzzy 383s --nofuzzy don't use translations marked fuzzy (default) 383s --removeuntranslated remove untranslated strings from output 383s ========= SMOKE TEST: /usr/bin/po2md =========== 383s Usage: po2md [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 383s 383s Translate Markdown files using Gettext PO localization files. See: 383s http://docs.translatehouse.org/projects/translate- 383s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 383s 383s Options: 383s --version show program's version number and exit 383s -h, --help show this help message and exit 383s --manpage output a manpage based on the help 383s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 383s --errorlevel=ERRORLEVEL 383s show errorlevel as: none, message, exception, 383s traceback 383s -i INPUT, --input=INPUT 383s read from INPUT in po, pot formats 383s -x EXCLUDE, --exclude=EXCLUDE 383s exclude names matching EXCLUDE from input paths 383s -o OUTPUT, --output=OUTPUT 383s write to OUTPUT in markdown, md, text, txt formats 383s -t TEMPLATE, --template=TEMPLATE 383s read from TEMPLATE in markdown, md, text, txt formats 383s -S, --timestamp skip conversion if the output file has newer timestamp 383s -m MAXLENGTH, --maxlinelength=MAXLENGTH 383s reflow (word wrap) the output to the given maximum 383s line length. set to 0 to disable 383s --threshold=PERCENT only convert files where the translation completion is 383s above PERCENT 383s --fuzzy use translations marked fuzzy 383s --nofuzzy don't use translations marked fuzzy (default) 384s ========= SMOKE TEST: /usr/bin/po2moz =========== 384s Usage: po2moz [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 384s 384s Convert Gettext PO localization files to Mozilla .dtd and .properties files. 384s See: http://docs.translatehouse.org/projects/translate- 384s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 384s 384s Options: 384s --version show program's version number and exit 384s -h, --help show this help message and exit 384s --manpage output a manpage based on the help 384s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 384s --errorlevel=ERRORLEVEL 384s show errorlevel as: none, message, exception, 384s traceback 384s -i INPUT, --input=INPUT 384s read from INPUT in *, dtd.po, dtd.pot, inc.po, 384s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 384s lang.pot, manifest, properties.po, properties.pot, rdf 384s formats 384s -x EXCLUDE, --exclude=EXCLUDE 384s exclude names matching EXCLUDE from input paths 384s -o OUTPUT, --output=OUTPUT 384s write to OUTPUT in *, dtd, inc, ini, it, js, lang, 384s manifest, properties, rdf formats 384s -t TEMPLATE, --template=TEMPLATE 384s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 384s manifest, properties, rdf formats 384s -S, --timestamp skip conversion if the output file has newer timestamp 384s -l LOCALE, --locale=LOCALE 384s set output locale (required as this sets the directory 384s names) 384s --threshold=PERCENT only convert files where the translation completion is 384s above PERCENT 384s --fuzzy use translations marked fuzzy 384s --nofuzzy don't use translations marked fuzzy (default) 384s --removeuntranslated remove untranslated strings from output 384s ========= SMOKE TEST: /usr/bin/po2mozlang =========== 384s Usage: po2mozlang [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 384s 384s Convert Gettext PO localization files to Mozilla .lang files. 384s 384s Options: 384s --version show program's version number and exit 384s -h, --help show this help message and exit 384s --manpage output a manpage based on the help 384s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 384s --errorlevel=ERRORLEVEL 384s show errorlevel as: none, message, exception, 384s traceback 384s -i INPUT, --input=INPUT 384s read from INPUT in po, pot formats 384s -x EXCLUDE, --exclude=EXCLUDE 384s exclude names matching EXCLUDE from input paths 384s -o OUTPUT, --output=OUTPUT 384s write to OUTPUT in lang format 384s -t TEMPLATE, --template=TEMPLATE 384s read from TEMPLATE in lang format 384s -S, --timestamp skip conversion if the output file has newer timestamp 384s --mark-active mark the file as active 384s --threshold=PERCENT only convert files where the translation completion is 384s above PERCENT 384s --fuzzy use translations marked fuzzy 384s --nofuzzy don't use translations marked fuzzy (default) 384s ========= SMOKE TEST: /usr/bin/po2oo =========== 384s Usage: po2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 384s 384s Convert Gettext PO localization files to an OpenOffice.org (SDF) localization 384s file. See: http://docs.translatehouse.org/projects/translate- 384s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 384s 384s Options: 384s --version show program's version number and exit 384s -h, --help show this help message and exit 384s --manpage output a manpage based on the help 384s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 384s --errorlevel=ERRORLEVEL 384s show errorlevel as: none, message, exception, 384s traceback 384s -i INPUT, --input=INPUT 384s read from INPUT in po, pot, xlf, xliff formats 384s -x EXCLUDE, --exclude=EXCLUDE 384s exclude names matching EXCLUDE from input paths 384s -o OUTPUT, --output=OUTPUT 384s write to OUTPUT in oo, sdf formats 384s -t TEMPLATE, --template=TEMPLATE 384s read from TEMPLATE in oo, sdf formats 384s -S, --timestamp skip conversion if the output file has newer timestamp 384s -l LANG, --language=LANG 384s set target language code (e.g. af-ZA) [required] 384s --source-language=LANG 384s set source language code (default en-US) 384s -T, --keeptimestamp don't change the timestamps of the strings 384s --nonrecursiveoutput don't treat the output oo as a recursive store 384s --nonrecursivetemplate 384s don't treat the template oo as a recursive store 384s --skipsource don't output the source language, but fallback to it 384s where needed 384s --filteraction=ACTION 384s action on pofilter failure: none (default), warn, 384s exclude-serious, exclude-all 384s --threshold=PERCENT only convert files where the translation completion is 384s above PERCENT 384s --fuzzy use translations marked fuzzy 384s --nofuzzy don't use translations marked fuzzy (default) 384s --multifile=MULTIFILESTYLE 384s how to split po/pot files (single, toplevel or 384s onefile) 385s ========= SMOKE TEST: /usr/bin/po2php =========== 385s Usage: po2php [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 385s 385s Convert Gettext PO localization files to PHP localization files. See: 385s http://docs.translatehouse.org/projects/translate- 385s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 385s 385s Options: 385s --version show program's version number and exit 385s -h, --help show this help message and exit 385s --manpage output a manpage based on the help 385s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 385s --errorlevel=ERRORLEVEL 385s show errorlevel as: none, message, exception, 385s traceback 385s -i INPUT, --input=INPUT 385s read from INPUT in po, pot formats 385s -x EXCLUDE, --exclude=EXCLUDE 385s exclude names matching EXCLUDE from input paths 385s -o OUTPUT, --output=OUTPUT 385s write to OUTPUT in html, php formats 385s -t TEMPLATE, --template=TEMPLATE 385s read from TEMPLATE in html, php formats 385s -S, --timestamp skip conversion if the output file has newer timestamp 385s --threshold=PERCENT only convert files where the translation completion is 385s above PERCENT 385s --fuzzy use translations marked fuzzy 385s --nofuzzy don't use translations marked fuzzy (default) 385s ========= SMOKE TEST: /usr/bin/po2prop =========== 385s Usage: po2prop [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 385s 385s Convert Gettext PO localization files to Java/Mozilla .properties files. 385s See: http://docs.translatehouse.org/projects/translate- 385s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 385s 385s Options: 385s --version show program's version number and exit 385s -h, --help show this help message and exit 385s --manpage output a manpage based on the help 385s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 385s --errorlevel=ERRORLEVEL 385s show errorlevel as: none, message, exception, 385s traceback 385s -i INPUT, --input=INPUT 385s read from INPUT in po, pot formats 385s -x EXCLUDE, --exclude=EXCLUDE 385s exclude names matching EXCLUDE from input paths 385s -o OUTPUT, --output=OUTPUT 385s write to OUTPUT in lang, properties, strings formats 385s -t TEMPLATE, --template=TEMPLATE 385s read from TEMPLATE in lang, properties, strings 385s formats 385s -S, --timestamp skip conversion if the output file has newer timestamp 385s --personality=TYPE override the input file format: java, java-utf8, java- 385s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 385s strings, strings-utf8, joomla (for .properties files, 385s default: java) 385s --encoding=ENCODING override the encoding set by the personality 385s --threshold=PERCENT only convert files where the translation completion is 385s above PERCENT 385s --fuzzy use translations marked fuzzy 385s --nofuzzy don't use translations marked fuzzy (default) 385s --removeuntranslated remove untranslated strings from output 385s ========= SMOKE TEST: /usr/bin/po2rc =========== 385s Usage: po2rc [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 385s 385s Convert Gettext PO localization files back to Windows Resource (.rc) files. 385s See: http://docs.translatehouse.org/projects/translate- 385s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 385s 385s Options: 385s --version show program's version number and exit 385s -h, --help show this help message and exit 385s --manpage output a manpage based on the help 385s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 385s --errorlevel=ERRORLEVEL 385s show errorlevel as: none, message, exception, 385s traceback 385s -i INPUT, --input=INPUT 385s read from INPUT in po, pot formats 385s -x EXCLUDE, --exclude=EXCLUDE 385s exclude names matching EXCLUDE from input paths 385s -o OUTPUT, --output=OUTPUT 385s write to OUTPUT in rc format 385s -t TEMPLATE, --template=TEMPLATE 385s read from TEMPLATE in rc format 385s -S, --timestamp skip conversion if the output file has newer timestamp 385s --charset=CHARSET charset to use to decode the RC files (default: utf-8) 385s -l LANG, --lang=LANG LANG entry 385s --sublang=SUBLANG SUBLANG entry (default: SUBLANG_DEFAULT) 385s --threshold=PERCENT only convert files where the translation completion is 385s above PERCENT 385s --fuzzy use translations marked fuzzy 385s --nofuzzy don't use translations marked fuzzy (default) 385s ========= SMOKE TEST: /usr/bin/po2resx =========== 385s Usage: po2resx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 385s 385s Convert Gettext PO localisation files to .Net Resource (.resx) files. See: 385s http://docs.translatehouse.org/projects/translate- 385s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 385s 385s Options: 385s --version show program's version number and exit 385s -h, --help show this help message and exit 385s --manpage output a manpage based on the help 385s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 385s --errorlevel=ERRORLEVEL 385s show errorlevel as: none, message, exception, 385s traceback 385s -i INPUT, --input=INPUT 385s read from INPUT in po, pot formats 385s -x EXCLUDE, --exclude=EXCLUDE 385s exclude names matching EXCLUDE from input paths 385s -o OUTPUT, --output=OUTPUT 385s write to OUTPUT in resx format 385s -t TEMPLATE, --template=TEMPLATE 385s read from TEMPLATE in resx format 385s -S, --timestamp skip conversion if the output file has newer timestamp 385s --fuzzy use translations marked fuzzy 385s --nofuzzy don't use translations marked fuzzy (default) 386s ========= SMOKE TEST: /usr/bin/po2sub =========== 386s Usage: po2sub [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 386s 386s Convert Gettext PO localization files to subtitle files. See: 386s http://docs.translatehouse.org/projects/translate- 386s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 386s 386s Options: 386s --version show program's version number and exit 386s -h, --help show this help message and exit 386s --manpage output a manpage based on the help 386s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 386s --errorlevel=ERRORLEVEL 386s show errorlevel as: none, message, exception, 386s traceback 386s -i INPUT, --input=INPUT 386s read from INPUT in po, pot formats 386s -x EXCLUDE, --exclude=EXCLUDE 386s exclude names matching EXCLUDE from input paths 386s -o OUTPUT, --output=OUTPUT 386s write to OUTPUT in ass, srt, ssa, sub formats 386s -t TEMPLATE, --template=TEMPLATE 386s read from TEMPLATE in ass, srt, ssa, sub formats 386s -S, --timestamp skip conversion if the output file has newer timestamp 386s --threshold=PERCENT only convert files where the translation completion is 386s above PERCENT 386s --fuzzy use translations marked fuzzy 386s --nofuzzy don't use translations marked fuzzy (default) 386s ========= SMOKE TEST: /usr/bin/po2symb =========== 386s Usage: po2symb [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 386s 386s Convert Gettext PO localization files to Symbian translation files. See: 386s http://docs.translatehouse.org/projects/translate- 386s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 386s 386s Options: 386s --version show program's version number and exit 386s -h, --help show this help message and exit 386s --manpage output a manpage based on the help 386s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 386s --errorlevel=ERRORLEVEL 386s show errorlevel as: none, message, exception, 386s traceback 386s -i INPUT, --input=INPUT 386s read from INPUT in po, pot formats 386s -x EXCLUDE, --exclude=EXCLUDE 386s exclude names matching EXCLUDE from input paths 386s -o OUTPUT, --output=OUTPUT 386s write to OUTPUT in r0 format 386s -t TEMPLATE, --template=TEMPLATE 386s read from TEMPLATE in 386s -S, --timestamp skip conversion if the output file has newer timestamp 386s --duplicates=DUPLICATESTYLE 386s what to do with duplicate strings (identical source 386s text): merge, msgctxt (default: 'msgctxt') 386s ========= SMOKE TEST: /usr/bin/po2tiki =========== 386s Usage: po2tiki [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 386s 386s Convert Gettext PO files to TikiWiki's language.php files. See: 386s http://docs.translatehouse.org/projects/translate- 386s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 386s 386s Options: 386s --version show program's version number and exit 386s -h, --help show this help message and exit 386s --manpage output a manpage based on the help 386s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 386s --errorlevel=ERRORLEVEL 386s show errorlevel as: none, message, exception, 386s traceback 386s -i INPUT, --input=INPUT 386s read from INPUT in po, pot formats 386s -x EXCLUDE, --exclude=EXCLUDE 386s exclude names matching EXCLUDE from input paths 386s -o OUTPUT, --output=OUTPUT 386s write to OUTPUT in tiki format 386s -S, --timestamp skip conversion if the output file has newer timestamp 386s ========= SMOKE TEST: /usr/bin/po2tmx =========== 386s Usage: po2tmx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 386s 386s Convert Gettext PO localization files to a TMX (Translation Memory eXchange) 386s file. See: http://docs.translatehouse.org/projects/translate- 386s toolkit/en/latest/commands/po2tmx.html for examples and usage instructions. 386s 386s Options: 386s --version show program's version number and exit 386s -h, --help show this help message and exit 386s --manpage output a manpage based on the help 386s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 386s --errorlevel=ERRORLEVEL 386s show errorlevel as: none, message, exception, 386s traceback 386s -i INPUT, --input=INPUT 386s read from INPUT in po, pot formats 386s -x EXCLUDE, --exclude=EXCLUDE 386s exclude names matching EXCLUDE from input paths 386s -o OUTPUT, --output=OUTPUT 386s write to OUTPUT in tmx format 386s -S, --timestamp skip conversion if the output file has newer timestamp 386s -l LANG, --language=LANG 386s set target language code (e.g. af-ZA) [required] 386s --source-language=LANG 386s set source language code (default: en) 386s --comments=COMMENT set default comment import: none, source, type or 386s others (default: none) 386s ========= SMOKE TEST: /usr/bin/po2ts =========== 386s Usage: po2ts [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 386s 386s Convert Gettext PO localization files to Qt Linguist (.ts) files. See: 386s http://docs.translatehouse.org/projects/translate- 386s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 386s 386s Options: 386s --version show program's version number and exit 386s -h, --help show this help message and exit 386s --manpage output a manpage based on the help 386s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 386s --errorlevel=ERRORLEVEL 386s show errorlevel as: none, message, exception, 386s traceback 386s -i INPUT, --input=INPUT 386s read from INPUT in po, pot formats 386s -x EXCLUDE, --exclude=EXCLUDE 386s exclude names matching EXCLUDE from input paths 386s -o OUTPUT, --output=OUTPUT 386s write to OUTPUT in ts format 386s -t TEMPLATE, --template=TEMPLATE 386s read from TEMPLATE in ts format 386s -S, --timestamp skip conversion if the output file has newer timestamp 386s -c CONTEXT, --context=CONTEXT 386s use supplied context instead of the one in the .po 386s file comment 386s ========= SMOKE TEST: /usr/bin/po2txt =========== 387s Usage: po2txt [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 387s 387s Convert Gettext PO localization files to plain text (.txt) files. See: 387s http://docs.translatehouse.org/projects/translate- 387s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 387s 387s Options: 387s --version show program's version number and exit 387s -h, --help show this help message and exit 387s --manpage output a manpage based on the help 387s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 387s --errorlevel=ERRORLEVEL 387s show errorlevel as: none, message, exception, 387s traceback 387s -i INPUT, --input=INPUT 387s read from INPUT in po, pot, xlf, xliff formats 387s -x EXCLUDE, --exclude=EXCLUDE 387s exclude names matching EXCLUDE from input paths 387s -o OUTPUT, --output=OUTPUT 387s write to OUTPUT in txt format 387s -t TEMPLATE, --template=TEMPLATE 387s read from TEMPLATE in txt format 387s -S, --timestamp skip conversion if the output file has newer timestamp 387s --encoding=ENCODING The encoding of the template file (default: UTF-8) 387s -w WRAP, --wrap=WRAP set number of columns to wrap text at 387s --threshold=PERCENT only convert files where the translation completion is 387s above PERCENT 387s --fuzzy use translations marked fuzzy 387s --nofuzzy don't use translations marked fuzzy (default) 387s ========= SMOKE TEST: /usr/bin/po2web2py =========== 387s Usage: po2web2py [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 387s 387s Convert GNU/gettext PO files to web2py translation dictionaries (.py). See: 387s http://docs.translatehouse.org/projects/translate- 387s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 387s 387s Options: 387s --version show program's version number and exit 387s -h, --help show this help message and exit 387s --manpage output a manpage based on the help 387s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 387s --errorlevel=ERRORLEVEL 387s show errorlevel as: none, message, exception, 387s traceback 387s -i INPUT, --input=INPUT 387s read from INPUT in po, pot formats 387s -x EXCLUDE, --exclude=EXCLUDE 387s exclude names matching EXCLUDE from input paths 387s -o OUTPUT, --output=OUTPUT 387s write to OUTPUT in py format 387s -S, --timestamp skip conversion if the output file has newer timestamp 387s --threshold=PERCENT only convert files where the translation completion is 387s above PERCENT 387s --fuzzy use translations marked fuzzy 387s --nofuzzy don't use translations marked fuzzy (default) 387s ========= SMOKE TEST: /usr/bin/po2wordfast =========== 387s Usage: po2wordfast [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 387s 387s Convert Gettext PO localization files to a Wordfast translation memory file. 387s See: http://docs.translatehouse.org/projects/translate- 387s toolkit/en/latest/commands/po2wordfast.html for examples and usage 387s instructions. 387s 387s Options: 387s --version show program's version number and exit 387s -h, --help show this help message and exit 387s --manpage output a manpage based on the help 387s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 387s --errorlevel=ERRORLEVEL 387s show errorlevel as: none, message, exception, 387s traceback 387s -i INPUT, --input=INPUT 387s read from INPUT in po, pot formats 387s -x EXCLUDE, --exclude=EXCLUDE 387s exclude names matching EXCLUDE from input paths 387s -o OUTPUT, --output=OUTPUT 387s write to OUTPUT in txt format 387s -S, --timestamp skip conversion if the output file has newer timestamp 387s -l LANG, --language=LANG 387s set target language code (e.g. af-ZA) [required] 387s --source-language=LANG 387s set source language code (default: en) 387s ========= SMOKE TEST: /usr/bin/po2xliff =========== 387s Usage: po2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 387s 387s Convert Gettext PO localization files to XLIFF localization files. See: 387s http://docs.translatehouse.org/projects/translate- 387s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 387s 387s Options: 387s --version show program's version number and exit 387s -h, --help show this help message and exit 387s --manpage output a manpage based on the help 387s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 387s --errorlevel=ERRORLEVEL 387s show errorlevel as: none, message, exception, 387s traceback 387s -i INPUT, --input=INPUT 387s read from INPUT in po, pot formats 387s -x EXCLUDE, --exclude=EXCLUDE 387s exclude names matching EXCLUDE from input paths 387s -o OUTPUT, --output=OUTPUT 387s write to OUTPUT in xlf, xliff formats 387s -t TEMPLATE, --template=TEMPLATE 387s read from TEMPLATE in xlf, xliff formats 387s -S, --timestamp skip conversion if the output file has newer timestamp 387s ========= SMOKE TEST: /usr/bin/po2yaml =========== 387s Usage: po2yaml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 387s 387s Convert Gettext PO localization files to YAML files. See: 387s http://docs.translatehouse.org/projects/translate- 387s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 387s 387s Options: 387s --version show program's version number and exit 387s -h, --help show this help message and exit 387s --manpage output a manpage based on the help 387s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 387s --errorlevel=ERRORLEVEL 387s show errorlevel as: none, message, exception, 387s traceback 387s -i INPUT, --input=INPUT 387s read from INPUT in po, pot formats 387s -x EXCLUDE, --exclude=EXCLUDE 387s exclude names matching EXCLUDE from input paths 387s -o OUTPUT, --output=OUTPUT 387s write to OUTPUT in yaml, yml formats 387s -t TEMPLATE, --template=TEMPLATE 387s read from TEMPLATE in yaml, yml formats 387s -S, --timestamp skip conversion if the output file has newer timestamp 387s --threshold=PERCENT only convert files where the translation completion is 387s above PERCENT 387s --fuzzy use translations marked fuzzy 387s --nofuzzy don't use translations marked fuzzy (default) 387s ========= SMOKE TEST: /usr/bin/poclean =========== 388s Usage: poclean [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 388s 388s Produces a clean file from an unclean file (Trados/Wordfast) by stripping out 388s the tw4win indicators. This does not convert an RTF file to PO/XLIFF, but 388s produces the target file with only the target text in from a text version of 388s the RTF. 388s 388s Options: 388s --version show program's version number and exit 388s -h, --help show this help message and exit 388s --manpage output a manpage based on the help 388s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 388s --errorlevel=ERRORLEVEL 388s show errorlevel as: none, message, exception, 388s traceback 388s -i INPUT, --input=INPUT 388s read from INPUT in po, pot, xlf, xliff formats 388s -x EXCLUDE, --exclude=EXCLUDE 388s exclude names matching EXCLUDE from input paths 388s -o OUTPUT, --output=OUTPUT 388s write to OUTPUT in po, pot, xlf, xliff formats 388s -S, --timestamp skip conversion if the output file has newer timestamp 388s ========= SMOKE TEST: /usr/bin/pocompendium =========== 388s Usage: pocompendium [options] output.po <-d directory(s)|file(s)> 388s The first parameter is the output file, standard output if the output file is '-'. 388s Any number of directories may be specified for input files. 388s Options: 388s --invert|v Creates an inverse compendium with msgid and msgstr swapped 388s --errors|e Only ouput msg bundles that have errors 388s --correct|c Only ouput msg bundles that are correctly translated 388s --ignore-case|i Drops all strings to lowercase 388s --strip-accel-tilde|-st Strip all tilde (~) accelerator characters 388s --strip-accel-amp|-sa Strip all ampersand (&) accelerator characters 388s --strip-accel-under|-su Strip all underscore (_) accelerator characters 388s ========= SMOKE TEST: /usr/bin/pocompile =========== 388s Usage: pocompile [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 388s 388s Compile XLIFF and Gettext PO localization files into Gettext MO (Machine 388s Object) files. See: http://docs.translatehouse.org/projects/translate- 388s toolkit/en/latest/commands/pocompile.html for examples and usage instructions. 388s 388s Options: 388s --version show program's version number and exit 388s -h, --help show this help message and exit 388s --manpage output a manpage based on the help 388s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 388s --errorlevel=ERRORLEVEL 388s show errorlevel as: none, message, exception, 388s traceback 388s -i INPUT, --input=INPUT 388s read from INPUT in po, pot, xlf, xliff formats 388s -x EXCLUDE, --exclude=EXCLUDE 388s exclude names matching EXCLUDE from input paths 388s -o OUTPUT, --output=OUTPUT 388s write to OUTPUT in mo format 388s -S, --timestamp skip conversion if the output file has newer timestamp 388s --fuzzy use translations marked fuzzy 388s --nofuzzy don't use translations marked fuzzy (default) 388s ========= SMOKE TEST: /usr/bin/poconflicts =========== 388s 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] 388s input directory is searched for PO files, PO files with name of conflicting string are output in output directory 388s 388s Conflict finder for Gettext PO localization files. See: 388s http://docs.translatehouse.org/projects/translate- 388s toolkit/en/latest/commands/poconflicts.html for examples and usage 388s instructions. 388s 388s Options: 388s --version show program's version number and exit 388s -h, --help show this help message and exit 388s --manpage output a manpage based on the help 388s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 388s --errorlevel=ERRORLEVEL 388s show errorlevel as: none, message, exception, 388s traceback 388s -i INPUT, --input=INPUT 388s read from INPUT in po format 388s -x EXCLUDE, --exclude=EXCLUDE 388s exclude names matching EXCLUDE from input paths 388s -o OUTPUT, --output=OUTPUT 388s write to OUTPUT in po format 388s -I, --ignore-case ignore case distinctions 388s -v, --invert invert the conflicts thus extracting conflicting 388s destination words 388s --accelerator=ACCELERATORS 388s ignores the given accelerator characters when matching 388s ========= SMOKE TEST: /usr/bin/pocount =========== 388s usage: pocount [-h] [--incomplete] 388s [--full | --csv | --short | --short-strings | --short-words] 388s [--no-color] 388s files [files ...] 388s 388s positional arguments: 388s files 388s 388s options: 388s -h, --help show this help message and exit 388s --incomplete skip 100% translated files. 388s 388s Output format: 388s --full (default) statistics in full, verbose format 388s --csv statistics in CSV format 388s --short same as --short-strings 388s --short-strings statistics of strings in short format - one line per file 388s --short-words statistics of words in short format - one line per file 388s --no-color show output without color 388s ========= SMOKE TEST: /usr/bin/podebug =========== 388s Usage: podebug [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 388s 388s Insert debug messages into XLIFF and Gettext PO localization files. See: 388s http://docs.translatehouse.org/projects/translate- 388s toolkit/en/latest/commands/podebug.html for examples and usage instructions. 388s 388s Options: 388s --version show program's version number and exit 388s -h, --help show this help message and exit 388s --manpage output a manpage based on the help 388s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 388s --errorlevel=ERRORLEVEL 388s show errorlevel as: none, message, exception, 388s traceback 388s -i INPUT, --input=INPUT 388s read from INPUT in po, pot, pot, tmx, xlf, xliff 388s formats 388s -x EXCLUDE, --exclude=EXCLUDE 388s exclude names matching EXCLUDE from input paths 388s -o OUTPUT, --output=OUTPUT 388s write to OUTPUT in po, pot, tmx, xlf, xliff formats 388s -S, --timestamp skip conversion if the output file has newer timestamp 388s -f FORMAT, --format=FORMAT 388s specify format string 388s --rewrite=STYLE the translation rewrite style: blank, bracket, chef, 388s classified, en, flipped, unicode, xxx 388s --ignore=APPLICATION apply tagging ignore rules for the given application: 388s gtk, kde, libreoffice, mozilla, openoffice 388s --preserveplaceholders 388s attempt to exclude characters that are part of 388s placeholders when performing character-level rewrites 388s so that consuming applications can still use the 388s placeholders to generate final output 388s ========= SMOKE TEST: /usr/bin/pofilter =========== 388s Usage: pofilter [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 388s 388s Perform quality checks on Gettext PO, XLIFF and TMX localization files. 388s Snippet files are created whenever a test fails. These can be examined, 388s corrected and merged back into the originals using pomerge. See: 388s http://docs.translatehouse.org/projects/translate- 388s toolkit/en/latest/commands/pofilter.html for examples and usage instructions 388s and http://docs.translatehouse.org/projects/translate- 388s toolkit/en/latest/commands/pofilter_tests.html for full descriptions of all 388s tests. 388s 388s Options: 388s --version show program's version number and exit 388s -h, --help show this help message and exit 388s --manpage output a manpage based on the help 388s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 388s --errorlevel=ERRORLEVEL 388s show errorlevel as: none, message, exception, 388s traceback 388s -i INPUT, --input=INPUT 388s read from INPUT in po, pot, tmx, xlf, xliff formats 388s -x EXCLUDE, --exclude=EXCLUDE 388s exclude names matching EXCLUDE from input paths 388s -o OUTPUT, --output=OUTPUT 388s write to OUTPUT in po, pot, tmx, xlf, xliff formats 388s -l, --listfilters list filters available 388s --review include units marked for review (default) 388s --noreview exclude units marked for review 388s --fuzzy include units marked fuzzy (default) 388s --nofuzzy exclude units marked fuzzy 388s --nonotes don't add notes about the errors 388s --autocorrect output automatic corrections where possible rather 388s than describing issues 388s --language=LANG set target language code (e.g. af-ZA) [required for 388s spell check and recommended in general] 388s --openoffice use the standard checks for OpenOffice translations 388s --libreoffice use the standard checks for LibreOffice translations 388s --mozilla use the standard checks for Mozilla translations 388s --drupal use the standard checks for Drupal translations 388s --gnome use the standard checks for Gnome translations 388s --kde use the standard checks for KDE translations 388s --wx use the standard checks for wxWidgets translations 388s --excludefilter=FILTER 388s don't use FILTER when filtering 388s -t FILTER, --test=FILTER 388s only use test FILTERs specified with this option when 388s filtering 388s --notranslatefile=FILE 388s read list of untranslatable words from FILE (must not 388s be translated) 388s --musttranslatefile=FILE 388s read list of translatable words from FILE (must be 388s translated) 388s --validcharsfile=FILE 388s read list of all valid characters from FILE (must be 388s in UTF-8) 389s ========= SMOKE TEST: /usr/bin/pogrep =========== 389s 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] 389s 389s Grep XLIFF, Gettext PO and TMX localization files. Matches are output to 389s snippet files of the same type which can then be reviewed and later merged 389s using :doc:`pomerge `. See: 389s http://docs.translatehouse.org/projects/translate- 389s toolkit/en/latest/commands/pogrep.html for examples and usage instructions. 389s 389s Options: 389s --version show program's version number and exit 389s -h, --help show this help message and exit 389s --manpage output a manpage based on the help 389s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 389s --errorlevel=ERRORLEVEL 389s show errorlevel as: none, message, exception, 389s traceback 389s -i INPUT, --input=INPUT 389s read from INPUT in gmo, mo, po, pot, tmx, xlf, xlff, 389s xliff formats 389s -x EXCLUDE, --exclude=EXCLUDE 389s exclude names matching EXCLUDE from input paths 389s -o OUTPUT, --output=OUTPUT 389s write to OUTPUT in gmo, mo, po, pot, tmx, xlf, xlff, 389s xliff formats 389s --search=SEARCHPARTS searches the given parts (source, target, notes and 389s locations) 389s -I, --ignore-case ignore case distinctions 389s -e, --regexp use regular expression matching 389s -v, --invert-match select non-matching lines 389s --accelerator=ACCELERATOR 389s ignores the given accelerator when matching 389s -k, --keep-translations 389s always extract units with translations 389s ========= SMOKE TEST: /usr/bin/pomerge =========== 389s Usage: pomerge [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 389s 389s Merges XLIFF and Gettext PO localization files. Snippet file produced by 389s e.g. :doc:`pogrep ` and updated by a translator can be 389s merged back into the original files. See: 389s http://docs.translatehouse.org/projects/translate- 389s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 389s 389s Options: 389s --version show program's version number and exit 389s -h, --help show this help message and exit 389s --manpage output a manpage based on the help 389s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 389s --errorlevel=ERRORLEVEL 389s show errorlevel as: none, message, exception, 389s traceback 389s -i INPUT, --input=INPUT 389s read from INPUT in po, pot, pot, xlf, xliff formats 389s -x EXCLUDE, --exclude=EXCLUDE 389s exclude names matching EXCLUDE from input paths 389s -o OUTPUT, --output=OUTPUT 389s write to OUTPUT in po, pot, pot, xlf, xliff formats 389s -t TEMPLATE, --template=TEMPLATE 389s read from TEMPLATE in po, pot, pot, xlf, xliff formats 389s -S, --timestamp skip conversion if the output file has newer timestamp 389s --mergeblanks=MERGEBLANKS 389s whether to overwrite existing translations with blank 389s translations (yes/no). Default is yes. 389s --mergefuzzy=MERGEFUZZY 389s whether to consider fuzzy translations from input 389s (yes/no). Default is yes. 389s --mergecomments=MERGECOMMENTS 389s whether to merge comments as well as translations 389s (yes/no). Default is yes. 389s ========= SMOKE TEST: /usr/bin/pomigrate2 =========== 389s Usage pomigrate2 [options] 389s 389s Options: 389s -F|--use-fuzzy-matching - use fuzzy algorithms when merging to attempt to match strings 389s -C|--use-compendium - create and use a compendium built from the migrating files 389s -C|--use-compendium=some-compendium.po 389s - use an external compendium during the migration 389s --no-wrap - do not wrap long lines 389s --locale=lang - set locale for newly born files 389s -q|--quiet - suppress most output 389s -p|--pot2po - use pot2po instead of msgmerge to migrate 389s ========= SMOKE TEST: /usr/bin/popuretext =========== 389s Usage: popuretext ( -P pot-dir | po-dir ) file.txt [accelerator] 389s ========= SMOKE TEST: /usr/bin/poreencode =========== 389s Usage: poreencode 389s eg: poreencode UTF-8 af/ 389s ========= SMOKE TEST: /usr/bin/porestructure =========== 389s Usage: porestructure [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 389s input directory is searched for PO files with (poconflicts) comments, all entries are written to files in a directory structure for pomerge 389s 389s Restructure Gettxt PO files produced by :doc:`poconflicts 389s ` into the original directory tree for merging using 389s :doc:`pomerge `. See: 389s http://docs.translatehouse.org/projects/translate- 389s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 389s 389s Options: 389s --version show program's version number and exit 389s -h, --help show this help message and exit 389s --manpage output a manpage based on the help 389s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 389s --errorlevel=ERRORLEVEL 389s show errorlevel as: none, message, exception, 389s traceback 389s -i INPUT, --input=INPUT 389s read from INPUT in po format 389s -x EXCLUDE, --exclude=EXCLUDE 389s exclude names matching EXCLUDE from input paths 389s -o OUTPUT, --output=OUTPUT 389s write to OUTPUT in po format 389s ========= SMOKE TEST: /usr/bin/posegment =========== 389s Usage: posegment [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 389s 389s Segment Gettext PO, XLIFF and TMX localization files at the sentence level. 389s See: http://docs.translatehouse.org/projects/translate- 389s toolkit/en/latest/commands/posegment.html for examples and usage instructions. 389s 389s Options: 389s --version show program's version number and exit 389s -h, --help show this help message and exit 389s --manpage output a manpage based on the help 389s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 389s --errorlevel=ERRORLEVEL 389s show errorlevel as: none, message, exception, 389s traceback 389s -i INPUT, --input=INPUT 389s read from INPUT in po, pot, tmx, xlf, xliff formats 389s -x EXCLUDE, --exclude=EXCLUDE 389s exclude names matching EXCLUDE from input paths 389s -o OUTPUT, --output=OUTPUT 389s write to OUTPUT in po, pot, tmx, xlf, xliff formats 389s -S, --timestamp skip conversion if the output file has newer timestamp 389s -P, --pot output PO Templates (.pot) rather than PO files (.po) 389s -l LANG, --language=LANG 389s the target language code 389s --source-language=LANG 389s the source language code (default 'en') 389s --keepspaces Disable automatic stripping of whitespace 389s --only-aligned Removes units where sentence number does not 389s correspond 389s ========= SMOKE TEST: /usr/bin/poswap =========== 389s Usage: poswap [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 389s 389s Builds a new translation file with the target of the input language as source 389s language. .. note:: Ensure that the two po files correspond 100% to the same 389s pot file before using this. To translate Kurdish (ku) through French:: 389s poswap -i fr/ -t ku -o fr-ku To convert the fr-ku files back to en-ku:: 389s poswap --reverse -i fr/ -t fr-ku -o en-ku See: 389s http://docs.translatehouse.org/projects/translate- 389s toolkit/en/latest/commands/poswap.html for examples and usage instructions. 389s 389s Options: 389s --version show program's version number and exit 389s -h, --help show this help message and exit 389s --manpage output a manpage based on the help 389s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 389s --errorlevel=ERRORLEVEL 389s show errorlevel as: none, message, exception, 389s traceback 389s -i INPUT, --input=INPUT 389s read from INPUT in po, pot formats 389s -x EXCLUDE, --exclude=EXCLUDE 389s exclude names matching EXCLUDE from input paths 389s -o OUTPUT, --output=OUTPUT 389s write to OUTPUT in po, pot formats 389s -t TEMPLATE, --template=TEMPLATE 389s read from TEMPLATE in po, pot, pot formats 389s -S, --timestamp skip conversion if the output file has newer timestamp 389s --reverse reverse the process of intermediate language 389s conversion 389s ========= SMOKE TEST: /usr/bin/pot2po =========== 389s 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] 389s 389s Convert template files (like .pot or template .xlf files) to translation 389s files, preserving existing translations. See: 389s http://docs.translatehouse.org/projects/translate- 389s toolkit/en/latest/commands/pot2po.html for examples and usage instructions. 389s 389s Options: 389s --version show program's version number and exit 389s -h, --help show this help message and exit 389s --manpage output a manpage based on the help 389s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 389s --errorlevel=ERRORLEVEL 389s show errorlevel as: none, message, exception, 389s traceback 389s -i INPUT, --input=INPUT 389s read from INPUT in catkeys, lang, pot, ts, xlf, xliff 389s formats 389s -x EXCLUDE, --exclude=EXCLUDE 389s exclude names matching EXCLUDE from input paths 389s -o OUTPUT, --output=OUTPUT 389s write to OUTPUT in catkeys, lang, po, pot, ts, xlf, 389s xliff formats 389s -t TEMPLATE, --template=TEMPLATE 389s read from TEMPLATE in catkeys, lang, po, pot, ts, xlf, 389s xliff formats 389s -S, --timestamp skip conversion if the output file has newer timestamp 389s -P, --pot output PO Templates (.pot) rather than PO files (.po) 389s --tm=TM The file to use as translation memory when fuzzy 389s matching 389s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 389s The minimum similarity for inclusion (default: 75%) 389s --nofuzzymatching Disable fuzzy matching 390s ========= SMOKE TEST: /usr/bin/poterminology =========== 390s 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] 390s input directory is searched for PO files, terminology PO file is output file 390s 390s Create a terminology file by reading a set of .po or .pot files to produce a 390s pootle-terminology.pot. See: 390s http://docs.translatehouse.org/projects/translate- 390s toolkit/en/latest/commands/poterminology.html for examples and usage 390s instructions. 390s 390s Options: 390s --version show program's version number and exit 390s -h, --help show this help message and exit 390s --manpage output a manpage based on the help 390s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 390s --errorlevel=ERRORLEVEL 390s show errorlevel as: none, message, exception, 390s traceback 390s -i INPUT, --input=INPUT 390s read from INPUT in po, pot formats 390s -x EXCLUDE, --exclude=EXCLUDE 390s exclude names matching EXCLUDE from input paths 390s -o OUTPUT, --output=OUTPUT 390s write to OUTPUT in po, pot formats 390s -u UPDATEFILE, --update=UPDATEFILE 390s update terminology in UPDATEFILE 390s -S STOPFILE, --stopword-list=STOPFILE 390s read stopword (term exclusion) list from STOPFILE 390s (default /usr/share/pyshared/translate/share/stoplist- 390s en) 390s -F, --fold-titlecase fold "Title Case" to lowercase (default) 390s -C, --preserve-case preserve all uppercase/lowercase 390s -I, --ignore-case make all terms lowercase 390s --accelerator=ACCELERATORS 390s ignore the given accelerator characters when matching 390s -t LENGTH, --term-words=LENGTH 390s generate terms of up to LENGTH words (default 3) 390s --nonstop-needed=MIN omit terms with less than MIN nonstop words (default 390s 1) 390s --inputs-needed=MIN omit terms appearing in less than MIN input files 390s (default 2, or 1 if only one input file) 390s --fullmsg-needed=MIN omit full message terms appearing in less than MIN 390s different messages (default 1) 390s --substr-needed=MIN omit substring-only terms appearing in less than MIN 390s different messages (default 2) 390s --locs-needed=MIN omit terms appearing in less than MIN different 390s original source files (default 2) 390s --sort=ORDER output sort order(s): frequency, dictionary, length 390s (may repeat option, default is all in above order) 390s --source-language=LANG 390s the source language code (default 'en') 390s -v, --invert invert the source and target languages for terminology 390s ========= SMOKE TEST: /usr/bin/pretranslate =========== 390s Usage: pretranslate [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 390s 390s Fill localization files with suggested translations based on translation 390s memory and existing translations. See: 390s http://docs.translatehouse.org/projects/translate- 390s toolkit/en/latest/commands/pretranslate.html for examples and usage 390s instructions. 390s 390s Options: 390s --version show program's version number and exit 390s -h, --help show this help message and exit 390s --manpage output a manpage based on the help 390s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 390s --errorlevel=ERRORLEVEL 390s show errorlevel as: none, message, exception, 390s traceback 390s -i INPUT, --input=INPUT 390s read from INPUT in po, pot, pot, xlf, xliff formats 390s -x EXCLUDE, --exclude=EXCLUDE 390s exclude names matching EXCLUDE from input paths 390s -o OUTPUT, --output=OUTPUT 390s write to OUTPUT in po, pot, xlf, xliff formats 390s -t TEMPLATE, --template=TEMPLATE 390s read from TEMPLATE in po, pot, xlf, xliff formats 390s -S, --timestamp skip conversion if the output file has newer timestamp 390s --tm=TM The file to use as translation memory when fuzzy 390s matching 390s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 390s The minimum similarity for inclusion (default: 75%) 390s --nofuzzymatching Disable fuzzy matching 390s ========= SMOKE TEST: /usr/bin/prop2po =========== 390s 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] 390s 390s Convert Java/Mozilla .properties files to Gettext PO localization files. 390s See: http://docs.translatehouse.org/projects/translate- 390s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 390s 390s Options: 390s --version show program's version number and exit 390s -h, --help show this help message and exit 390s --manpage output a manpage based on the help 390s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 390s --errorlevel=ERRORLEVEL 390s show errorlevel as: none, message, exception, 390s traceback 390s -i INPUT, --input=INPUT 390s read from INPUT in lang, properties, strings formats 390s -x EXCLUDE, --exclude=EXCLUDE 390s exclude names matching EXCLUDE from input paths 390s -o OUTPUT, --output=OUTPUT 390s write to OUTPUT in po, pot formats 390s -t TEMPLATE, --template=TEMPLATE 390s read from TEMPLATE in lang, properties, strings 390s formats 390s -S, --timestamp skip conversion if the output file has newer timestamp 390s -P, --pot output PO Templates (.pot) rather than PO files (.po) 390s --personality=TYPE override the input file format: java, java-utf8, java- 390s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 390s strings, strings-utf8, joomla (for .properties files, 390s default: java) 390s --encoding=ENCODING override the encoding set by the personality 390s --duplicates=DUPLICATESTYLE 390s what to do with duplicate strings (identical source 390s text): merge, msgctxt (default: 'msgctxt') 391s ========= SMOKE TEST: /usr/bin/pydiff =========== 391s usage: pydiff [-h] [-i] [-U NUM] [-r] [-N] [--unidirectional-new-file] [-s] 391s [-x PAT] [--fromcontains TEXT] [--tocontains TEXT] 391s [--contains TEXT] [-I] [--accelerator ACCELERATORS] 391s fromfile tofile 391s 391s positional arguments: 391s fromfile 391s tofile 391s 391s options: 391s -h, --help show this help message and exit 391s -i, --ignore-case Ignore case differences in file contents. 391s -U NUM, --unified NUM 391s Output NUM (default 3) lines of unified context 391s -r, --recursive Recursively compare any subdirectories found. 391s -N, --new-file Treat absent files as empty. 391s --unidirectional-new-file 391s Treat absent first files as empty. 391s -s, --report-identical-files 391s Report when two files are the same. 391s -x PAT, --exclude PAT 391s Exclude files that match PAT. 391s --fromcontains TEXT Only show changes where fromfile contains TEXT 391s --tocontains TEXT Only show changes where tofile contains TEXT 391s --contains TEXT Only show changes where fromfile or tofile contains 391s TEXT 391s -I, --ignore-case-contains 391s Ignore case differences when matching any of the 391s changes 391s --accelerator ACCELERATORS 391s ignores the given accelerator characters when matching 391s ========= SMOKE TEST: /usr/bin/pypo2phppo =========== 391s Usage: pypo2phppo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 391s 391s Convert Python format .po files to PHP format .po files. 391s 391s Options: 391s --version show program's version number and exit 391s -h, --help show this help message and exit 391s --manpage output a manpage based on the help 391s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 391s --errorlevel=ERRORLEVEL 391s show errorlevel as: none, message, exception, 391s traceback 391s -i INPUT, --input=INPUT 391s read from INPUT in po, pot formats 391s -x EXCLUDE, --exclude=EXCLUDE 391s exclude names matching EXCLUDE from input paths 391s -o OUTPUT, --output=OUTPUT 391s write to OUTPUT in po, pot formats 391s -S, --timestamp skip conversion if the output file has newer timestamp 391s ========= SMOKE TEST: /usr/bin/rc2po =========== 391s 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] 391s 391s Convert Windows RC files to Gettext PO localization files. See: 391s http://docs.translatehouse.org/projects/translate- 391s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 391s 391s Options: 391s --version show program's version number and exit 391s -h, --help show this help message and exit 391s --manpage output a manpage based on the help 391s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 391s --errorlevel=ERRORLEVEL 391s show errorlevel as: none, message, exception, 391s traceback 391s -i INPUT, --input=INPUT 391s read from INPUT in nls, rc formats 391s -x EXCLUDE, --exclude=EXCLUDE 391s exclude names matching EXCLUDE from input paths 391s -o OUTPUT, --output=OUTPUT 391s write to OUTPUT in po, pot formats 391s -t TEMPLATE, --template=TEMPLATE 391s read from TEMPLATE in nls, rc formats 391s -S, --timestamp skip conversion if the output file has newer timestamp 391s -P, --pot output PO Templates (.pot) rather than PO files (.po) 391s --charset=CHARSET charset to use to decode the RC files (autodetection 391s is used by default) 391s -l LANG, --lang=LANG LANG entry (default: None) 391s --sublang=SUBLANG SUBLANG entry (default: None) 391s --duplicates=DUPLICATESTYLE 391s what to do with duplicate strings (identical source 391s text): merge, msgctxt (default: 'msgctxt') 391s ========= SMOKE TEST: /usr/bin/resx2po =========== 392s 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] 392s 392s Convert .Net Resource (.resx) to Gettext PO localisation files. See: 392s http://docs.translatehouse.org/projects/translate- 392s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 392s 392s Options: 392s --version show program's version number and exit 392s -h, --help show this help message and exit 392s --manpage output a manpage based on the help 392s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 392s --errorlevel=ERRORLEVEL 392s show errorlevel as: none, message, exception, 392s traceback 392s -i INPUT, --input=INPUT 392s read from INPUT in resx format 392s -x EXCLUDE, --exclude=EXCLUDE 392s exclude names matching EXCLUDE from input paths 392s -o OUTPUT, --output=OUTPUT 392s write to OUTPUT in po, pot formats 392s -t TEMPLATE, --template=TEMPLATE 392s read from TEMPLATE in resx format 392s -S, --timestamp skip conversion if the output file has newer timestamp 392s -P, --pot output PO Templates (.pot) rather than PO files (.po) 392s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 392s everything) 392s --duplicates=DUPLICATESTYLE 392s what to do with duplicate strings (identical source 392s text): merge, msgctxt (default: 'msgctxt') 392s ========= SMOKE TEST: /usr/bin/sub2po =========== 392s 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] 392s 392s Convert subtitle files to Gettext PO localization files. See: 392s http://docs.translatehouse.org/projects/translate- 392s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 392s 392s Options: 392s --version show program's version number and exit 392s -h, --help show this help message and exit 392s --manpage output a manpage based on the help 392s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 392s --errorlevel=ERRORLEVEL 392s show errorlevel as: none, message, exception, 392s traceback 392s -i INPUT, --input=INPUT 392s read from INPUT in ass, srt, ssa, sub formats 392s -x EXCLUDE, --exclude=EXCLUDE 392s exclude names matching EXCLUDE from input paths 392s -o OUTPUT, --output=OUTPUT 392s write to OUTPUT in po, pot formats 392s -t TEMPLATE, --template=TEMPLATE 392s read from TEMPLATE in ass, srt, ssa, sub formats 392s -S, --timestamp skip conversion if the output file has newer timestamp 392s -P, --pot output PO Templates (.pot) rather than PO files (.po) 392s --duplicates=DUPLICATESTYLE 392s what to do with duplicate strings (identical source 392s text): merge, msgctxt (default: 'msgctxt') 392s ========= SMOKE TEST: /usr/bin/symb2po =========== 392s 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] 392s 392s Convert Symbian localisation files to Gettext PO localization files. See: 392s http://docs.translatehouse.org/projects/translate- 392s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 392s 392s Options: 392s --version show program's version number and exit 392s -h, --help show this help message and exit 392s --manpage output a manpage based on the help 392s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 392s --errorlevel=ERRORLEVEL 392s show errorlevel as: none, message, exception, 392s traceback 392s -i INPUT, --input=INPUT 392s read from INPUT in r01 format 392s -x EXCLUDE, --exclude=EXCLUDE 392s exclude names matching EXCLUDE from input paths 392s -o OUTPUT, --output=OUTPUT 392s write to OUTPUT in po, pot formats 392s -t TEMPLATE, --template=TEMPLATE 392s read from TEMPLATE in 392s -S, --timestamp skip conversion if the output file has newer timestamp 392s -P, --pot output PO Templates (.pot) rather than PO files (.po) 392s --duplicates=DUPLICATESTYLE 392s what to do with duplicate strings (identical source 392s text): merge, msgctxt (default: 'msgctxt') 392s ========= SMOKE TEST: /usr/bin/tbx2po =========== 393s Usage: tbx2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 393s 393s Convert TermBase eXchange (.tbx) glossary file into a Gettext PO file. See: 393s http://docs.translatehouse.org/projects/translate- 393s toolkit/en/latest/commands/tbx2po.html for examples and usage instructions 393s 393s Options: 393s --version show program's version number and exit 393s -h, --help show this help message and exit 393s --manpage output a manpage based on the help 393s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 393s --errorlevel=ERRORLEVEL 393s show errorlevel as: none, message, exception, 393s traceback 393s -i INPUT, --input=INPUT 393s read from INPUT in tbx format 393s -x EXCLUDE, --exclude=EXCLUDE 393s exclude names matching EXCLUDE from input paths 393s -o OUTPUT, --output=OUTPUT 393s write to OUTPUT in po, pot formats 393s -S, --timestamp skip conversion if the output file has newer timestamp 393s ========= SMOKE TEST: /usr/bin/tiki2po =========== 393s Usage: tiki2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 393s 393s Convert TikiWiki's language.php files to Gettext PO localization files. See: 393s http://docs.translatehouse.org/projects/translate- 393s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 393s 393s Options: 393s --version show program's version number and exit 393s -h, --help show this help message and exit 393s --manpage output a manpage based on the help 393s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 393s --errorlevel=ERRORLEVEL 393s show errorlevel as: none, message, exception, 393s traceback 393s -i INPUT, --input=INPUT 393s read from INPUT in php format 393s -x EXCLUDE, --exclude=EXCLUDE 393s exclude names matching EXCLUDE from input paths 393s -o OUTPUT, --output=OUTPUT 393s write to OUTPUT in po, pot formats 393s -S, --timestamp skip conversion if the output file has newer timestamp 393s --include-unused Include strings in the unused section 393s ========= SMOKE TEST: /usr/bin/tmserver =========== 394s usage: tmserver [-h] [-d TMDBFILE] [-f TMFILES] [-t TARGET_LANG] 394s [-s SOURCE_LANG] [-b BIND] [-p PORT] 394s [--max-candidates MAX_CANDIDATES] 394s [--min-similarity MIN_SIMILARITY] [--max-length MAX_LENGTH] 394s [--debug] 394s 394s options: 394s -h, --help show this help message and exit 394s -d TMDBFILE, --tmdb TMDBFILE 394s translation memory database file 394s -f TMFILES, --import-translation-file TMFILES 394s translation file to import into the database 394s -t TARGET_LANG, --import-target-lang TARGET_LANG 394s target language of translation files 394s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 394s source language of translation files 394s -b BIND, --bind BIND address to bind server to (default: localhost) 394s -p PORT, --port PORT port to listen on (default: 8888) 394s --max-candidates MAX_CANDIDATES 394s Maximum number of candidates 394s --min-similarity MIN_SIMILARITY 394s minimum similarity 394s --max-length MAX_LENGTH 394s Maxmimum string length 394s --debug enable debugging features 394s ========= SMOKE TEST: /usr/bin/ts2po =========== 394s Usage: ts2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 394s 394s Convert Qt Linguist (.ts) files to Gettext PO localization files. See: 394s http://docs.translatehouse.org/projects/translate- 394s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 394s 394s Options: 394s --version show program's version number and exit 394s -h, --help show this help message and exit 394s --manpage output a manpage based on the help 394s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 394s --errorlevel=ERRORLEVEL 394s show errorlevel as: none, message, exception, 394s traceback 394s -i INPUT, --input=INPUT 394s read from INPUT in ts format 394s -x EXCLUDE, --exclude=EXCLUDE 394s exclude names matching EXCLUDE from input paths 394s -o OUTPUT, --output=OUTPUT 394s write to OUTPUT in po, pot formats 394s -S, --timestamp skip conversion if the output file has newer timestamp 394s -P, --pot output PO Templates (.pot) rather than PO files (.po) 394s --duplicates=DUPLICATESTYLE 394s what to do with duplicate strings (identical source 394s text): merge, msgctxt (default: 'msgctxt') 395s ========= SMOKE TEST: /usr/bin/txt2po =========== 395s Usage: txt2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 395s 395s Convert plain text (.txt) files to Gettext PO localization files. See: 395s http://docs.translatehouse.org/projects/translate- 395s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 395s 395s Options: 395s --version show program's version number and exit 395s -h, --help show this help message and exit 395s --manpage output a manpage based on the help 395s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 395s --errorlevel=ERRORLEVEL 395s show errorlevel as: none, message, exception, 395s traceback 395s -i INPUT, --input=INPUT 395s read from INPUT in *, txt formats 395s -x EXCLUDE, --exclude=EXCLUDE 395s exclude names matching EXCLUDE from input paths 395s -o OUTPUT, --output=OUTPUT 395s write to OUTPUT in po, pot formats 395s -S, --timestamp skip conversion if the output file has newer timestamp 395s -P, --pot output PO Templates (.pot) rather than PO files (.po) 395s --encoding=ENCODING The encoding of the input file (default: UTF-8) 395s --flavour=FLAVOUR The flavour of text file: plain (default), dokuwiki, 395s mediawiki 395s --no-segmentation Don't segment the file, treat it like a single message 395s --duplicates=DUPLICATESTYLE 395s what to do with duplicate strings (identical source 395s text): merge, msgctxt (default: 'msgctxt') 395s ========= SMOKE TEST: /usr/bin/web2py2po =========== 395s Usage: web2py2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 395s 395s Convert web2py translation dictionaries (.py) to GNU/gettext PO files. See: 395s http://docs.translatehouse.org/projects/translate- 395s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 395s 395s Options: 395s --version show program's version number and exit 395s -h, --help show this help message and exit 395s --manpage output a manpage based on the help 395s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 395s --errorlevel=ERRORLEVEL 395s show errorlevel as: none, message, exception, 395s traceback 395s -i INPUT, --input=INPUT 395s read from INPUT in py format 395s -x EXCLUDE, --exclude=EXCLUDE 395s exclude names matching EXCLUDE from input paths 395s -o OUTPUT, --output=OUTPUT 395s write to OUTPUT in po, pot formats 395s -S, --timestamp skip conversion if the output file has newer timestamp 395s -P, --pot output PO Templates (.pot) rather than PO files (.po) 395s --duplicates=DUPLICATESTYLE 395s what to do with duplicate strings (identical source 395s text): merge, msgctxt (default: 'msgctxt') 395s ========= SMOKE TEST: /usr/bin/xliff2odf =========== 396s Usage: xliff2odf [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 396s 396s Convert XLIFF translation files to OpenDocument (ODF) files. See: 396s http://docs.translatehouse.org/projects/translate- 396s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 396s 396s Options: 396s --version show program's version number and exit 396s -h, --help show this help message and exit 396s --manpage output a manpage based on the help 396s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 396s --errorlevel=ERRORLEVEL 396s show errorlevel as: none, message, exception, 396s traceback 396s -i INPUT, --input=INPUT 396s read from INPUT in xlf format 396s -x EXCLUDE, --exclude=EXCLUDE 396s exclude names matching EXCLUDE from input paths 396s -o OUTPUT, --output=OUTPUT 396s write to OUTPUT in odc, odf, odg, odi, odm, odp, ods, 396s odt, otc, otf, otg, oth, oti, otp, ots, ott formats 396s -t TEMPLATE, --template=TEMPLATE 396s read from TEMPLATE in odc, odf, odg, odi, odm, odp, 396s ods, odt, otc, otf, otg, oth, oti, otp, ots, ott 396s formats 396s -S, --timestamp skip conversion if the output file has newer timestamp 396s ========= SMOKE TEST: /usr/bin/xliff2oo =========== 396s Usage: xliff2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 396s 396s Convert XLIFF localization files to an OpenOffice.org (SDF) localization 396s file. See: http://docs.translatehouse.org/projects/translate- 396s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 396s 396s Options: 396s --version show program's version number and exit 396s -h, --help show this help message and exit 396s --manpage output a manpage based on the help 396s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 396s --errorlevel=ERRORLEVEL 396s show errorlevel as: none, message, exception, 396s traceback 396s -i INPUT, --input=INPUT 396s read from INPUT in po, pot, xlf, xliff formats 396s -x EXCLUDE, --exclude=EXCLUDE 396s exclude names matching EXCLUDE from input paths 396s -o OUTPUT, --output=OUTPUT 396s write to OUTPUT in oo, sdf formats 396s -t TEMPLATE, --template=TEMPLATE 396s read from TEMPLATE in oo, sdf formats 396s -S, --timestamp skip conversion if the output file has newer timestamp 396s -l LANG, --language=LANG 396s set target language code (e.g. af-ZA) [required] 396s --source-language=LANG 396s set source language code (default en-US) 396s -T, --keeptimestamp don't change the timestamps of the strings 396s --nonrecursiveoutput don't treat the output oo as a recursive store 396s --nonrecursivetemplate 396s don't treat the template oo as a recursive store 396s --skipsource don't output the source language, but fallback to it 396s where needed 396s --filteraction=ACTION 396s action on pofilter failure: none (default), warn, 396s exclude-serious, exclude-all 396s --fuzzy use translations marked fuzzy 396s --nofuzzy don't use translations marked fuzzy (default) 396s --multifile=MULTIFILESTYLE 396s how to split po/pot files (single, toplevel or 396s onefile) 396s ========= SMOKE TEST: /usr/bin/xliff2po =========== 397s Usage: xliff2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 397s 397s Convert XLIFF localization files to Gettext PO localization files. See: 397s http://docs.translatehouse.org/projects/translate- 397s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 397s 397s Options: 397s --version show program's version number and exit 397s -h, --help show this help message and exit 397s --manpage output a manpage based on the help 397s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 397s --errorlevel=ERRORLEVEL 397s show errorlevel as: none, message, exception, 397s traceback 397s -i INPUT, --input=INPUT 397s read from INPUT in xlf, xliff formats 397s -x EXCLUDE, --exclude=EXCLUDE 397s exclude names matching EXCLUDE from input paths 397s -o OUTPUT, --output=OUTPUT 397s write to OUTPUT in po, pot formats 397s -S, --timestamp skip conversion if the output file has newer timestamp 397s -P, --pot output PO Templates (.pot) rather than PO files (.po) 397s --duplicates=DUPLICATESTYLE 397s what to do with duplicate strings (identical source 397s text): merge, msgctxt (default: 'msgctxt') 397s ========= SMOKE TEST: /usr/bin/yaml2po =========== 397s 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] 397s 397s Convert YAML files to Gettext PO localization files. See: 397s http://docs.translatehouse.org/projects/translate- 397s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 397s 397s Options: 397s --version show program's version number and exit 397s -h, --help show this help message and exit 397s --manpage output a manpage based on the help 397s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 397s --errorlevel=ERRORLEVEL 397s show errorlevel as: none, message, exception, 397s traceback 397s -i INPUT, --input=INPUT 397s read from INPUT in yaml, yml formats 397s -x EXCLUDE, --exclude=EXCLUDE 397s exclude names matching EXCLUDE from input paths 397s -o OUTPUT, --output=OUTPUT 397s write to OUTPUT in po, pot formats 397s -t TEMPLATE, --template=TEMPLATE 397s read from TEMPLATE in yaml, yml formats 397s -S, --timestamp skip conversion if the output file has newer timestamp 397s -P, --pot output PO Templates (.pot) rather than PO files (.po) 397s --duplicates=DUPLICATESTYLE 397s what to do with duplicate strings (identical source 397s text): merge, msgctxt (default: 'msgctxt') 398s autopkgtest [04:09:43]: test translate-toolkit: -----------------------] 401s autopkgtest [04:09:46]: test translate-toolkit: - - - - - - - - - - results - - - - - - - - - - 401s translate-toolkit PASS 406s autopkgtest [04:09:51]: test python3-translate: preparing testbed 448s autopkgtest [04:10:33]: testbed dpkg architecture: armhf 450s autopkgtest [04:10:35]: testbed apt version: 2.9.3 450s autopkgtest [04:10:35]: @@@@@@@@@@@@@@@@@@@@ test bed setup 462s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 464s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 464s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [1680 B] 464s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 464s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [328 kB] 464s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main armhf Packages [35.4 kB] 464s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted armhf Packages [1860 B] 464s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf Packages [238 kB] 464s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse armhf Packages [1768 B] 465s Fetched 769 kB in 2s (326 kB/s) 466s Reading package lists... 481s tee: /proc/self/fd/2: Permission denied 504s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 504s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 504s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 504s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 510s Reading package lists... 510s Reading package lists... 511s Building dependency tree... 511s Reading state information... 511s Calculating upgrade... 512s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 512s Reading package lists... 512s Building dependency tree... 512s Reading state information... 513s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 515s autopkgtest [04:11:40]: rebooting testbed after setup commands that affected boot 588s Reading package lists... 588s Building dependency tree... 588s Reading state information... 588s Starting pkgProblemResolver with broken count: 0 588s Starting 2 pkgProblemResolver with broken count: 0 588s Done 589s The following additional packages will be installed: 589s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 589s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 589s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 589s python3-aeidon python3-all python3-bs4 python3-cheroot python3-dateutil 589s python3-diff-match-patch python3-enchant python3-iniconfig python3-iniparse 589s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 589s python3-more-itertools python3-packaging python3-phply python3-pluggy 589s python3-ply python3-pycountry python3-pytest python3-rapidfuzz 589s python3-ruamel.yaml python3-ruamel.yaml.clib python3-simplejson 589s python3-soupsieve python3-syrupy python3-translate python3-vobject 589s python3-xapian subversion 589s Suggested packages: 589s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 589s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 589s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 589s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 589s db5.3-util libapache2-mod-svn subversion-tools 589s Recommended packages: 589s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 589s python3-cssselect python3-html5lib python3-tz 589s The following NEW packages will be installed: 589s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 589s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 589s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 589s libxslt1.1 python3-aeidon python3-all python3-bs4 python3-cheroot 589s python3-dateutil python3-diff-match-patch python3-enchant python3-iniconfig 589s python3-iniparse python3-jaraco.functools python3-levenshtein python3-lxml 589s python3-mistletoe python3-more-itertools python3-packaging python3-phply 589s python3-pluggy python3-ply python3-pycountry python3-pytest 589s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 589s python3-simplejson python3-soupsieve python3-syrupy python3-translate 589s python3-vobject python3-xapian subversion 589s 0 upgraded, 47 newly installed, 0 to remove and 0 not upgraded. 589s Need to get 10.2 MB/10.2 MB of archives. 589s After this operation, 38.5 MB of additional disk space will be used. 589s Get:1 /tmp/autopkgtest.fz6MXe/2-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [876 B] 589s Get:2 http://ftpmaster.internal/ubuntu oracular/main armhf emacsen-common all 3.0.5 [12.1 kB] 590s Get:3 http://ftpmaster.internal/ubuntu oracular/main armhf dictionaries-common all 1.29.7 [188 kB] 590s Get:4 http://ftpmaster.internal/ubuntu oracular/main armhf libgomp1 armhf 14.1.0-1ubuntu1 [125 kB] 590s Get:5 http://ftpmaster.internal/ubuntu oracular/main armhf gettext armhf 0.21-14ubuntu2 [800 kB] 591s Get:6 http://ftpmaster.internal/ubuntu oracular/main armhf hunspell-en-us all 1:2020.12.07-2 [280 kB] 591s Get:7 http://ftpmaster.internal/ubuntu oracular/main armhf libapr1t64 armhf 1.7.2-3.2 [86.0 kB] 591s Get:8 http://ftpmaster.internal/ubuntu oracular/main armhf libaprutil1t64 armhf 1.6.3-1.1ubuntu7 [82.3 kB] 591s Get:9 http://ftpmaster.internal/ubuntu oracular/main armhf libaspell15 armhf 0.60.8.1-1build1 [307 kB] 591s Get:10 http://ftpmaster.internal/ubuntu oracular/main armhf libhunspell-1.7-0 armhf 1.7.2+really1.7.2-10build3 [307 kB] 591s Get:11 http://ftpmaster.internal/ubuntu oracular/main armhf libenchant-2-2 armhf 2.3.3-2build2 [43.4 kB] 591s Get:12 http://ftpmaster.internal/ubuntu oracular/main armhf libexttextcat-data all 3.4.7-1build1 [193 kB] 591s Get:13 http://ftpmaster.internal/ubuntu oracular/universe armhf libserf-1-1 armhf 1.3.10-2 [40.2 kB] 591s Get:14 http://ftpmaster.internal/ubuntu oracular/universe armhf libutf8proc3 armhf 2.9.0-1build1 [70.6 kB] 591s Get:15 http://ftpmaster.internal/ubuntu oracular/universe armhf libsvn1 armhf 1.14.3-1build4 [1200 kB] 591s Get:16 http://ftpmaster.internal/ubuntu oracular/universe armhf libxapian30 armhf 1.4.22-1build1 [690 kB] 591s Get:17 http://ftpmaster.internal/ubuntu oracular/main armhf libxslt1.1 armhf 1.1.39-0exp1build1 [150 kB] 591s Get:18 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-aeidon all 1.11-2 [221 kB] 591s Get:19 http://ftpmaster.internal/ubuntu oracular/main armhf python3-all armhf 3.12.3-0ubuntu1 [886 B] 591s Get:20 http://ftpmaster.internal/ubuntu oracular/main armhf python3-soupsieve all 2.5-1 [33.0 kB] 591s Get:21 http://ftpmaster.internal/ubuntu oracular/main armhf python3-bs4 all 4.12.3-1 [109 kB] 591s Get:22 http://ftpmaster.internal/ubuntu oracular/main armhf python3-more-itertools all 10.2.0-1 [52.9 kB] 591s Get:23 http://ftpmaster.internal/ubuntu oracular/main armhf python3-jaraco.functools all 4.0.0-1 [10.7 kB] 591s Get:24 http://ftpmaster.internal/ubuntu oracular/main armhf python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 591s Get:25 http://ftpmaster.internal/ubuntu oracular/main armhf python3-dateutil all 2.9.0-2 [80.3 kB] 591s Get:26 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-diff-match-patch all 20230430-1 [33.1 kB] 591s Get:27 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-enchant all 3.2.2-1 [34.0 kB] 591s Get:28 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-iniconfig all 1.1.1-2 [6024 B] 591s Get:29 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-rapidfuzz armhf 3.6.2+ds-3 [1200 kB] 591s Get:30 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-levenshtein armhf 0.25.1-3 [139 kB] 591s Get:31 http://ftpmaster.internal/ubuntu oracular/main armhf python3-lxml armhf 5.2.1-1 [1200 kB] 591s Get:32 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-mistletoe all 1.3.0-1 [38.0 kB] 591s Get:33 http://ftpmaster.internal/ubuntu oracular/main armhf python3-packaging all 24.0-1 [41.1 kB] 591s Get:34 http://ftpmaster.internal/ubuntu oracular/main armhf python3-ply all 3.11-6 [46.5 kB] 591s Get:35 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-phply all 1.2.6-1 [50.5 kB] 591s Get:36 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pluggy all 1.5.0-1 [21.0 kB] 591s Get:37 http://ftpmaster.internal/ubuntu oracular-proposed/universe armhf python3-pytest all 8.2.2-1ubuntu1 [250 kB] 591s Get:38 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-ruamel.yaml.clib armhf 0.2.8-1build1 [120 kB] 591s Get:39 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 591s Get:40 http://ftpmaster.internal/ubuntu oracular/main armhf python3-simplejson armhf 3.19.2-1build2 [52.0 kB] 592s Get:41 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-syrupy all 4.6.1-1 [42.8 kB] 592s Get:42 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-translate all 3.12.2-1ubuntu1 [318 kB] 592s Get:43 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-vobject all 0.9.6.1-2 [40.6 kB] 592s Get:44 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-xapian armhf 1.4.22-1build5 [370 kB] 592s Get:45 http://ftpmaster.internal/ubuntu oracular/universe armhf subversion armhf 1.14.3-1build4 [890 kB] 592s Get:46 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-iniparse all 0.5-2 [20.0 kB] 592s Get:47 http://ftpmaster.internal/ubuntu oracular/universe armhf python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 592s Preconfiguring packages ... 593s Fetched 10.2 MB in 2s (4353 kB/s) 593s Selecting previously unselected package emacsen-common. 593s (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 ... 58338 files and directories currently installed.) 593s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 593s Unpacking emacsen-common (3.0.5) ... 593s Selecting previously unselected package dictionaries-common. 593s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 593s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 593s Unpacking dictionaries-common (1.29.7) ... 593s Selecting previously unselected package libgomp1:armhf. 593s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_armhf.deb ... 593s Unpacking libgomp1:armhf (14.1.0-1ubuntu1) ... 593s Selecting previously unselected package gettext. 593s Preparing to unpack .../03-gettext_0.21-14ubuntu2_armhf.deb ... 593s Unpacking gettext (0.21-14ubuntu2) ... 593s Selecting previously unselected package hunspell-en-us. 593s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 593s Unpacking hunspell-en-us (1:2020.12.07-2) ... 593s Selecting previously unselected package libapr1t64:armhf. 593s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_armhf.deb ... 593s Unpacking libapr1t64:armhf (1.7.2-3.2) ... 593s Selecting previously unselected package libaprutil1t64:armhf. 593s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_armhf.deb ... 593s Unpacking libaprutil1t64:armhf (1.6.3-1.1ubuntu7) ... 593s Selecting previously unselected package libaspell15:armhf. 594s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_armhf.deb ... 594s Unpacking libaspell15:armhf (0.60.8.1-1build1) ... 594s Selecting previously unselected package libhunspell-1.7-0:armhf. 594s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_armhf.deb ... 594s Unpacking libhunspell-1.7-0:armhf (1.7.2+really1.7.2-10build3) ... 594s Selecting previously unselected package libenchant-2-2:armhf. 594s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_armhf.deb ... 594s Unpacking libenchant-2-2:armhf (2.3.3-2build2) ... 594s Selecting previously unselected package libexttextcat-data. 594s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 594s Unpacking libexttextcat-data (3.4.7-1build1) ... 594s Selecting previously unselected package libserf-1-1:armhf. 594s Preparing to unpack .../11-libserf-1-1_1.3.10-2_armhf.deb ... 594s Unpacking libserf-1-1:armhf (1.3.10-2) ... 594s Selecting previously unselected package libutf8proc3:armhf. 594s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_armhf.deb ... 594s Unpacking libutf8proc3:armhf (2.9.0-1build1) ... 594s Selecting previously unselected package libsvn1:armhf. 594s Preparing to unpack .../13-libsvn1_1.14.3-1build4_armhf.deb ... 594s Unpacking libsvn1:armhf (1.14.3-1build4) ... 594s Selecting previously unselected package libxapian30:armhf. 594s Preparing to unpack .../14-libxapian30_1.4.22-1build1_armhf.deb ... 594s Unpacking libxapian30:armhf (1.4.22-1build1) ... 594s Selecting previously unselected package libxslt1.1:armhf. 594s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_armhf.deb ... 594s Unpacking libxslt1.1:armhf (1.1.39-0exp1build1) ... 594s Selecting previously unselected package python3-aeidon. 594s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 594s Unpacking python3-aeidon (1.11-2) ... 594s Selecting previously unselected package python3-all. 594s Preparing to unpack .../17-python3-all_3.12.3-0ubuntu1_armhf.deb ... 594s Unpacking python3-all (3.12.3-0ubuntu1) ... 594s Selecting previously unselected package python3-soupsieve. 594s Preparing to unpack .../18-python3-soupsieve_2.5-1_all.deb ... 594s Unpacking python3-soupsieve (2.5-1) ... 594s Selecting previously unselected package python3-bs4. 594s Preparing to unpack .../19-python3-bs4_4.12.3-1_all.deb ... 594s Unpacking python3-bs4 (4.12.3-1) ... 595s Selecting previously unselected package python3-more-itertools. 595s Preparing to unpack .../20-python3-more-itertools_10.2.0-1_all.deb ... 595s Unpacking python3-more-itertools (10.2.0-1) ... 595s Selecting previously unselected package python3-jaraco.functools. 595s Preparing to unpack .../21-python3-jaraco.functools_4.0.0-1_all.deb ... 595s Unpacking python3-jaraco.functools (4.0.0-1) ... 595s Selecting previously unselected package python3-cheroot. 595s Preparing to unpack .../22-python3-cheroot_10.0.0+ds1-2_all.deb ... 595s Unpacking python3-cheroot (10.0.0+ds1-2) ... 595s Selecting previously unselected package python3-dateutil. 595s Preparing to unpack .../23-python3-dateutil_2.9.0-2_all.deb ... 595s Unpacking python3-dateutil (2.9.0-2) ... 595s Selecting previously unselected package python3-diff-match-patch. 595s Preparing to unpack .../24-python3-diff-match-patch_20230430-1_all.deb ... 595s Unpacking python3-diff-match-patch (20230430-1) ... 595s Selecting previously unselected package python3-enchant. 595s Preparing to unpack .../25-python3-enchant_3.2.2-1_all.deb ... 595s Unpacking python3-enchant (3.2.2-1) ... 595s Selecting previously unselected package python3-iniconfig. 595s Preparing to unpack .../26-python3-iniconfig_1.1.1-2_all.deb ... 595s Unpacking python3-iniconfig (1.1.1-2) ... 595s Selecting previously unselected package python3-rapidfuzz. 595s Preparing to unpack .../27-python3-rapidfuzz_3.6.2+ds-3_armhf.deb ... 595s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 595s Selecting previously unselected package python3-levenshtein. 595s Preparing to unpack .../28-python3-levenshtein_0.25.1-3_armhf.deb ... 595s Unpacking python3-levenshtein (0.25.1-3) ... 595s Selecting previously unselected package python3-lxml:armhf. 595s Preparing to unpack .../29-python3-lxml_5.2.1-1_armhf.deb ... 595s Unpacking python3-lxml:armhf (5.2.1-1) ... 595s Selecting previously unselected package python3-mistletoe. 595s Preparing to unpack .../30-python3-mistletoe_1.3.0-1_all.deb ... 595s Unpacking python3-mistletoe (1.3.0-1) ... 595s Selecting previously unselected package python3-packaging. 595s Preparing to unpack .../31-python3-packaging_24.0-1_all.deb ... 595s Unpacking python3-packaging (24.0-1) ... 595s Selecting previously unselected package python3-ply. 595s Preparing to unpack .../32-python3-ply_3.11-6_all.deb ... 595s Unpacking python3-ply (3.11-6) ... 595s Selecting previously unselected package python3-phply. 595s Preparing to unpack .../33-python3-phply_1.2.6-1_all.deb ... 595s Unpacking python3-phply (1.2.6-1) ... 595s Selecting previously unselected package python3-pluggy. 595s Preparing to unpack .../34-python3-pluggy_1.5.0-1_all.deb ... 595s Unpacking python3-pluggy (1.5.0-1) ... 595s Selecting previously unselected package python3-pytest. 595s Preparing to unpack .../35-python3-pytest_8.2.2-1ubuntu1_all.deb ... 595s Unpacking python3-pytest (8.2.2-1ubuntu1) ... 595s Selecting previously unselected package python3-ruamel.yaml.clib:armhf. 595s Preparing to unpack .../36-python3-ruamel.yaml.clib_0.2.8-1build1_armhf.deb ... 595s Unpacking python3-ruamel.yaml.clib:armhf (0.2.8-1build1) ... 595s Selecting previously unselected package python3-ruamel.yaml. 595s Preparing to unpack .../37-python3-ruamel.yaml_0.17.21-1_all.deb ... 595s Unpacking python3-ruamel.yaml (0.17.21-1) ... 595s Selecting previously unselected package python3-simplejson. 596s Preparing to unpack .../38-python3-simplejson_3.19.2-1build2_armhf.deb ... 596s Unpacking python3-simplejson (3.19.2-1build2) ... 596s Selecting previously unselected package python3-syrupy. 596s Preparing to unpack .../39-python3-syrupy_4.6.1-1_all.deb ... 596s Unpacking python3-syrupy (4.6.1-1) ... 596s Selecting previously unselected package python3-translate. 596s Preparing to unpack .../40-python3-translate_3.12.2-1ubuntu1_all.deb ... 596s Unpacking python3-translate (3.12.2-1ubuntu1) ... 596s Selecting previously unselected package python3-vobject. 596s Preparing to unpack .../41-python3-vobject_0.9.6.1-2_all.deb ... 596s Unpacking python3-vobject (0.9.6.1-2) ... 596s Selecting previously unselected package python3-xapian. 596s Preparing to unpack .../42-python3-xapian_1.4.22-1build5_armhf.deb ... 596s Unpacking python3-xapian (1.4.22-1build5) ... 596s Selecting previously unselected package subversion. 596s Preparing to unpack .../43-subversion_1.14.3-1build4_armhf.deb ... 596s Unpacking subversion (1.14.3-1build4) ... 596s Selecting previously unselected package python3-iniparse. 596s Preparing to unpack .../44-python3-iniparse_0.5-2_all.deb ... 596s Unpacking python3-iniparse (0.5-2) ... 596s Selecting previously unselected package python3-pycountry. 596s Preparing to unpack .../45-python3-pycountry_23.12.11+ds1-2_all.deb ... 596s Unpacking python3-pycountry (23.12.11+ds1-2) ... 597s Selecting previously unselected package autopkgtest-satdep. 597s Preparing to unpack .../46-2-autopkgtest-satdep.deb ... 597s Unpacking autopkgtest-satdep (0) ... 597s Setting up python3-more-itertools (10.2.0-1) ... 597s Setting up python3-iniconfig (1.1.1-2) ... 597s Setting up libxapian30:armhf (1.4.22-1build1) ... 597s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 597s Setting up python3-diff-match-patch (20230430-1) ... 597s Setting up python3-jaraco.functools (4.0.0-1) ... 597s Setting up python3-aeidon (1.11-2) ... 597s Setting up libutf8proc3:armhf (2.9.0-1build1) ... 597s Setting up libaspell15:armhf (0.60.8.1-1build1) ... 597s Setting up python3-ply (3.11-6) ... 598s Setting up python3-ruamel.yaml.clib:armhf (0.2.8-1build1) ... 598s Setting up python3-all (3.12.3-0ubuntu1) ... 598s Setting up libgomp1:armhf (14.1.0-1ubuntu1) ... 598s Setting up python3-simplejson (3.19.2-1build2) ... 598s Setting up python3-packaging (24.0-1) ... 598s Setting up emacsen-common (3.0.5) ... 598s Setting up python3-cheroot (10.0.0+ds1-2) ... 599s Setting up python3-pycountry (23.12.11+ds1-2) ... 599s Setting up python3-xapian (1.4.22-1build5) ... 599s Setting up python3-pluggy (1.5.0-1) ... 599s Setting up python3-ruamel.yaml (0.17.21-1) ... 600s Setting up python3-mistletoe (1.3.0-1) ... 600s Setting up libexttextcat-data (3.4.7-1build1) ... 600s Setting up libapr1t64:armhf (1.7.2-3.2) ... 600s Setting up libxslt1.1:armhf (1.1.39-0exp1build1) ... 600s Setting up python3-dateutil (2.9.0-2) ... 600s Setting up python3-levenshtein (0.25.1-3) ... 601s Setting up libhunspell-1.7-0:armhf (1.7.2+really1.7.2-10build3) ... 601s Setting up python3-soupsieve (2.5-1) ... 601s Setting up python3-iniparse (0.5-2) ... 601s Setting up libaprutil1t64:armhf (1.6.3-1.1ubuntu7) ... 601s Setting up python3-vobject (0.9.6.1-2) ... 601s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 601s patterns['name'] = '[a-zA-Z0-9\-_]+' 601s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 601s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 601s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 601s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 601s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 601s """ 601s Setting up gettext (0.21-14ubuntu2) ... 601s Setting up python3-phply (1.2.6-1) ... 601s Setting up dictionaries-common (1.29.7) ... 602s Setting up python3-pytest (8.2.2-1ubuntu1) ... 602s Setting up python3-syrupy (4.6.1-1) ... 602s Setting up libserf-1-1:armhf (1.3.10-2) ... 602s Setting up python3-bs4 (4.12.3-1) ... 603s Setting up python3-lxml:armhf (5.2.1-1) ... 603s Setting up hunspell-en-us (1:2020.12.07-2) ... 603s Setting up libsvn1:armhf (1.14.3-1build4) ... 603s Setting up libenchant-2-2:armhf (2.3.3-2build2) ... 603s Setting up subversion (1.14.3-1build4) ... 603s Setting up python3-enchant (3.2.2-1) ... 603s Setting up python3-translate (3.12.2-1ubuntu1) ... 604s Setting up autopkgtest-satdep (0) ... 604s Processing triggers for man-db (2.12.1-1) ... 605s Processing triggers for install-info (7.1-3build2) ... 605s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 605s Processing triggers for dictionaries-common (1.29.7) ... 620s (Reading database ... 61792 files and directories currently installed.) 620s Removing autopkgtest-satdep (0) ... 632s autopkgtest [04:13:37]: test python3-translate: [----------------------- 635s ============================= test session starts ============================== 635s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 635s cachedir: .pytest_cache 635s rootdir: /tmp/autopkgtest.fz6MXe/autopkgtest_tmp 635s plugins: syrupy-4.6.1 641s collecting ... collected 3313 items / 2 skipped 641s 641s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 641s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 641s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 641s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 641s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 641s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 641s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 641s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 641s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 641s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 641s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 641s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 641s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 641s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 641s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 642s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 642s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 642s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 642s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 642s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 642s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 642s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 642s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 642s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 642s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 642s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 642s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 642s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 642s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 642s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 642s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 642s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 642s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 642s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 642s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 642s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 642s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 642s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 642s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 642s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 642s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 642s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 642s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 642s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 642s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 643s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 643s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 643s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 643s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 643s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 643s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 643s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 643s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 643s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 643s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 643s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 643s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 643s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 643s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 643s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 643s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 643s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 643s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 643s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 643s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 643s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 643s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 643s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 643s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 643s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 643s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 643s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 643s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 643s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 644s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 644s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 644s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 644s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 644s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 644s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 644s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 644s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 644s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 644s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 644s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 644s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 644s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 644s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 644s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 644s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 644s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 644s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 644s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 644s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 644s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 644s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 645s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 645s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 645s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 645s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 645s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 645s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 645s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 645s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 645s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 645s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 645s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 645s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 645s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 645s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 645s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 645s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 645s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 645s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 645s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 645s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 645s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 645s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 645s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 645s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 645s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 645s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 645s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 645s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 646s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 646s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 646s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 646s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 646s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 646s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 646s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 646s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 646s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 646s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 646s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 646s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 646s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 646s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 646s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 646s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 646s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 646s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 647s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 647s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 647s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 647s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 647s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 647s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 647s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 647s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 647s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 647s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 647s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 647s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 647s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 647s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 647s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 647s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 647s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 647s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 647s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 647s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 647s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 647s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 647s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 647s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 647s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 647s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 647s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 647s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 647s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 647s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 647s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 647s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 647s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 647s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 647s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 647s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 647s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 647s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 647s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 647s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 647s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 647s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 647s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 647s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 647s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 647s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 647s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 647s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 647s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 647s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 647s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 647s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 647s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 647s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 647s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 647s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 647s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 647s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 647s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 647s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 647s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 647s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 647s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 647s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 647s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 647s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 647s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 647s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 647s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 647s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 647s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 647s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 647s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 647s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 647s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 647s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 647s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 647s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 647s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 647s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 647s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 647s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 647s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 647s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 647s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 647s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 647s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 647s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 647s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 647s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 647s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 647s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 647s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 647s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 648s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 648s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 648s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 648s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 648s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 648s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 648s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 648s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 648s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 648s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 648s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 648s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 649s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 649s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 649s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 649s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 649s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 649s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 649s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 649s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 649s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 649s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 649s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 649s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 649s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 649s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 649s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 649s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 649s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 649s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 649s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 649s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 649s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 649s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 649s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 649s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 649s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 649s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 649s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 650s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 650s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 650s tests/translate/storage/test_mo.py::TestMOFile::test_output SKIPPED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 650s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 650s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 650s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 650s 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%] 650s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 650s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 650s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 650s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 650s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 650s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 650s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 650s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 650s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 650s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 650s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 650s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 650s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 650s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 650s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 650s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 650s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 651s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 651s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 651s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 651s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 651s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 651s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 651s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 651s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 651s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 651s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 651s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 651s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 651s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 651s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 651s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 652s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 652s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 652s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 652s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 652s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 652s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 652s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 652s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 652s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 652s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 652s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 652s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 652s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 652s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 652s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 652s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 652s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 652s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 652s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 652s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 652s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 652s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 652s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 652s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 652s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 652s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 653s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 653s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 653s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 653s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 653s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 653s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 653s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 653s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 653s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 654s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 654s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 654s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 654s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 654s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 654s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 654s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 654s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 654s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 654s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 654s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 654s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 654s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 654s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 654s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 654s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 654s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 654s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 654s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 654s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 656s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 656s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 656s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 656s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 657s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 657s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 657s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 657s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 657s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 657s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 657s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 657s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 657s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 657s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 657s tests/translate/tools/test_help.py::test_help[build_tmdb] SKIPPED (S...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[phppo2pypo] SKIPPED (S...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[poclean] SKIPPED (Skip...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[pocompile] SKIPPED (Sk...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[poconflicts] SKIPPED (...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[pocount] SKIPPED (Skip...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[podebug] SKIPPED (Skip...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[pogrep] SKIPPED (Skip ...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[pomerge] SKIPPED (Skip...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[porestructure] SKIPPED [ 94%] 657s tests/translate/tools/test_help.py::test_help[posegment] SKIPPED (Sk...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[poswap] SKIPPED (Skip ...) [ 94%] 657s tests/translate/tools/test_help.py::test_help[poterminology] SKIPPED [ 95%] 657s tests/translate/tools/test_help.py::test_help[pretranslate] SKIPPED [ 95%] 657s tests/translate/tools/test_help.py::test_help[pydiff] SKIPPED (Skip ...) [ 95%] 657s tests/translate/tools/test_help.py::test_help[pypo2phppo] SKIPPED (S...) [ 95%] 659s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 659s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 659s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 659s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 659s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 659s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 659s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 659s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 659s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 660s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 660s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 660s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 660s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 660s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 660s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 660s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 660s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 660s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 660s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 660s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 660s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 660s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 660s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 660s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 661s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 661s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 661s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 661s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 661s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 661s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 661s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff SKIPPED [ 99%] 661s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff SKIPPED [100%] 661s 661s ================================== XFAILURES =================================== 661s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_accelerator_keys_not_in_sentence(self): 661s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 661s dtdtemplate = """ 661s """ 661s dtdlanguage = """ 661s """ 661s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 661s print(pofile) 661s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 661s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 661s 661s tests/translate/convert/test_dtd2po.py:348: AttributeError 661s ----------------------------- Captured stdout call ----------------------------- 661s 661s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_accelerator_keys_not_in_sentence(self): 661s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 661s dtdtemplate = """ 661s """ 661s dtdlanguage = """ 661s """ 661s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 661s print(pofile) 661s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 661s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 661s 661s tests/translate/convert/test_dtd2po.py:348: AttributeError 661s ----------------------------- Captured stdout call ----------------------------- 661s 661s ________________ TestPO2Php.test_merging_propertyless_template _________________ 661s 661s self = 661s 661s @mark.xfail(reason="Need to review if we want this behaviour") 661s def test_merging_propertyless_template(self): 661s """Check that when merging with a template with no property values that we copy the template.""" 661s posource = "" 661s proptemplate = "# A comment\n" 661s propexpected = proptemplate 661s > propfile = self.merge2prop(proptemplate, posource) 661s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 661s 661s tests/translate/convert/test_po2php.py:386: AttributeError 661s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 661s 661s self = 661s 661s @mark.xfail(reason="Need to review if we want this behaviour") 661s def test_merging_propertyless_template(self): 661s """Check that when merging with a template with no property values that we copy the template.""" 661s posource = "" 661s proptemplate = "# A comment\n" 661s propexpected = proptemplate 661s > propfile = self.merge2prop(proptemplate, posource) 661s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 661s 661s tests/translate/convert/test_po2php.py:386: AttributeError 661s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 661s 661s self = 661s 661s @mark.xfail(reason="Not implemented - review if this is even correct") 661s def test_merging_msgid_change(self): 661s """Tests that if the msgid changes but the location stays the same that we merge.""" 661s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 661s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 661s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 661s newpo = self.convertpot(potsource, posource) 661s print(newpo) 661s > assert str(self.singleunit(newpo)) == poexpected 661s 661s tests/translate/convert/test_pot2po.py:121: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s pofile = 661s 661s @staticmethod 661s def singleunit(pofile): 661s """Checks that the pofile contains a single non-header unit, and returns it.""" 661s > assert len(pofile.units) == 2 661s E assert 3 == 2 661s E + where 3 = len([, , ]) 661s E + where [, , ] = .units 661s 661s tests/translate/convert/test_pot2po.py:25: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s 661s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented - needs review") 661s def test_merging_accelerator_changes(self): 661s """Test that a change in the accelerator localtion still allows merging.""" 661s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 661s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 661s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 661s newpo = self.convertpot(potsource, posource) 661s print(newpo) 661s > assert str(self.singleunit(newpo)) == poexpected 661s 661s tests/translate/convert/test_pot2po.py:190: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s pofile = 661s 661s @staticmethod 661s def singleunit(pofile): 661s """Checks that the pofile contains a single non-header unit, and returns it.""" 661s > assert len(pofile.units) == 2 661s E assert 3 == 2 661s E + where 3 = len([, , ]) 661s E + where [, , ] = .units 661s 661s tests/translate/convert/test_pot2po.py:25: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s 661s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented - review if this is even correct") 661s def test_lines_cut_differently(self): 661s """Checks that the correct formatting is preserved when pot an po lines differ.""" 661s potsource = ( 661s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 661s ) 661s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 661s newpo = self.convertpot(potsource, posource) 661s newpounit = self.singleunit(newpo) 661s > assert str(newpounit) == posource 661s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 661s E 661s E #: simple.label 661s E - msgid "Line" 661s E + msgid "Line split " 661s E ? +++++++ 661s E - " split differently" 661s E ? ------- 661s E + "differently" 661s E msgstr "Lyne verskillend gesny" 661s 661s tests/translate/convert/test_pot2po.py:201: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s #: simple.label 661s msgid "Line split " 661s "differently" 661s msgstr "Lyne verskillend gesny" 661s 661s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 661s 661s self = 661s 661s @mark.xfail(reason="Not implemented - review if this is even correct") 661s def test_merging_msgid_change(self): 661s """Tests that if the msgid changes but the location stays the same that we merge.""" 661s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 661s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 661s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 661s newpo = self.convertpot(potsource, posource) 661s print(newpo) 661s > assert str(self.singleunit(newpo)) == poexpected 661s 661s tests/translate/convert/test_pot2po.py:121: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s pofile = 661s 661s @staticmethod 661s def singleunit(pofile): 661s """Checks that the pofile contains a single non-header unit, and returns it.""" 661s > assert len(pofile.units) == 2 661s E assert 3 == 2 661s E + where 3 = len([, , ]) 661s E + where [, , ] = .units 661s 661s tests/translate/convert/test_pot2po.py:25: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s 661s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented - needs review") 661s def test_merging_accelerator_changes(self): 661s """Test that a change in the accelerator localtion still allows merging.""" 661s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 661s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 661s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 661s newpo = self.convertpot(potsource, posource) 661s print(newpo) 661s > assert str(self.singleunit(newpo)) == poexpected 661s 661s tests/translate/convert/test_pot2po.py:190: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s pofile = 661s 661s @staticmethod 661s def singleunit(pofile): 661s """Checks that the pofile contains a single non-header unit, and returns it.""" 661s > assert len(pofile.units) == 2 661s E assert 3 == 2 661s E + where 3 = len([, , ]) 661s E + where [, , ] = .units 661s 661s tests/translate/convert/test_pot2po.py:25: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s 661s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented - review if this is even correct") 661s def test_lines_cut_differently(self): 661s """Checks that the correct formatting is preserved when pot an po lines differ.""" 661s potsource = ( 661s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 661s ) 661s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 661s newpo = self.convertpot(potsource, posource) 661s newpounit = self.singleunit(newpo) 661s > assert str(newpounit) == posource 661s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 661s E 661s E #: simple.label 661s E - msgid "Line" 661s E + msgid "Line split " 661s E ? +++++++ 661s E - " split differently" 661s E ? ------- 661s E + "differently" 661s E msgstr "Lyne verskillend gesny" 661s 661s tests/translate/convert/test_pot2po.py:201: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s #: simple.label 661s msgid "Line split " 661s "differently" 661s msgstr "Lyne verskillend gesny" 661s 661s ________________________ TestYAML2PO.test_no_duplicates ________________________ 661s 661s self = 661s input = '\nfoo: bar\nfoo: baz\n' 661s 661s def parse(self, input): 661s """Parse the given file or file source string.""" 661s if hasattr(input, "name"): 661s self.filename = input.name 661s elif not getattr(self, "filename", ""): 661s self.filename = "" 661s if hasattr(input, "read"): 661s src = input.read() 661s input.close() 661s input = src 661s if isinstance(input, bytes): 661s input = input.decode("utf-8") 661s try: 661s > self._original = self.yaml.load(input) 661s 661s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 661s return constructor.get_single_data() 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 661s return self.construct_document(node) 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 661s for _dummy in generator: 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 661s self.construct_mapping(node, data, deep=True) 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 661s if self.check_mapping_key(node, key_node, maptyp, key, value): 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s self = 661s 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'))]) 661s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 661s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 661s 661s def check_mapping_key(self, node, key_node, mapping, key, value): 661s # type: (Any, Any, Any, Any, Any) -> bool 661s """return True if key is unique""" 661s if key in mapping: 661s if not self.allow_duplicate_keys: 661s mk = mapping.get(key) 661s args = [ 661s 'while constructing a mapping', 661s node.start_mark, 661s 'found duplicate key "{}" with value "{}" ' 661s '(original value: "{}")'.format(key, value, mk), 661s key_node.start_mark, 661s """ 661s To suppress this check see: 661s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 661s """, 661s """\ 661s Duplicate keys will become an error in future releases, and are errors 661s by default when using the new API. 661s """, 661s ] 661s if self.allow_duplicate_keys is None: 661s warnings.warn(DuplicateKeyFutureWarning(*args)) 661s else: 661s > raise DuplicateKeyError(*args) 661s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 661s E in "", line 2, column 1: 661s E foo: bar 661s E ^ (line: 2) 661s E found duplicate key "foo" with value "baz" (original value: "bar") 661s E in "", line 3, column 1: 661s E foo: baz 661s E ^ (line: 3) 661s E 661s E To suppress this check see: 661s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 661s 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 661s 661s During handling of the above exception, another exception occurred: 661s 661s self = 661s 661s @pytest.mark.xfail(reason="This is invalid YAML document") 661s def test_no_duplicates(self): 661s """Check converting drops duplicates.""" 661s input_string = """ 661s foo: bar 661s foo: baz 661s """ 661s > target_store = self._convert_to_store(input_string) 661s 661s tests/translate/convert/test_yaml2po.py:112: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 661s return self._convert(*args, **kwargs)[0] 661s tests/translate/convert/test_yaml2po.py:28: in _convert 661s converter = self.ConverterClass( 661s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 661s self.source_store = self.SourceStoreClass(input_file) 661s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 661s self.parse(inputfile) 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s self = 661s input = '\nfoo: bar\nfoo: baz\n' 661s 661s def parse(self, input): 661s """Parse the given file or file source string.""" 661s if hasattr(input, "name"): 661s self.filename = input.name 661s elif not getattr(self, "filename", ""): 661s self.filename = "" 661s if hasattr(input, "read"): 661s src = input.read() 661s input.close() 661s input = src 661s if isinstance(input, bytes): 661s input = input.decode("utf-8") 661s try: 661s self._original = self.yaml.load(input) 661s except YAMLError as e: 661s message = getattr(e, "problem", getattr(e, "message", str(e))) 661s if hasattr(e, "problem_mark"): 661s message += f" {e.problem_mark}" 661s > raise base.ParseError(message) 661s 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)' 661s 661s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 661s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 661s 661s self = 661s input = '\nfoo: bar\nfoo: baz\n' 661s 661s def parse(self, input): 661s """Parse the given file or file source string.""" 661s if hasattr(input, "name"): 661s self.filename = input.name 661s elif not getattr(self, "filename", ""): 661s self.filename = "" 661s if hasattr(input, "read"): 661s src = input.read() 661s input.close() 661s input = src 661s if isinstance(input, bytes): 661s input = input.decode("utf-8") 661s try: 661s > self._original = self.yaml.load(input) 661s 661s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 661s return constructor.get_single_data() 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 661s return self.construct_document(node) 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 661s for _dummy in generator: 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 661s self.construct_mapping(node, data, deep=True) 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 661s if self.check_mapping_key(node, key_node, maptyp, key, value): 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s self = 661s 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'))]) 661s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 661s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 661s 661s def check_mapping_key(self, node, key_node, mapping, key, value): 661s # type: (Any, Any, Any, Any, Any) -> bool 661s """return True if key is unique""" 661s if key in mapping: 661s if not self.allow_duplicate_keys: 661s mk = mapping.get(key) 661s args = [ 661s 'while constructing a mapping', 661s node.start_mark, 661s 'found duplicate key "{}" with value "{}" ' 661s '(original value: "{}")'.format(key, value, mk), 661s key_node.start_mark, 661s """ 661s To suppress this check see: 661s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 661s """, 661s """\ 661s Duplicate keys will become an error in future releases, and are errors 661s by default when using the new API. 661s """, 661s ] 661s if self.allow_duplicate_keys is None: 661s warnings.warn(DuplicateKeyFutureWarning(*args)) 661s else: 661s > raise DuplicateKeyError(*args) 661s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 661s E in "", line 2, column 1: 661s E foo: bar 661s E ^ (line: 2) 661s E found duplicate key "foo" with value "baz" (original value: "bar") 661s E in "", line 3, column 1: 661s E foo: baz 661s E ^ (line: 3) 661s E 661s E To suppress this check see: 661s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 661s 661s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 661s 661s During handling of the above exception, another exception occurred: 661s 661s self = 661s 661s @pytest.mark.xfail(reason="This is invalid YAML document") 661s def test_no_duplicates(self): 661s """Check converting drops duplicates.""" 661s input_string = """ 661s foo: bar 661s foo: baz 661s """ 661s > target_store = self._convert_to_store(input_string) 661s 661s tests/translate/convert/test_yaml2po.py:112: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 661s return self._convert(*args, **kwargs)[0] 661s tests/translate/convert/test_yaml2po.py:28: in _convert 661s converter = self.ConverterClass( 661s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 661s self.source_store = self.SourceStoreClass(input_file) 661s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 661s self.parse(inputfile) 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s self = 661s input = '\nfoo: bar\nfoo: baz\n' 661s 661s def parse(self, input): 661s """Parse the given file or file source string.""" 661s if hasattr(input, "name"): 661s self.filename = input.name 661s elif not getattr(self, "filename", ""): 661s self.filename = "" 661s if hasattr(input, "read"): 661s src = input.read() 661s input.close() 661s input = src 661s if isinstance(input, bytes): 661s input = input.decode("utf-8") 661s try: 661s self._original = self.yaml.load(input) 661s except YAMLError as e: 661s message = getattr(e, "problem", getattr(e, "message", str(e))) 661s if hasattr(e, "problem_mark"): 661s message += f" {e.problem_mark}" 661s > raise base.ParseError(message) 661s 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)' 661s 661s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 661s __________________________ test_acceleratedvariables ___________________________ 661s 661s @mark.xfail(reason="Accelerated variables needs a better implementation") 661s def test_acceleratedvariables(): 661s """Test for accelerated variables.""" 661s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 661s mozillachecker = checks.MozillaChecker() 661s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 661s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 661s 661s tests/translate/filters/test_checks.py:206: AttributeError 661s ___________________________ test_musttranslatewords ____________________________ 661s 661s @mark.xfail(reason="FIXME: All fails() tests are not working") 661s def test_musttranslatewords(): 661s """Tests stopwords.""" 661s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 661s assert passes( 661s stdchecker.musttranslatewords, 661s "This uses Mozilla of course", 661s "hierdie gebruik le mozille natuurlik", 661s ) 661s stdchecker = checks.StandardChecker( 661s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 661s ) 661s assert passes( 661s stdchecker.musttranslatewords, 661s "This uses Mozilla of course", 661s "hierdie gebruik le mozille natuurlik", 661s ) 661s > assert fails( 661s stdchecker.musttranslatewords, 661s "This uses Mozilla of course", 661s "hierdie gebruik Mozilla natuurlik", 661s ) 661s E AssertionError: assert False 661s E + where False = fails(>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 661s E + where > = .musttranslatewords 661s 661s tests/translate/filters/test_checks.py:612: AssertionError 661s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 661s 661s @mark.xfail(reason="Bug #3408") 661s def test_persian_single_and_double_quote_fail_at_the_same_time(): 661s """Test Persian single and double quote failures in string with single quotes.""" 661s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 661s 661s # With single quote check. 661s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 661s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 661s E assert False 661s E + where False = fails(>, "Path: '%S'", 'مسیر: "%S"\u200e') 661s E + where > = .singlequoting 661s 661s tests/translate/filters/test_checks.py:1271: AssertionError 661s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 661s 661s @mark.xfail(reason="Bug #3506") 661s def test_bengali_mozilla_inverted_xmltags(): 661s """Test Bengali Mozilla XML tags.""" 661s bn_mozilla_checker = checks.MozillaChecker( 661s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 661s ) 661s str_en = """We co-founded the WHAT-WG to.""" 661s str_bn = """এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।""" 661s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 661s E assert False 661s E + where False = passes(>, 'We co-founded the WHAT-WG to.', 'এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।') 661s E + where > = .xmltags 661s 661s tests/translate/filters/test_checks.py:2065: AssertionError 661s _______________________________ test_word_khmer ________________________________ 661s 661s @mark.xfail( 661s reason="ZWS is not considered a space in Python 2.6+. Khmer " 661s "should extend words() to include \\u200b in addition to " 661s "other word breakers." 661s ) 661s def test_word_khmer(): 661s language = common.Common 661s # Let's test Khmer with zero width space (\u200b) 661s words = language.words("ផ្ដល់\u200bយោបល់") 661s print("ផ្ដល់\u200bយោបល់") 661s print(language.words("ផ្ដល់<200b>យោបល់")) 661s print(["ផ្ដល់", "យោបល់"]) 661s > assert words == ["ផ្ដល់", "យោបល់"] 661s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 661s E 661s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 661s E Right contains one more item: 'យោបល់' 661s E 661s E Full diff: 661s E [ 661s E + 'ផ្ដល់\u200bយោបល់',... 661s E 661s E ...Full output truncated (3 lines hidden), use '-vv' to show 661s 661s tests/translate/lang/test_common.py:47: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s ផ្ដល់​យោបល់ 661s ['ផ្ដល់<200b>យោបល់'] 661s ['ផ្ដល់', 'យោបល់'] 661s __________________ TestConverters.test_to_general_placeables ___________________ 661s 661s self = 661s 661s @mark.xfail(reason="Test needs fixing, disabled for now") 661s def test_to_general_placeables(self): 661s basetree = base.to_base_placeables(self.elem) 661s gentree = general.to_general_placeables(basetree) 661s > assert gentree == self.elem 661s E assert '])>])> == '])>])> 661s E 661s E Full diff: 661s E - , '])>, , '])>])> 661s E ? ^^^ 661s E + , '])>, , '])>])> 661s E ? ^^^^^^ 661s 661s tests/translate/storage/placeables/test_base.py:210: AssertionError 661s ___________________ TestConverters.test_to_xliff_placeables ____________________ 661s 661s self = 661s 661s @mark.xfail(reason="Test needs fixing, disabled for now") 661s def test_to_xliff_placeables(self): 661s basetree = base.to_base_placeables(self.elem) 661s xliff_from_base = xliff.to_xliff_placeables(basetree) 661s > assert str(xliff_from_base) != str(self.elem) 661s E assert 'Ģët &brandLong;' != 'Ģët &brandLong;' 661s E + where 'Ģët &brandLong;' = str(, '])>, , '])>])>) 661s E + and 'Ģët &brandLong;' = str(, '])>, , '])>])>) 661s E + where , '])>, , '])>])> = .elem 661s 661s tests/translate/storage/placeables/test_base.py:216: AssertionError 661s _____________________ test_quotefordtd_unimplemented_cases _____________________ 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_quotefordtd_unimplemented_cases(): 661s """Test unimplemented quoting DTD cases.""" 661s > assert dtd.quotefordtd("Between

and

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

and

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

and

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

and

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

and

' 661s E 661s E -

and

661s E + <p> and </p> 661s 661s tests/translate/storage/test_dtd.py:103: AssertionError 661s ________________________ TestDTD.test_comment_following ________________________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_comment_following(self): 661s """Check that comments that appear after and entity are not pushed onto another line.""" 661s dtdsource = ' ' 661s dtdregen = self.dtdregen(dtdsource) 661s > assert dtdsource == dtdregen 661s E assert '' == ' 661s E - 661s E - 661s 661s tests/translate/storage/test_dtd.py:344: AssertionError 661s _________________________ TestDTD.test_invalid_quoting _________________________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_invalid_quoting(self): 661s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 661s # TODO: we should rather raise an error 661s dtdsource = '\n' 661s assert ( 661s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 661s ) 661s dtdfile = self.dtdparse(dtdsource) 661s assert len(dtdfile.units) == 1 661s dtdunit = dtdfile.units[0] 661s assert dtdunit.definition == '"bananas for sale"' 661s > assert bytes(dtdfile) == b'\n' 661s E assert b'' == b'\n' 661s E 661s E Full diff: 661s E - (b'\n') 661s E + b'' 661s 661s tests/translate/storage/test_dtd.py:364: AssertionError 661s __________________________ TestOtFile.test_extensions __________________________ 661s 661s self = 661s 661s @mark.xfail( 661s reason="This doesn't work, due to two store classes handling different " 661s "extensions, but factory listing it as one supported file type" 661s ) 661s def test_extensions(self): 661s > super().test_extensions() 661s 661s tests/translate/storage/test_omegat.py:20: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s self = 661s 661s def test_extensions(self): 661s """Test that the factory knows the extensions for this class.""" 661s supported = factory.supported_files() 661s supported_dict = { 661s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 661s } 661s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 661s return 661s detail = supported_dict[ 661s self.StoreClass.Name 661s ] # will start to get problematic once translated 661s print("Factory:", detail[0]) 661s print("StoreClass:", self.StoreClass.Extensions) 661s for ext in detail[0]: 661s > assert ext in self.StoreClass.Extensions 661s E AssertionError: assert 'tab' in ['utf8'] 661s E + where ['utf8'] = .Extensions 661s E + where = .StoreClass 661s 661s tests/translate/storage/test_base.py:386: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s Factory: ['utf8', 'tab'] 661s StoreClass: ['utf8'] 661s _________________________ TestPOFile.test_kde_plurals __________________________ 661s 661s self = 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_kde_plurals(self): 661s """Tests kde-style plurals. (Bug: 191).""" 661s posource = r"""msgid "_n Singular\n" 661s "Plural" 661s msgstr "Een\n" 661s "Twee\n" 661s "Drie" 661s """ 661s pofile = self.poparse(posource) 661s assert len(pofile.units) == 1 661s unit = pofile.units[0] 661s > assert unit.hasplural() 661s E assert False 661s E + where False = >() 661s E + where > = .hasplural 661s 661s tests/translate/storage/test_po.py:374: AssertionError 661s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 661s 661s self = 661s 661s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 661s def test_makeobsolete_untranslated(self): 661s """Tests making an untranslated unit obsolete.""" 661s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 661s pofile = self.poparse(posource) 661s unit = pofile.units[0] 661s print(bytes(pofile)) 661s assert not unit.isobsolete() 661s unit.makeobsolete() 661s > assert str(unit) == "" 661s E assert '#~ msgid "te...~ msgstr ""\n' == '' 661s E 661s E + #~ msgid "test" 661s E + #~ msgstr "" 661s 661s tests/translate/storage/test_po.py:449: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 661s ________________________ TestXWikiFullPage.test_remove _________________________ 661s 661s self = 661s 661s @mark.xfail(reason="removal not working in full page") 661s def test_remove(self): 661s > super().test_remove() 661s 661s tests/translate/storage/test_properties.py:1614: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s self = 661s 661s def test_remove(self): 661s """Tests removing a unit with a source string.""" 661s store = self.StoreClass() 661s unit = store.addsourceunit("Test String") 661s # Some storages (MO, OmegaT) serialize only translated units 661s unit.target = "Test target" 661s assert headerless_len(store.units) == 1 661s withunit = bytes(store) 661s print(withunit) 661s store.removeunit(unit) 661s assert headerless_len(store.units) == 0 661s withoutunit = bytes(store) 661s print(withoutunit) 661s > assert withoutunit != withunit 661s 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' 661s 661s tests/translate/storage/test_base.py:278: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s 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' 661s 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' 661s ________________________ TestPYPOFile.test_kde_plurals _________________________ 661s 661s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xef4ec8e8> 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_kde_plurals(self): 661s """Tests kde-style plurals. (Bug: 191).""" 661s posource = r"""msgid "_n Singular\n" 661s "Plural" 661s msgstr "Een\n" 661s "Twee\n" 661s "Drie" 661s """ 661s pofile = self.poparse(posource) 661s assert len(pofile.units) == 1 661s unit = pofile.units[0] 661s > assert unit.hasplural() 661s E assert False 661s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xed25a960>>() 661s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xed25a960>> = <translate.storage.pypo.pounit object at 0xed25a960>.hasplural 661s 661s tests/translate/storage/test_po.py:374: AssertionError 661s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 661s 661s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xef4e7630> 661s 661s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 661s def test_makeobsolete_untranslated(self): 661s """Tests making an untranslated unit obsolete.""" 661s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 661s pofile = self.poparse(posource) 661s unit = pofile.units[0] 661s print(bytes(pofile)) 661s assert not unit.isobsolete() 661s unit.makeobsolete() 661s > assert str(unit) == "" 661s E assert '#~ msgid "te...~ msgstr ""\n' == '' 661s E 661s E + #~ msgid "test" 661s E + #~ msgstr "" 661s 661s tests/translate/storage/test_po.py:449: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 661s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 661s 661s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xef4ec450> 661s 661s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 661s def test_mixed_newlines_typecomment(self): 661s """Checks that mixed newlines in typecomments are properly parsed.""" 661s # This was generated by translate-tookit prior to 661s # issue that test_dos_newlines_write is covering was fixed. 661s posource = b"""#, fuzzy 661s msgid "test me"\r 661s msgstr ""\r 661s """ 661s > pofile = self.poparse(posource) 661s 661s tests/translate/storage/test_pypo.py:620: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s tests/translate/storage/test_po.py:214: in poparse 661s return self.StoreClass(dummyfile) 661s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 661s super().__init__(inputfile, **kwargs) 661s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 661s self.parse(inputfile) 661s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 661s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s parse_state = <translate.storage.poparser.ParseState object at 0xed101f78> 661s store = <translate.storage.pypo.pofile object at 0xed101f18> 661s 661s def parse_units(parse_state, store): 661s unit = parse_header(parse_state, store) 661s while unit: 661s unit.infer_state() 661s store.addunit(unit) 661s unit = parse_unit(parse_state) 661s if not parse_state.eof: 661s > raise PoParseError(parse_state) 661s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 661s 661s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 661s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 661s 661s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0xef09feb8> 661s 661s @pytest.mark.xfail(reason="Not Implemented") 661s def test_note_sanity(self): 661s > super().test_note_sanity() 661s 661s tests/translate/storage/test_subtitles.py:13: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0xef09feb8> 661s 661s def test_note_sanity(self): 661s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 661s unit = self.unit 661s 661s unit.addnote("Test note 1", origin="translator") 661s unit.addnote("Test note 2", origin="translator") 661s unit.addnote("Test note 3", origin="translator") 661s expected_notes = "Test note 1\nTest note 2\nTest note 3" 661s actual_notes = unit.getnotes(origin="translator") 661s > assert actual_notes == expected_notes 661s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 661s E 661s E - Test note 1 661s E - Test note 2 661s E - Test note 3 661s 661s tests/translate/storage/test_base.py:180: AssertionError 661s __________________________ TestCount.test_plurals_kde __________________________ 661s 661s self = <tests.translate.tools.test_pocount.TestCount object at 0xefa47990> 661s 661s @mark.xfail(reason="Support commented out pending removal") 661s def test_plurals_kde(self): 661s """Test that we correcly count old style KDE plurals.""" 661s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 661s 661s tests/translate/tools/test_pocount.py:91: 661s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661s 661s source = '_n: Singular\\n\nPlural', expectedsource = 2 661s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 661s 661s @staticmethod 661s def count(source, expectedsource, target=None, expectedtarget=None): 661s """Simple helper to check the respective word counts.""" 661s poelement = po.pounit(source) 661s if target is not None: 661s poelement.target = target 661s wordssource, wordstarget = pocount.wordsinunit(poelement) 661s print( 661s 'Source (expected=%d; actual=%d): "%s"' 661s % (expectedsource, wordssource, source) 661s ) 661s > assert wordssource == expectedsource 661s E assert 3 == 2 661s 661s tests/translate/tools/test_pocount.py:33: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s Source (expected=2; actual=3): "_n: Singular\n 661s Plural" 661s _________________________ TestPOMerge.test_escape_tabs _________________________ 661s 661s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0xefa825e8> 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_escape_tabs(self): 661s """Ensure that input tabs are escaped in the output, like gettext does.""" 661s # The strings below contains the tab character, not spaces. 661s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 661s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 661s expectedpo = r"""msgid "First\tSecond" 661s msgstr "Eerste\tTweede" 661s """ 661s pofile = self.mergestore(templatepo, mergepo) 661s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 661s > assert bytes(pofile).decode("utf-8") == expectedpo 661s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 661s E 661s E - msgid "First\tSecond" 661s E ? ^^ 661s E + msgid "First Second" 661s E ? ^ 661s E msgstr "Eerste\tTweede" 661s 661s tests/translate/tools/test_pomerge.py:349: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s Expected: 661s msgid "First\tSecond" 661s msgstr "Eerste\tTweede" 661s 661s 661s Merged: 661s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 661s __________________ TestPretranslate.test_merging_msgid_change __________________ 661s 661s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xefa95090> 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_merging_msgid_change(self): 661s """ 661s tests that if the msgid changes but the location stays the same that 661s we merge. 661s """ 661s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 661s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 661s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 661s newpo = self.pretranslatepo(input_source, template_source) 661s print(bytes(newpo)) 661s > assert bytes(newpo).decode("utf-8") == poexpected 661s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 661s E 661s E #: simple.label 661s E #: simple.accesskey 661s E - #, fuzzy 661s E msgid "Its &hard coding a newline.\n" 661s E - msgstr "&Hart gekoeerde nuwe lyne\n" 661s E + msgstr "" 661s 661s tests/translate/tools/test_pretranslate.py:130: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 661s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 661s 661s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xefa952a0> 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_merging_accelerator_changes(self): 661s """ 661s test that a change in the accelerator localtion still allows 661s merging. 661s """ 661s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 661s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 661s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 661s newpo = self.pretranslatepo(input_source, template_source) 661s print(bytes(newpo)) 661s > assert bytes(newpo).decode("utf-8") == poexpected 661s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 661s E 661s E #: someline.c 661s E msgid "A&bout" 661s E - msgstr "&Info" 661s E ? ----- 661s E + msgstr "" 661s 661s tests/translate/tools/test_pretranslate.py:185: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 661s _________________ TestPretranslate.test_lines_cut_differently __________________ 661s 661s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xefa95330> 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_lines_cut_differently(self): 661s """ 661s Checks that the correct formatting is preserved when pot an po lines 661s differ. 661s """ 661s input_source = ( 661s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 661s ) 661s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 661s newpo = self.pretranslatepo(input_source, template_source) 661s newpounit = self.singleunit(newpo) 661s > assert str(newpounit) == template_source 661s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 661s E 661s E #: simple.label 661s E - msgid "Line" 661s E + msgid "Line split " 661s E ? +++++++ 661s E - " split differently" 661s E ? ------- 661s E + "differently" 661s E msgstr "Lyne verskillend gesny" 661s 661s tests/translate/tools/test_pretranslate.py:199: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s #: simple.label 661s msgid "Line split " 661s "differently" 661s msgstr "Lyne verskillend gesny" 661s 661s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 661s 661s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xefa958d0> 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_merging_msgid_change(self): 661s """ 661s tests that if the msgid changes but the location stays the same that 661s we merge. 661s """ 661s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 661s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 661s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 661s newpo = self.pretranslatepo(input_source, template_source) 661s print(bytes(newpo)) 661s > assert bytes(newpo).decode("utf-8") == poexpected 661s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 661s E 661s E #: simple.label 661s E #: simple.accesskey 661s E - #, fuzzy 661s E msgid "Its &hard coding a newline.\n" 661s E - msgstr "&Hart gekoeerde nuwe lyne\n" 661s E + msgstr "" 661s 661s tests/translate/tools/test_pretranslate.py:130: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 661s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 661s 661s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xefa952e8> 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_merging_accelerator_changes(self): 661s """ 661s test that a change in the accelerator localtion still allows 661s merging. 661s """ 661s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 661s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 661s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 661s newpo = self.pretranslatepo(input_source, template_source) 661s print(bytes(newpo)) 661s > assert bytes(newpo).decode("utf-8") == poexpected 661s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 661s E 661s E #: someline.c 661s E msgid "A&bout" 661s E - msgstr "&Info" 661s E ? ----- 661s E + msgstr "" 661s 661s tests/translate/tools/test_pretranslate.py:185: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 661s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 661s 661s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xefa958a0> 661s 661s @mark.xfail(reason="Not Implemented") 661s def test_lines_cut_differently(self): 661s """ 661s Checks that the correct formatting is preserved when pot an po lines 661s differ. 661s """ 661s input_source = ( 661s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 661s ) 661s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 661s newpo = self.pretranslatepo(input_source, template_source) 661s newpounit = self.singleunit(newpo) 661s > assert str(newpounit) == template_source 661s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 661s E 661s E #: simple.label 661s E - msgid "Line" 661s E + msgid "Line split " 661s E ? +++++++ 661s E - " split differently" 661s E ? ------- 661s E + "differently" 661s E msgstr "Lyne verskillend gesny" 661s 661s tests/translate/tools/test_pretranslate.py:199: AssertionError 661s ----------------------------- Captured stdout call ----------------------------- 661s #: simple.label 661s msgid "Line split " 661s "differently" 661s msgstr "Lyne verskillend gesny" 661s 661s =============================== warnings summary =============================== 661s tests/translate/storage/test_cpo.py:15 661s Warning: 661s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 661s ImportError('gettext PO library not found') 661s In pytest 9.1 this warning will become an error by default. 661s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 661s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 661s 661s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 661s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.fz6MXe/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 661s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 661s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 661s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 661s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 661s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 661s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 661s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 661s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 661s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 661s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 661s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 661s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 661s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 661s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 661s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 661s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 661s Warning: Could not find accesskey for key.accesskey 661s 661s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 661s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 661s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 661s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 661s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 661s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.fz6MXe/autopkgtest_tmp/tests/translate/convert/test.idml'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 661s Warning: unclosed file <_io.BufferedReader name='translation.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 661s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 661s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 661s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 661s Warning: Could not find accesskey for prop.accesskey 661s 661s tests/translate/convert/test_po2tmx.py: 26 warnings 661s tests/translate/filters/test_pofilter.py: 13 warnings 661s tests/translate/storage/test_tbx.py: 17 warnings 661s tests/translate/storage/test_tmx.py: 24 warnings 661s 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' 661s 661s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 661s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 661s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 661s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 661s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 661s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 661s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 661s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 661s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 661s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 661s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 661s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 661s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.fz6MXe/autopkgtest_tmp/tests/translate/convert/test.odt'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 661s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 661s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 661s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 661s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 661s Enable tracemalloc to get traceback where the object was allocated. 661s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 661s 661s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 661s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 661s 661s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 661s Warning: DTD file '' does not validate 661s 661s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 661s --------------------------- snapshot report summary ---------------------------- 661s 23 snapshots passed. 661s =========================== short test summary info ============================ 661s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 661s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 661s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 661s SKIPPED [1] tests/translate/storage/test_mo.py:498: Skip testing command line tools 661s SKIPPED [16] tests/translate/tools/test_help.py:16: Skip testing command line tools 661s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:49: Skip testing command line tools 661s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:58: Skip testing command line tools 661s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 661s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 661s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 661s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 661s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 661s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 661s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 661s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 661s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 661s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 661s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 661s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 661s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 661s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 661s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 661s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 661s 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. 661s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 661s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 661s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 661s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 661s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 661s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 661s 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 661s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 661s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 661s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 661s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 661s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 661s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 661s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 661s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 661s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 661s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 661s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 661s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 661s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 661s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 661s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 661s ========= 3254 passed, 22 skipped, 39 xfailed, 127 warnings in 26.65s ========== 665s autopkgtest [04:14:10]: test python3-translate: -----------------------] 670s autopkgtest [04:14:15]: test python3-translate: - - - - - - - - - - results - - - - - - - - - - 670s python3-translate PASS 678s autopkgtest [04:14:23]: test python3-translate-commands: preparing testbed 697s Reading package lists... 698s Building dependency tree... 698s Reading state information... 698s Starting pkgProblemResolver with broken count: 0 698s Starting 2 pkgProblemResolver with broken count: 0 698s Done 699s The following additional packages will be installed: 699s translate-toolkit 699s Recommended packages: 699s translate-toolkit-doc 700s The following NEW packages will be installed: 700s autopkgtest-satdep translate-toolkit 702s 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. 702s Need to get 88.2 kB/89.1 kB of archives. 702s After this operation, 253 kB of additional disk space will be used. 702s Get:1 /tmp/autopkgtest.fz6MXe/3-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [884 B] 703s Get:2 http://ftpmaster.internal/ubuntu oracular/universe armhf translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 706s Fetched 88.2 kB in 2s (35.6 kB/s) 707s Selecting previously unselected package translate-toolkit. 707s (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 ... 61792 files and directories currently installed.) 707s Preparing to unpack .../translate-toolkit_3.12.2-1ubuntu1_all.deb ... 707s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 707s Selecting previously unselected package autopkgtest-satdep. 707s Preparing to unpack .../3-autopkgtest-satdep.deb ... 707s Unpacking autopkgtest-satdep (0) ... 707s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 707s Setting up autopkgtest-satdep (0) ... 707s Processing triggers for man-db (2.12.1-1) ... 764s (Reading database ... 61965 files and directories currently installed.) 764s Removing autopkgtest-satdep (0) ... 773s autopkgtest [04:15:58]: test python3-translate-commands: [----------------------- 787s ============================= test session starts ============================== 787s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 787s cachedir: .pytest_cache 787s rootdir: /tmp/autopkgtest.fz6MXe/autopkgtest_tmp 787s plugins: syrupy-4.6.1 799s collecting ... collected 3313 items / 2 skipped 799s 799s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 799s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 799s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 799s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 799s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 799s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 799s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 799s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 799s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 799s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 799s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 799s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 799s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 799s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 799s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 800s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 800s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 800s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 800s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 800s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 800s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 800s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 800s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 800s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 800s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 800s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 800s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 800s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 800s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 800s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 800s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 800s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 800s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 800s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 800s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 800s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 800s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 800s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 800s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 800s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 800s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 800s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 800s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 800s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 800s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 801s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 801s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 801s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 801s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 801s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 801s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 801s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 801s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 801s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 801s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 801s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 801s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 801s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 801s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 801s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 801s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 801s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 801s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 801s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 801s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 801s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 801s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 801s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 801s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 802s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 802s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 802s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 802s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 802s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 802s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 803s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 803s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 803s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 803s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 803s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 803s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 803s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 803s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 803s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 803s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 803s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 803s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 803s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 803s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 803s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 803s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 803s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 803s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 803s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 803s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 803s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 803s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 803s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 803s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 803s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 804s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 804s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 804s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 804s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 804s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 804s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 804s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 804s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 804s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 804s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 804s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 804s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 804s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 804s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 804s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 804s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 804s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 804s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 804s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 804s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 804s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 804s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 804s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 804s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 804s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 804s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 804s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 804s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 804s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 804s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 804s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 805s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 805s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 805s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 805s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 805s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 805s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 805s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 805s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 806s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 806s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 806s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 806s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 806s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 806s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 806s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 806s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 806s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 806s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 806s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 806s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 806s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 806s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 806s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 806s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 806s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 806s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 806s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 806s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 806s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 806s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 806s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 807s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 807s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 807s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 807s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 807s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 807s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 807s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 807s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 807s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 807s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 807s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 807s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 807s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 807s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 807s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 807s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 807s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 807s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 807s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 807s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 807s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 807s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 807s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 807s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 807s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 807s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 807s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 807s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 807s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 807s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 807s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 807s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 807s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 807s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 807s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 807s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 807s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 807s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 807s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 807s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 807s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 807s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 807s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 807s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 807s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 807s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 807s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 807s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 807s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 807s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 807s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 807s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 807s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 807s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 807s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 807s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 807s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 807s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 807s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 807s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 807s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 807s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 807s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 807s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 807s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 807s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 807s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 807s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 807s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 808s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 812s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 812s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 812s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 812s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 812s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 812s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 812s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 812s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 812s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 812s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 812s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 812s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 813s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 813s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 813s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 813s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 813s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 813s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 813s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 813s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 813s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 813s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 813s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 813s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 813s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 813s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 813s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 813s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 813s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 813s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 813s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 813s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 813s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 813s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 813s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 814s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 814s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 814s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 814s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 814s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 814s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 814s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 815s tests/translate/storage/test_mo.py::TestMOFile::test_output PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 815s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 815s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 815s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 815s 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%] 815s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 815s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 815s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 815s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 815s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 815s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 815s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 815s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 815s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 815s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 815s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 815s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 815s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 815s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 816s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 816s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 816s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 816s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 816s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 816s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 816s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 816s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 816s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 816s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 816s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 816s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 816s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 816s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 816s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 816s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 816s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 816s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 817s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 817s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 817s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 817s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 817s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 817s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 817s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 817s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 817s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 817s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 817s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 817s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 817s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 817s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 817s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 817s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 817s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 818s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 818s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 818s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 818s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 818s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 818s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 818s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 818s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 818s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 818s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 818s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 818s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 819s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 819s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 819s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 819s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 819s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 819s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 819s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 819s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 819s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 819s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 819s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 819s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 819s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 819s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 819s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 819s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 819s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 819s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 819s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 819s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 819s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 819s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 819s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 819s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 820s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 820s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 820s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 820s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 820s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 820s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 820s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 820s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 820s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 820s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 820s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 820s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 820s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 820s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 821s tests/translate/tools/test_help.py::test_help[build_tmdb] PASSED [ 94%] 821s tests/translate/tools/test_help.py::test_help[phppo2pypo] PASSED [ 94%] 821s tests/translate/tools/test_help.py::test_help[poclean] PASSED [ 94%] 821s tests/translate/tools/test_help.py::test_help[pocompile] PASSED [ 94%] 821s tests/translate/tools/test_help.py::test_help[poconflicts] PASSED [ 94%] 822s tests/translate/tools/test_help.py::test_help[pocount] PASSED [ 94%] 822s tests/translate/tools/test_help.py::test_help[podebug] PASSED [ 94%] 822s tests/translate/tools/test_help.py::test_help[pogrep] PASSED [ 94%] 822s tests/translate/tools/test_help.py::test_help[pomerge] PASSED [ 94%] 822s tests/translate/tools/test_help.py::test_help[porestructure] PASSED [ 94%] 823s tests/translate/tools/test_help.py::test_help[posegment] PASSED [ 94%] 823s tests/translate/tools/test_help.py::test_help[poswap] PASSED [ 94%] 823s tests/translate/tools/test_help.py::test_help[poterminology] PASSED [ 95%] 824s tests/translate/tools/test_help.py::test_help[pretranslate] PASSED [ 95%] 824s tests/translate/tools/test_help.py::test_help[pydiff] PASSED [ 95%] 824s tests/translate/tools/test_help.py::test_help[pypo2phppo] PASSED [ 95%] 824s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 824s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 824s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 824s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 824s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 824s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 824s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 824s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 824s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 825s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 825s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 825s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 825s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 826s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 826s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 826s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 826s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 826s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 826s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 826s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 826s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 826s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 826s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 826s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff PASSED [ 99%] 830s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff PASSED [100%] 830s 830s ================================== XFAILURES =================================== 830s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 830s 830s self = <tests.translate.convert.test_dtd2po.TestDTD2PO object at 0xeb101cd8> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_accelerator_keys_not_in_sentence(self): 830s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 830s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 830s <!ENTITY useAutoScroll.accesskey "a">""" 830s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 830s <!ENTITY useAutoScroll.accesskey "a">""" 830s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 830s print(pofile) 830s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 830s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 830s 830s tests/translate/convert/test_dtd2po.py:348: AttributeError 830s ----------------------------- Captured stdout call ----------------------------- 830s <translate.storage.pypo.pofile object at 0xe9546be8> 830s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 830s 830s self = <tests.translate.convert.test_dtd2po.TestDTD2POCommand object at 0xeb0a83d8> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_accelerator_keys_not_in_sentence(self): 830s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 830s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 830s <!ENTITY useAutoScroll.accesskey "a">""" 830s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 830s <!ENTITY useAutoScroll.accesskey "a">""" 830s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 830s print(pofile) 830s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 830s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 830s 830s tests/translate/convert/test_dtd2po.py:348: AttributeError 830s ----------------------------- Captured stdout call ----------------------------- 830s <translate.storage.pypo.pofile object at 0xe9540a50> 830s ________________ TestPO2Php.test_merging_propertyless_template _________________ 830s 830s self = <tests.translate.convert.test_po2php.TestPO2Php object at 0xeaa26318> 830s 830s @mark.xfail(reason="Need to review if we want this behaviour") 830s def test_merging_propertyless_template(self): 830s """Check that when merging with a template with no property values that we copy the template.""" 830s posource = "" 830s proptemplate = "# A comment\n" 830s propexpected = proptemplate 830s > propfile = self.merge2prop(proptemplate, posource) 830s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 830s 830s tests/translate/convert/test_po2php.py:386: AttributeError 830s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 830s 830s self = <tests.translate.convert.test_po2php.TestPO2PhpCommand object at 0xeaa26cd8> 830s 830s @mark.xfail(reason="Need to review if we want this behaviour") 830s def test_merging_propertyless_template(self): 830s """Check that when merging with a template with no property values that we copy the template.""" 830s posource = "" 830s proptemplate = "# A comment\n" 830s propexpected = proptemplate 830s > propfile = self.merge2prop(proptemplate, posource) 830s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 830s 830s tests/translate/convert/test_po2php.py:386: AttributeError 830s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 830s 830s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0xea3f7eb8> 830s 830s @mark.xfail(reason="Not implemented - review if this is even correct") 830s def test_merging_msgid_change(self): 830s """Tests that if the msgid changes but the location stays the same that we merge.""" 830s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 830s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 830s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 830s newpo = self.convertpot(potsource, posource) 830s print(newpo) 830s > assert str(self.singleunit(newpo)) == poexpected 830s 830s tests/translate/convert/test_pot2po.py:121: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s pofile = <translate.storage.pypo.pofile object at 0xe9d18f48> 830s 830s @staticmethod 830s def singleunit(pofile): 830s """Checks that the pofile contains a single non-header unit, and returns it.""" 830s > assert len(pofile.units) == 2 830s E assert 3 == 2 830s E + where 3 = len([<translate.storage.pypo.pounit object at 0xe9d18450>, <translate.storage.pypo.pounit object at 0xe9d18f30>, <translate.storage.pypo.pounit object at 0xe9d142b8>]) 830s E + where [<translate.storage.pypo.pounit object at 0xe9d18450>, <translate.storage.pypo.pounit object at 0xe9d18f30>, <translate.storage.pypo.pounit object at 0xe9d142b8>] = <translate.storage.pypo.pofile object at 0xe9d18f48>.units 830s 830s tests/translate/convert/test_pot2po.py:25: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s <translate.storage.pypo.pofile object at 0xe9d18f48> 830s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 830s 830s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0xea3f7cf0> 830s 830s @mark.xfail(reason="Not Implemented - needs review") 830s def test_merging_accelerator_changes(self): 830s """Test that a change in the accelerator localtion still allows merging.""" 830s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 830s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 830s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 830s newpo = self.convertpot(potsource, posource) 830s print(newpo) 830s > assert str(self.singleunit(newpo)) == poexpected 830s 830s tests/translate/convert/test_pot2po.py:190: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s pofile = <translate.storage.pypo.pofile object at 0xe91cd048> 830s 830s @staticmethod 830s def singleunit(pofile): 830s """Checks that the pofile contains a single non-header unit, and returns it.""" 830s > assert len(pofile.units) == 2 830s E assert 3 == 2 830s E + where 3 = len([<translate.storage.pypo.pounit object at 0xe91cd2b8>, <translate.storage.pypo.pounit object at 0xe91cd2d0>, <translate.storage.pypo.pounit object at 0xe91cd198>]) 830s E + where [<translate.storage.pypo.pounit object at 0xe91cd2b8>, <translate.storage.pypo.pounit object at 0xe91cd2d0>, <translate.storage.pypo.pounit object at 0xe91cd198>] = <translate.storage.pypo.pofile object at 0xe91cd048>.units 830s 830s tests/translate/convert/test_pot2po.py:25: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s <translate.storage.pypo.pofile object at 0xe91cd048> 830s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 830s 830s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0xea3f7588> 830s 830s @mark.xfail(reason="Not Implemented - review if this is even correct") 830s def test_lines_cut_differently(self): 830s """Checks that the correct formatting is preserved when pot an po lines differ.""" 830s potsource = ( 830s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 830s ) 830s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 830s newpo = self.convertpot(potsource, posource) 830s newpounit = self.singleunit(newpo) 830s > assert str(newpounit) == posource 830s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 830s E 830s E #: simple.label 830s E - msgid "Line" 830s E + msgid "Line split " 830s E ? +++++++ 830s E - " split differently" 830s E ? ------- 830s E + "differently" 830s E msgstr "Lyne verskillend gesny" 830s 830s tests/translate/convert/test_pot2po.py:201: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s #: simple.label 830s msgid "Line split " 830s "differently" 830s msgstr "Lyne verskillend gesny" 830s 830s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 830s 830s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0xea3cbea0> 830s 830s @mark.xfail(reason="Not implemented - review if this is even correct") 830s def test_merging_msgid_change(self): 830s """Tests that if the msgid changes but the location stays the same that we merge.""" 830s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 830s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 830s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 830s newpo = self.convertpot(potsource, posource) 830s print(newpo) 830s > assert str(self.singleunit(newpo)) == poexpected 830s 830s tests/translate/convert/test_pot2po.py:121: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s pofile = <translate.storage.pypo.pofile object at 0xe9c986c0> 830s 830s @staticmethod 830s def singleunit(pofile): 830s """Checks that the pofile contains a single non-header unit, and returns it.""" 830s > assert len(pofile.units) == 2 830s E assert 3 == 2 830s E + where 3 = len([<translate.storage.pypo.pounit object at 0xe9c98528>, <translate.storage.pypo.pounit object at 0xe9c98708>, <translate.storage.pypo.pounit object at 0xe9c98540>]) 830s E + where [<translate.storage.pypo.pounit object at 0xe9c98528>, <translate.storage.pypo.pounit object at 0xe9c98708>, <translate.storage.pypo.pounit object at 0xe9c98540>] = <translate.storage.pypo.pofile object at 0xe9c986c0>.units 830s 830s tests/translate/convert/test_pot2po.py:25: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s <translate.storage.pypo.pofile object at 0xe9c986c0> 830s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 830s 830s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0xea428168> 830s 830s @mark.xfail(reason="Not Implemented - needs review") 830s def test_merging_accelerator_changes(self): 830s """Test that a change in the accelerator localtion still allows merging.""" 830s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 830s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 830s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 830s newpo = self.convertpot(potsource, posource) 830s print(newpo) 830s > assert str(self.singleunit(newpo)) == poexpected 830s 830s tests/translate/convert/test_pot2po.py:190: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s pofile = <translate.storage.pypo.pofile object at 0xedf40228> 830s 830s @staticmethod 830s def singleunit(pofile): 830s """Checks that the pofile contains a single non-header unit, and returns it.""" 830s > assert len(pofile.units) == 2 830s E assert 3 == 2 830s E + where 3 = len([<translate.storage.pypo.pounit object at 0xe9d14f90>, <translate.storage.pypo.pounit object at 0xe9cf2108>, <translate.storage.pypo.pounit object at 0xe9cf2df8>]) 830s E + where [<translate.storage.pypo.pounit object at 0xe9d14f90>, <translate.storage.pypo.pounit object at 0xe9cf2108>, <translate.storage.pypo.pounit object at 0xe9cf2df8>] = <translate.storage.pypo.pofile object at 0xedf40228>.units 830s 830s tests/translate/convert/test_pot2po.py:25: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s <translate.storage.pypo.pofile object at 0xedf40228> 830s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 830s 830s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0xea428210> 830s 830s @mark.xfail(reason="Not Implemented - review if this is even correct") 830s def test_lines_cut_differently(self): 830s """Checks that the correct formatting is preserved when pot an po lines differ.""" 830s potsource = ( 830s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 830s ) 830s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 830s newpo = self.convertpot(potsource, posource) 830s newpounit = self.singleunit(newpo) 830s > assert str(newpounit) == posource 830s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 830s E 830s E #: simple.label 830s E - msgid "Line" 830s E + msgid "Line split " 830s E ? +++++++ 830s E - " split differently" 830s E ? ------- 830s E + "differently" 830s E msgstr "Lyne verskillend gesny" 830s 830s tests/translate/convert/test_pot2po.py:201: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s #: simple.label 830s msgid "Line split " 830s "differently" 830s msgstr "Lyne verskillend gesny" 830s 830s ________________________ TestYAML2PO.test_no_duplicates ________________________ 830s 830s self = <translate.storage.yaml.YAMLFile object at 0xe9bd1df8> 830s input = '\nfoo: bar\nfoo: baz\n' 830s 830s def parse(self, input): 830s """Parse the given file or file source string.""" 830s if hasattr(input, "name"): 830s self.filename = input.name 830s elif not getattr(self, "filename", ""): 830s self.filename = "" 830s if hasattr(input, "read"): 830s src = input.read() 830s input.close() 830s input = src 830s if isinstance(input, bytes): 830s input = input.decode("utf-8") 830s try: 830s > self._original = self.yaml.load(input) 830s 830s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 830s return constructor.get_single_data() 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 830s return self.construct_document(node) 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 830s for _dummy in generator: 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 830s self.construct_mapping(node, data, deep=True) 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 830s if self.check_mapping_key(node, key_node, maptyp, key, value): 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0xe9bd1d08> 830s 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'))]) 830s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 830s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 830s 830s def check_mapping_key(self, node, key_node, mapping, key, value): 830s # type: (Any, Any, Any, Any, Any) -> bool 830s """return True if key is unique""" 830s if key in mapping: 830s if not self.allow_duplicate_keys: 830s mk = mapping.get(key) 830s args = [ 830s 'while constructing a mapping', 830s node.start_mark, 830s 'found duplicate key "{}" with value "{}" ' 830s '(original value: "{}")'.format(key, value, mk), 830s key_node.start_mark, 830s """ 830s To suppress this check see: 830s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 830s """, 830s """\ 830s Duplicate keys will become an error in future releases, and are errors 830s by default when using the new API. 830s """, 830s ] 830s if self.allow_duplicate_keys is None: 830s warnings.warn(DuplicateKeyFutureWarning(*args)) 830s else: 830s > raise DuplicateKeyError(*args) 830s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 830s E in "<unicode string>", line 2, column 1: 830s E foo: bar 830s E ^ (line: 2) 830s E found duplicate key "foo" with value "baz" (original value: "bar") 830s E in "<unicode string>", line 3, column 1: 830s E foo: baz 830s E ^ (line: 3) 830s E 830s E To suppress this check see: 830s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 830s 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 830s 830s During handling of the above exception, another exception occurred: 830s 830s self = <tests.translate.convert.test_yaml2po.TestYAML2PO object at 0xea4fb6a8> 830s 830s @pytest.mark.xfail(reason="This is invalid YAML document") 830s def test_no_duplicates(self): 830s """Check converting drops duplicates.""" 830s input_string = """ 830s foo: bar 830s foo: baz 830s """ 830s > target_store = self._convert_to_store(input_string) 830s 830s tests/translate/convert/test_yaml2po.py:112: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 830s return self._convert(*args, **kwargs)[0] 830s tests/translate/convert/test_yaml2po.py:28: in _convert 830s converter = self.ConverterClass( 830s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 830s self.source_store = self.SourceStoreClass(input_file) 830s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 830s self.parse(inputfile) 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s self = <translate.storage.yaml.YAMLFile object at 0xe9bd1df8> 830s input = '\nfoo: bar\nfoo: baz\n' 830s 830s def parse(self, input): 830s """Parse the given file or file source string.""" 830s if hasattr(input, "name"): 830s self.filename = input.name 830s elif not getattr(self, "filename", ""): 830s self.filename = "" 830s if hasattr(input, "read"): 830s src = input.read() 830s input.close() 830s input = src 830s if isinstance(input, bytes): 830s input = input.decode("utf-8") 830s try: 830s self._original = self.yaml.load(input) 830s except YAMLError as e: 830s message = getattr(e, "problem", getattr(e, "message", str(e))) 830s if hasattr(e, "problem_mark"): 830s message += f" {e.problem_mark}" 830s > raise base.ParseError(message) 830s 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)' 830s 830s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 830s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 830s 830s self = <translate.storage.yaml.YAMLFile object at 0xe9b69be8> 830s input = '\nfoo: bar\nfoo: baz\n' 830s 830s def parse(self, input): 830s """Parse the given file or file source string.""" 830s if hasattr(input, "name"): 830s self.filename = input.name 830s elif not getattr(self, "filename", ""): 830s self.filename = "" 830s if hasattr(input, "read"): 830s src = input.read() 830s input.close() 830s input = src 830s if isinstance(input, bytes): 830s input = input.decode("utf-8") 830s try: 830s > self._original = self.yaml.load(input) 830s 830s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 830s return constructor.get_single_data() 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 830s return self.construct_document(node) 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 830s for _dummy in generator: 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 830s self.construct_mapping(node, data, deep=True) 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 830s if self.check_mapping_key(node, key_node, maptyp, key, value): 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0xe9b698a0> 830s 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'))]) 830s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 830s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 830s 830s def check_mapping_key(self, node, key_node, mapping, key, value): 830s # type: (Any, Any, Any, Any, Any) -> bool 830s """return True if key is unique""" 830s if key in mapping: 830s if not self.allow_duplicate_keys: 830s mk = mapping.get(key) 830s args = [ 830s 'while constructing a mapping', 830s node.start_mark, 830s 'found duplicate key "{}" with value "{}" ' 830s '(original value: "{}")'.format(key, value, mk), 830s key_node.start_mark, 830s """ 830s To suppress this check see: 830s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 830s """, 830s """\ 830s Duplicate keys will become an error in future releases, and are errors 830s by default when using the new API. 830s """, 830s ] 830s if self.allow_duplicate_keys is None: 830s warnings.warn(DuplicateKeyFutureWarning(*args)) 830s else: 830s > raise DuplicateKeyError(*args) 830s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 830s E in "<unicode string>", line 2, column 1: 830s E foo: bar 830s E ^ (line: 2) 830s E found duplicate key "foo" with value "baz" (original value: "bar") 830s E in "<unicode string>", line 3, column 1: 830s E foo: baz 830s E ^ (line: 3) 830s E 830s E To suppress this check see: 830s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 830s 830s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 830s 830s During handling of the above exception, another exception occurred: 830s 830s self = <tests.translate.convert.test_yaml2po.TestYAML2POCommand object at 0xea4fb8a0> 830s 830s @pytest.mark.xfail(reason="This is invalid YAML document") 830s def test_no_duplicates(self): 830s """Check converting drops duplicates.""" 830s input_string = """ 830s foo: bar 830s foo: baz 830s """ 830s > target_store = self._convert_to_store(input_string) 830s 830s tests/translate/convert/test_yaml2po.py:112: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 830s return self._convert(*args, **kwargs)[0] 830s tests/translate/convert/test_yaml2po.py:28: in _convert 830s converter = self.ConverterClass( 830s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 830s self.source_store = self.SourceStoreClass(input_file) 830s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 830s self.parse(inputfile) 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s self = <translate.storage.yaml.YAMLFile object at 0xe9b69be8> 830s input = '\nfoo: bar\nfoo: baz\n' 830s 830s def parse(self, input): 830s """Parse the given file or file source string.""" 830s if hasattr(input, "name"): 830s self.filename = input.name 830s elif not getattr(self, "filename", ""): 830s self.filename = "" 830s if hasattr(input, "read"): 830s src = input.read() 830s input.close() 830s input = src 830s if isinstance(input, bytes): 830s input = input.decode("utf-8") 830s try: 830s self._original = self.yaml.load(input) 830s except YAMLError as e: 830s message = getattr(e, "problem", getattr(e, "message", str(e))) 830s if hasattr(e, "problem_mark"): 830s message += f" {e.problem_mark}" 830s > raise base.ParseError(message) 830s 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)' 830s 830s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 830s __________________________ test_acceleratedvariables ___________________________ 830s 830s @mark.xfail(reason="Accelerated variables needs a better implementation") 830s def test_acceleratedvariables(): 830s """Test for accelerated variables.""" 830s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 830s mozillachecker = checks.MozillaChecker() 830s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 830s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 830s 830s tests/translate/filters/test_checks.py:206: AttributeError 830s ___________________________ test_musttranslatewords ____________________________ 830s 830s @mark.xfail(reason="FIXME: All fails() tests are not working") 830s def test_musttranslatewords(): 830s """Tests stopwords.""" 830s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 830s assert passes( 830s stdchecker.musttranslatewords, 830s "This uses Mozilla of course", 830s "hierdie gebruik le mozille natuurlik", 830s ) 830s stdchecker = checks.StandardChecker( 830s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 830s ) 830s assert passes( 830s stdchecker.musttranslatewords, 830s "This uses Mozilla of course", 830s "hierdie gebruik le mozille natuurlik", 830s ) 830s > assert fails( 830s stdchecker.musttranslatewords, 830s "This uses Mozilla of course", 830s "hierdie gebruik Mozilla natuurlik", 830s ) 830s E AssertionError: assert False 830s E + where False = fails(<bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0xe9bb9ed0>>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 830s E + where <bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0xe9bb9ed0>> = <translate.filters.checks.StandardChecker object at 0xe9bb9ed0>.musttranslatewords 830s 830s tests/translate/filters/test_checks.py:612: AssertionError 830s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 830s 830s @mark.xfail(reason="Bug #3408") 830s def test_persian_single_and_double_quote_fail_at_the_same_time(): 830s """Test Persian single and double quote failures in string with single quotes.""" 830s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 830s 830s # With single quote check. 830s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 830s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 830s E assert False 830s E + where False = fails(<bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0xe9ba3210>>, "Path: '%S'", 'مسیر: "%S"\u200e') 830s E + where <bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0xe9ba3210>> = <translate.filters.checks.StandardChecker object at 0xe9ba3210>.singlequoting 830s 830s tests/translate/filters/test_checks.py:1271: AssertionError 830s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 830s 830s @mark.xfail(reason="Bug #3506") 830s def test_bengali_mozilla_inverted_xmltags(): 830s """Test Bengali Mozilla XML tags.""" 830s bn_mozilla_checker = checks.MozillaChecker( 830s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 830s ) 830s 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.""" 830s str_bn = """এর প্রচলন ঘটাতে আমরা <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> প্রতিষ্ঠায় <a href="%(cofound_url)s" rel="external">সহযোগী</a> ছিলাম।ন।""" 830s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 830s E assert False 830s E + where False = passes(<bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0xe91b2408>>, '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> ছিলাম।ন।') 830s E + where <bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0xe91b2408>> = <translate.filters.checks.MozillaChecker object at 0xe91b2408>.xmltags 830s 830s tests/translate/filters/test_checks.py:2065: AssertionError 830s _______________________________ test_word_khmer ________________________________ 830s 830s @mark.xfail( 830s reason="ZWS is not considered a space in Python 2.6+. Khmer " 830s "should extend words() to include \\u200b in addition to " 830s "other word breakers." 830s ) 830s def test_word_khmer(): 830s language = common.Common 830s # Let's test Khmer with zero width space (\u200b) 830s words = language.words("ផ្ដល់\u200bយោបល់") 830s print("ផ្ដល់\u200bយោបល់") 830s print(language.words("ផ្ដល់<200b>យោបល់")) 830s print(["ផ្ដល់", "យោបល់"]) 830s > assert words == ["ផ្ដល់", "យោបល់"] 830s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 830s E 830s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 830s E Right contains one more item: 'យោបល់' 830s E 830s E Full diff: 830s E [ 830s E + 'ផ្ដល់\u200bយោបល់',... 830s E 830s E ...Full output truncated (3 lines hidden), use '-vv' to show 830s 830s tests/translate/lang/test_common.py:47: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s ផ្ដល់​យោបល់ 830s ['ផ្ដល់<200b>យោបល់'] 830s ['ផ្ដល់', 'យោបល់'] 830s __________________ TestConverters.test_to_general_placeables ___________________ 830s 830s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0xe933d180> 830s 830s @mark.xfail(reason="Test needs fixing, disabled for now") 830s def test_to_general_placeables(self): 830s basetree = base.to_base_placeables(self.elem) 830s gentree = general.to_general_placeables(basetree) 830s > assert gentree == self.elem 830s E assert <StringElem([...(['</a>'])>])> == <StringElem([...(['</a>'])>])> 830s E 830s E Full diff: 830s E - <StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 830s E ? ^^^ 830s E + <StringElem([<StringElem(['Ģët '])>, <XMLEntityPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 830s E ? ^^^^^^ 830s 830s tests/translate/storage/placeables/test_base.py:210: AssertionError 830s ___________________ TestConverters.test_to_xliff_placeables ____________________ 830s 830s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0xe933d828> 830s 830s @mark.xfail(reason="Test needs fixing, disabled for now") 830s def test_to_xliff_placeables(self): 830s basetree = base.to_base_placeables(self.elem) 830s xliff_from_base = xliff.to_xliff_placeables(basetree) 830s > assert str(xliff_from_base) != str(self.elem) 830s 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>' 830s 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>'])>])>) 830s 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>'])>])>) 830s 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 0xe933d828>.elem 830s 830s tests/translate/storage/placeables/test_base.py:216: AssertionError 830s _____________________ test_quotefordtd_unimplemented_cases _____________________ 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_quotefordtd_unimplemented_cases(): 830s """Test unimplemented quoting DTD cases.""" 830s > assert dtd.quotefordtd("Between <p> and </p>") == ( 830s '"Between <p> and </p>"' 830s ) 830s E assert '"Between <p> and </p>"' == '"Between <...d </p>"' 830s E 830s E - "Between <p> and </p>" 830s E + "Between <p> and </p>" 830s 830s tests/translate/storage/test_dtd.py:72: AssertionError 830s ___________________ test_unquotefromdtd_unimplemented_cases ____________________ 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_unquotefromdtd_unimplemented_cases(): 830s """Test unimplemented unquoting DTD cases.""" 830s > assert dtd.unquotefromdtd('"<p> and </p>"') == "<p> and </p>" 830s E AssertionError: assert '<p> and </p>' == '<p> and </p>' 830s E 830s E - <p> and </p> 830s E + <p> and </p> 830s 830s tests/translate/storage/test_dtd.py:103: AssertionError 830s ________________________ TestDTD.test_comment_following ________________________ 830s 830s self = <tests.translate.storage.test_dtd.TestDTD object at 0xe95d0420> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_comment_following(self): 830s """Check that comments that appear after and entity are not pushed onto another line.""" 830s dtdsource = '<!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->' 830s dtdregen = self.dtdregen(dtdsource) 830s > assert dtdsource == dtdregen 830s E assert '<!ENTITY tex...keyboards -->' == '<!-- + is ab...dkey2 "="> \n' 830s E 830s E + <!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards --> 830s E - <!-- + is above this key on many keyboards --> 830s E - <!ENTITY textZoomEnlargeCmd.commandkey2 "="> 830s 830s tests/translate/storage/test_dtd.py:344: AssertionError 830s _________________________ TestDTD.test_invalid_quoting _________________________ 830s 830s self = <tests.translate.storage.test_dtd.TestDTD object at 0xe95d0870> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_invalid_quoting(self): 830s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 830s # TODO: we should rather raise an error 830s dtdsource = '<!ENTITY test.me "bananas for sale""room">\n' 830s assert ( 830s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 830s ) 830s dtdfile = self.dtdparse(dtdsource) 830s assert len(dtdfile.units) == 1 830s dtdunit = dtdfile.units[0] 830s assert dtdunit.definition == '"bananas for sale"' 830s > assert bytes(dtdfile) == b'<!ENTITY test.me "bananas for sale">\n' 830s E assert b'' == b'<!ENTITY te... for sale">\n' 830s E 830s E Full diff: 830s E - (b'<!ENTITY test.me "bananas for sale">\n') 830s E + b'' 830s 830s tests/translate/storage/test_dtd.py:364: AssertionError 830s __________________________ TestOtFile.test_extensions __________________________ 830s 830s self = <tests.translate.storage.test_omegat.TestOtFile object at 0xe940c228> 830s 830s @mark.xfail( 830s reason="This doesn't work, due to two store classes handling different " 830s "extensions, but factory listing it as one supported file type" 830s ) 830s def test_extensions(self): 830s > super().test_extensions() 830s 830s tests/translate/storage/test_omegat.py:20: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s self = <tests.translate.storage.test_omegat.TestOtFile object at 0xe940c228> 830s 830s def test_extensions(self): 830s """Test that the factory knows the extensions for this class.""" 830s supported = factory.supported_files() 830s supported_dict = { 830s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 830s } 830s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 830s return 830s detail = supported_dict[ 830s self.StoreClass.Name 830s ] # will start to get problematic once translated 830s print("Factory:", detail[0]) 830s print("StoreClass:", self.StoreClass.Extensions) 830s for ext in detail[0]: 830s > assert ext in self.StoreClass.Extensions 830s E AssertionError: assert 'tab' in ['utf8'] 830s E + where ['utf8'] = <class 'translate.storage.omegat.OmegaTFile'>.Extensions 830s E + where <class 'translate.storage.omegat.OmegaTFile'> = <tests.translate.storage.test_omegat.TestOtFile object at 0xe940c228>.StoreClass 830s 830s tests/translate/storage/test_base.py:386: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s Factory: ['utf8', 'tab'] 830s StoreClass: ['utf8'] 830s _________________________ TestPOFile.test_kde_plurals __________________________ 830s 830s self = <tests.translate.storage.test_po.TestPOFile object at 0xe9412210> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_kde_plurals(self): 830s """Tests kde-style plurals. (Bug: 191).""" 830s posource = r"""msgid "_n Singular\n" 830s "Plural" 830s msgstr "Een\n" 830s "Twee\n" 830s "Drie" 830s """ 830s pofile = self.poparse(posource) 830s assert len(pofile.units) == 1 830s unit = pofile.units[0] 830s > assert unit.hasplural() 830s E assert False 830s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xe8b2bb40>>() 830s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xe8b2bb40>> = <translate.storage.pypo.pounit object at 0xe8b2bb40>.hasplural 830s 830s tests/translate/storage/test_po.py:374: AssertionError 830s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 830s 830s self = <tests.translate.storage.test_po.TestPOFile object at 0xe9517090> 830s 830s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 830s def test_makeobsolete_untranslated(self): 830s """Tests making an untranslated unit obsolete.""" 830s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 830s pofile = self.poparse(posource) 830s unit = pofile.units[0] 830s print(bytes(pofile)) 830s assert not unit.isobsolete() 830s unit.makeobsolete() 830s > assert str(unit) == "" 830s E assert '#~ msgid "te...~ msgstr ""\n' == '' 830s E 830s E + #~ msgid "test" 830s E + #~ msgstr "" 830s 830s tests/translate/storage/test_po.py:449: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 830s ________________________ TestXWikiFullPage.test_remove _________________________ 830s 830s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0xe996b9a8> 830s 830s @mark.xfail(reason="removal not working in full page") 830s def test_remove(self): 830s > super().test_remove() 830s 830s tests/translate/storage/test_properties.py:1614: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0xe996b9a8> 830s 830s def test_remove(self): 830s """Tests removing a unit with a source string.""" 830s store = self.StoreClass() 830s unit = store.addsourceunit("Test String") 830s # Some storages (MO, OmegaT) serialize only translated units 830s unit.target = "Test target" 830s assert headerless_len(store.units) == 1 830s withunit = bytes(store) 830s print(withunit) 830s store.removeunit(unit) 830s assert headerless_len(store.units) == 0 830s withoutunit = bytes(store) 830s print(withoutunit) 830s > assert withoutunit != withunit 830s 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' 830s 830s tests/translate/storage/test_base.py:278: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s 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' 830s 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' 830s ________________________ TestPYPOFile.test_kde_plurals _________________________ 830s 830s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xe996ffc0> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_kde_plurals(self): 830s """Tests kde-style plurals. (Bug: 191).""" 830s posource = r"""msgid "_n Singular\n" 830s "Plural" 830s msgstr "Een\n" 830s "Twee\n" 830s "Drie" 830s """ 830s pofile = self.poparse(posource) 830s assert len(pofile.units) == 1 830s unit = pofile.units[0] 830s > assert unit.hasplural() 830s E assert False 830s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xe7f9a930>>() 830s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0xe7f9a930>> = <translate.storage.pypo.pounit object at 0xe7f9a930>.hasplural 830s 830s tests/translate/storage/test_po.py:374: AssertionError 830s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 830s 830s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xe94ebc78> 830s 830s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 830s def test_makeobsolete_untranslated(self): 830s """Tests making an untranslated unit obsolete.""" 830s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 830s pofile = self.poparse(posource) 830s unit = pofile.units[0] 830s print(bytes(pofile)) 830s assert not unit.isobsolete() 830s unit.makeobsolete() 830s > assert str(unit) == "" 830s E assert '#~ msgid "te...~ msgstr ""\n' == '' 830s E 830s E + #~ msgid "test" 830s E + #~ msgstr "" 830s 830s tests/translate/storage/test_po.py:449: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 830s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 830s 830s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0xe9998198> 830s 830s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 830s def test_mixed_newlines_typecomment(self): 830s """Checks that mixed newlines in typecomments are properly parsed.""" 830s # This was generated by translate-tookit prior to 830s # issue that test_dos_newlines_write is covering was fixed. 830s posource = b"""#, fuzzy 830s msgid "test me"\r 830s msgstr ""\r 830s """ 830s > pofile = self.poparse(posource) 830s 830s tests/translate/storage/test_pypo.py:620: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s tests/translate/storage/test_po.py:214: in poparse 830s return self.StoreClass(dummyfile) 830s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 830s super().__init__(inputfile, **kwargs) 830s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 830s self.parse(inputfile) 830s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 830s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s parse_state = <translate.storage.poparser.ParseState object at 0xe7e3e7e0> 830s store = <translate.storage.pypo.pofile object at 0xe7e3e780> 830s 830s def parse_units(parse_state, store): 830s unit = parse_header(parse_state, store) 830s while unit: 830s unit.infer_state() 830s store.addunit(unit) 830s unit = parse_unit(parse_state) 830s if not parse_state.eof: 830s > raise PoParseError(parse_state) 830s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 830s 830s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 830s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 830s 830s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0xe96cda50> 830s 830s @pytest.mark.xfail(reason="Not Implemented") 830s def test_note_sanity(self): 830s > super().test_note_sanity() 830s 830s tests/translate/storage/test_subtitles.py:13: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0xe96cda50> 830s 830s def test_note_sanity(self): 830s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 830s unit = self.unit 830s 830s unit.addnote("Test note 1", origin="translator") 830s unit.addnote("Test note 2", origin="translator") 830s unit.addnote("Test note 3", origin="translator") 830s expected_notes = "Test note 1\nTest note 2\nTest note 3" 830s actual_notes = unit.getnotes(origin="translator") 830s > assert actual_notes == expected_notes 830s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 830s E 830s E - Test note 1 830s E - Test note 2 830s E - Test note 3 830s 830s tests/translate/storage/test_base.py:180: AssertionError 830s __________________________ TestCount.test_plurals_kde __________________________ 830s 830s self = <tests.translate.tools.test_pocount.TestCount object at 0xe98792d0> 830s 830s @mark.xfail(reason="Support commented out pending removal") 830s def test_plurals_kde(self): 830s """Test that we correcly count old style KDE plurals.""" 830s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 830s 830s tests/translate/tools/test_pocount.py:91: 830s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 830s 830s source = '_n: Singular\\n\nPlural', expectedsource = 2 830s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 830s 830s @staticmethod 830s def count(source, expectedsource, target=None, expectedtarget=None): 830s """Simple helper to check the respective word counts.""" 830s poelement = po.pounit(source) 830s if target is not None: 830s poelement.target = target 830s wordssource, wordstarget = pocount.wordsinunit(poelement) 830s print( 830s 'Source (expected=%d; actual=%d): "%s"' 830s % (expectedsource, wordssource, source) 830s ) 830s > assert wordssource == expectedsource 830s E assert 3 == 2 830s 830s tests/translate/tools/test_pocount.py:33: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s Source (expected=2; actual=3): "_n: Singular\n 830s Plural" 830s _________________________ TestPOMerge.test_escape_tabs _________________________ 830s 830s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0xe9ded510> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_escape_tabs(self): 830s """Ensure that input tabs are escaped in the output, like gettext does.""" 830s # The strings below contains the tab character, not spaces. 830s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 830s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 830s expectedpo = r"""msgid "First\tSecond" 830s msgstr "Eerste\tTweede" 830s """ 830s pofile = self.mergestore(templatepo, mergepo) 830s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 830s > assert bytes(pofile).decode("utf-8") == expectedpo 830s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 830s E 830s E - msgid "First\tSecond" 830s E ? ^^ 830s E + msgid "First Second" 830s E ? ^ 830s E msgstr "Eerste\tTweede" 830s 830s tests/translate/tools/test_pomerge.py:349: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s Expected: 830s msgid "First\tSecond" 830s msgstr "Eerste\tTweede" 830s 830s 830s Merged: 830s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 830s __________________ TestPretranslate.test_merging_msgid_change __________________ 830s 830s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xe9e107c8> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_merging_msgid_change(self): 830s """ 830s tests that if the msgid changes but the location stays the same that 830s we merge. 830s """ 830s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 830s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 830s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 830s newpo = self.pretranslatepo(input_source, template_source) 830s print(bytes(newpo)) 830s > assert bytes(newpo).decode("utf-8") == poexpected 830s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 830s E 830s E #: simple.label 830s E #: simple.accesskey 830s E - #, fuzzy 830s E msgid "Its &hard coding a newline.\n" 830s E - msgstr "&Hart gekoeerde nuwe lyne\n" 830s E + msgstr "" 830s 830s tests/translate/tools/test_pretranslate.py:130: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 830s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 830s 830s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xe9e10b10> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_merging_accelerator_changes(self): 830s """ 830s test that a change in the accelerator localtion still allows 830s merging. 830s """ 830s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 830s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 830s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 830s newpo = self.pretranslatepo(input_source, template_source) 830s print(bytes(newpo)) 830s > assert bytes(newpo).decode("utf-8") == poexpected 830s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 830s E 830s E #: someline.c 830s E msgid "A&bout" 830s E - msgstr "&Info" 830s E ? ----- 830s E + msgstr "" 830s 830s tests/translate/tools/test_pretranslate.py:185: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 830s _________________ TestPretranslate.test_lines_cut_differently __________________ 830s 830s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0xe9e10828> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_lines_cut_differently(self): 830s """ 830s Checks that the correct formatting is preserved when pot an po lines 830s differ. 830s """ 830s input_source = ( 830s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 830s ) 830s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 830s newpo = self.pretranslatepo(input_source, template_source) 830s newpounit = self.singleunit(newpo) 830s > assert str(newpounit) == template_source 830s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 830s E 830s E #: simple.label 830s E - msgid "Line" 830s E + msgid "Line split " 830s E ? +++++++ 830s E - " split differently" 830s E ? ------- 830s E + "differently" 830s E msgstr "Lyne verskillend gesny" 830s 830s tests/translate/tools/test_pretranslate.py:199: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s #: simple.label 830s msgid "Line split " 830s "differently" 830s msgstr "Lyne verskillend gesny" 830s 830s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 830s 830s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xe9e10a38> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_merging_msgid_change(self): 830s """ 830s tests that if the msgid changes but the location stays the same that 830s we merge. 830s """ 830s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 830s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 830s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 830s newpo = self.pretranslatepo(input_source, template_source) 830s print(bytes(newpo)) 830s > assert bytes(newpo).decode("utf-8") == poexpected 830s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 830s E 830s E #: simple.label 830s E #: simple.accesskey 830s E - #, fuzzy 830s E msgid "Its &hard coding a newline.\n" 830s E - msgstr "&Hart gekoeerde nuwe lyne\n" 830s E + msgstr "" 830s 830s tests/translate/tools/test_pretranslate.py:130: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 830s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 830s 830s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xe9e062a0> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_merging_accelerator_changes(self): 830s """ 830s test that a change in the accelerator localtion still allows 830s merging. 830s """ 830s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 830s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 830s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 830s newpo = self.pretranslatepo(input_source, template_source) 830s print(bytes(newpo)) 830s > assert bytes(newpo).decode("utf-8") == poexpected 830s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 830s E 830s E #: someline.c 830s E msgid "A&bout" 830s E - msgstr "&Info" 830s E ? ----- 830s E + msgstr "" 830s 830s tests/translate/tools/test_pretranslate.py:185: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 830s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 830s 830s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0xe9e061b0> 830s 830s @mark.xfail(reason="Not Implemented") 830s def test_lines_cut_differently(self): 830s """ 830s Checks that the correct formatting is preserved when pot an po lines 830s differ. 830s """ 830s input_source = ( 830s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 830s ) 830s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 830s newpo = self.pretranslatepo(input_source, template_source) 830s newpounit = self.singleunit(newpo) 830s > assert str(newpounit) == template_source 830s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 830s E 830s E #: simple.label 830s E - msgid "Line" 830s E + msgid "Line split " 830s E ? +++++++ 830s E - " split differently" 830s E ? ------- 830s E + "differently" 830s E msgstr "Lyne verskillend gesny" 830s 830s tests/translate/tools/test_pretranslate.py:199: AssertionError 830s ----------------------------- Captured stdout call ----------------------------- 830s #: simple.label 830s msgid "Line split " 830s "differently" 830s msgstr "Lyne verskillend gesny" 830s 830s =============================== warnings summary =============================== 830s tests/translate/storage/test_cpo.py:15 830s Warning: 830s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 830s ImportError('gettext PO library not found') 830s In pytest 9.1 this warning will become an error by default. 830s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 830s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 830s 830s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 830s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.fz6MXe/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 830s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 830s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 830s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 830s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 830s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 830s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 830s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 830s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 830s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 830s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 830s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 830s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 830s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 830s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 830s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 830s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 830s Warning: Could not find accesskey for key.accesskey 830s 830s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 830s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 830s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 830s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 830s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 830s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.fz6MXe/autopkgtest_tmp/tests/translate/convert/test.idml'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 830s Warning: unclosed file <_io.BufferedReader name='translation.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 830s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 830s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 830s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 830s Warning: Could not find accesskey for prop.accesskey 830s 830s tests/translate/convert/test_po2tmx.py: 26 warnings 830s tests/translate/filters/test_pofilter.py: 13 warnings 830s tests/translate/storage/test_tbx.py: 17 warnings 830s tests/translate/storage/test_tmx.py: 24 warnings 830s 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' 830s 830s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 830s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 830s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 830s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 830s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 830s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 830s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 830s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 830s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 830s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 830s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 830s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 830s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 830s Enable tracemalloc to get traceback where the object was allocated. 830s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 830s 831s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 831s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.fz6MXe/autopkgtest_tmp/tests/translate/convert/test.odt'> 831s Enable tracemalloc to get traceback where the object was allocated. 831s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 831s 831s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 831s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 831s Enable tracemalloc to get traceback where the object was allocated. 831s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 831s 831s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 831s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 831s Enable tracemalloc to get traceback where the object was allocated. 831s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 831s 831s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 831s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 831s Enable tracemalloc to get traceback where the object was allocated. 831s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 831s 831s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 831s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 831s Enable tracemalloc to get traceback where the object was allocated. 831s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 831s 831s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 831s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 831s 831s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 831s Warning: DTD file '' does not validate 831s 831s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 831s --------------------------- snapshot report summary ---------------------------- 831s 23 snapshots passed. 831s =========================== short test summary info ============================ 831s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 831s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 831s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 831s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 831s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 831s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 831s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 831s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 831s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 831s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 831s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 831s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 831s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 831s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 831s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 831s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 831s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 831s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 831s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 831s 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. 831s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 831s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 831s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 831s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 831s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 831s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 831s 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 831s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 831s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 831s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 831s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 831s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 831s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 831s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 831s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 831s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 831s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 831s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 831s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 831s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 831s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 831s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 831s ========== 3273 passed, 3 skipped, 39 xfailed, 127 warnings in 43.78s ========== 855s autopkgtest [04:17:20]: test python3-translate-commands: -----------------------] 867s python3-translate-commands PASS 867s autopkgtest [04:17:32]: test python3-translate-commands: - - - - - - - - - - results - - - - - - - - - - 870s autopkgtest [04:17:35]: @@@@@@@@@@@@@@@@@@@@ summary 870s translate-toolkit PASS 870s python3-translate PASS 870s python3-translate-commands PASS