0s autopkgtest [03:00:35]: starting date and time: 2024-06-08 03:00:35+0000 0s autopkgtest [03:00:35]: git checkout: 433ed4cb Merge branch 'skia/nova_flock' into 'ubuntu/5.34+prod' 0s autopkgtest [03:00:35]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.zhzafpnk/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:pytest,src:astropy --apt-upgrade translate-toolkit --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=pytest/8.2.2-1ubuntu1 astropy/6.0.1-4' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@bos01-s390x-9.secgroup --name adt-oracular-s390x-translate-toolkit-20240608-030035-juju-7f2275-prod-proposed-migration-environment-2-098217ce-7a24-451a-a62a-720bfe74ddd7 --image adt/ubuntu-oracular-s390x-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-proposed-migration -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://us.ports.ubuntu.com/ubuntu-ports/ 126s autopkgtest [03:02:41]: testbed dpkg architecture: s390x 126s autopkgtest [03:02:41]: testbed apt version: 2.9.3 126s autopkgtest [03:02:41]: @@@@@@@@@@@@@@@@@@@@ test bed setup 127s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 127s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 127s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2864 B] 127s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [333 kB] 127s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 127s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main s390x Packages [47.8 kB] 127s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted s390x Packages [1860 B] 127s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe s390x Packages [258 kB] 127s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse s390x Packages [1768 B] 127s Fetched 808 kB in 1s (931 kB/s) 128s Reading package lists... 130s Reading package lists... 130s Building dependency tree... 130s Reading state information... 131s Calculating upgrade... 131s The following packages will be upgraded: 131s debianutils libheif-plugin-aomdec libheif-plugin-aomenc 131s libheif-plugin-libde265 libheif1 libnetplan1 liburcu8t64 netplan-generator 131s netplan.io python3-netplan 131s 10 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 131s Need to get 758 kB of archives. 131s After this operation, 48.1 kB disk space will be freed. 131s Get:1 http://ftpmaster.internal/ubuntu oracular/main s390x debianutils s390x 5.18 [90.2 kB] 131s Get:2 http://ftpmaster.internal/ubuntu oracular/main s390x netplan-generator s390x 1.0-3ubuntu1 [59.2 kB] 131s Get:3 http://ftpmaster.internal/ubuntu oracular/main s390x python3-netplan s390x 1.0-3ubuntu1 [22.9 kB] 131s Get:4 http://ftpmaster.internal/ubuntu oracular/main s390x netplan.io s390x 1.0-3ubuntu1 [65.8 kB] 131s Get:5 http://ftpmaster.internal/ubuntu oracular/main s390x libnetplan1 s390x 1.0-3ubuntu1 [125 kB] 131s Get:6 http://ftpmaster.internal/ubuntu oracular/main s390x libheif-plugin-aomdec s390x 1.17.6-3 [10.1 kB] 131s Get:7 http://ftpmaster.internal/ubuntu oracular/main s390x libheif-plugin-aomenc s390x 1.17.6-3 [15.1 kB] 131s Get:8 http://ftpmaster.internal/ubuntu oracular/main s390x libheif1 s390x 1.17.6-3 [295 kB] 131s Get:9 http://ftpmaster.internal/ubuntu oracular/main s390x libheif-plugin-libde265 s390x 1.17.6-3 [8172 B] 131s Get:10 http://ftpmaster.internal/ubuntu oracular/main s390x liburcu8t64 s390x 0.14.0-4 [66.5 kB] 132s Fetched 758 kB in 0s (1521 kB/s) 132s (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 ... 54607 files and directories currently installed.) 132s Preparing to unpack .../debianutils_5.18_s390x.deb ... 132s Unpacking debianutils (5.18) over (5.17build1) ... 132s Setting up debianutils (5.18) ... 132s (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 ... 54607 files and directories currently installed.) 132s Preparing to unpack .../0-netplan-generator_1.0-3ubuntu1_s390x.deb ... 132s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 132s Unpacking netplan-generator (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 132s Preparing to unpack .../1-python3-netplan_1.0-3ubuntu1_s390x.deb ... 132s Unpacking python3-netplan (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 132s Preparing to unpack .../2-netplan.io_1.0-3ubuntu1_s390x.deb ... 132s Unpacking netplan.io (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 132s Preparing to unpack .../3-libnetplan1_1.0-3ubuntu1_s390x.deb ... 132s Unpacking libnetplan1:s390x (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 132s Preparing to unpack .../4-libheif-plugin-aomdec_1.17.6-3_s390x.deb ... 132s Unpacking libheif-plugin-aomdec:s390x (1.17.6-3) over (1.17.6-1ubuntu4) ... 132s Preparing to unpack .../5-libheif-plugin-aomenc_1.17.6-3_s390x.deb ... 132s Unpacking libheif-plugin-aomenc:s390x (1.17.6-3) over (1.17.6-1ubuntu4) ... 132s Preparing to unpack .../6-libheif1_1.17.6-3_s390x.deb ... 132s Unpacking libheif1:s390x (1.17.6-3) over (1.17.6-1ubuntu4) ... 132s Preparing to unpack .../7-libheif-plugin-libde265_1.17.6-3_s390x.deb ... 132s Unpacking libheif-plugin-libde265:s390x (1.17.6-3) over (1.17.6-1ubuntu4) ... 133s Preparing to unpack .../8-liburcu8t64_0.14.0-4_s390x.deb ... 133s Unpacking liburcu8t64:s390x (0.14.0-4) over (0.14.0-3.1build1) ... 133s Setting up liburcu8t64:s390x (0.14.0-4) ... 133s Setting up libnetplan1:s390x (1.0-3ubuntu1) ... 133s Setting up python3-netplan (1.0-3ubuntu1) ... 133s Setting up netplan-generator (1.0-3ubuntu1) ... 133s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 133s Setting up netplan.io (1.0-3ubuntu1) ... 133s Setting up libheif-plugin-aomdec:s390x (1.17.6-3) ... 133s Setting up libheif-plugin-libde265:s390x (1.17.6-3) ... 133s Setting up libheif1:s390x (1.17.6-3) ... 133s Setting up libheif-plugin-aomenc:s390x (1.17.6-3) ... 133s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 133s Processing triggers for man-db (2.12.1-1) ... 135s Processing triggers for dbus (1.14.10-4ubuntu4) ... 135s Reading package lists... 135s Building dependency tree... 135s Reading state information... 136s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 136s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 136s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 136s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 136s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 138s Reading package lists... 138s Reading package lists... 139s Building dependency tree... 139s Reading state information... 139s Calculating upgrade... 139s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 139s Reading package lists... 140s Building dependency tree... 140s Reading state information... 140s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 143s autopkgtest [03:02:58]: testbed running kernel: Linux 6.8.0-31-generic #31-Ubuntu SMP Sat Apr 20 00:14:26 UTC 2024 143s autopkgtest [03:02:58]: @@@@@@@@@@@@@@@@@@@@ apt-source translate-toolkit 146s Get:1 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (dsc) [3172 B] 146s Get:2 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (tar) [1203 kB] 146s Get:3 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (diff) [24.4 kB] 146s gpgv: Signature made Wed Apr 10 14:04:46 2024 UTC 146s gpgv: using RSA key A62D2CFBD50B9B5BF360D54B159EB5C4EFC8774C 146s gpgv: Can't check signature: No public key 146s dpkg-source: warning: cannot verify inline signature for ./translate-toolkit_3.12.2-1ubuntu1.dsc: no acceptable signature found 146s autopkgtest [03:03:01]: testing package translate-toolkit version 3.12.2-1ubuntu1 147s autopkgtest [03:03:02]: build not needed 149s autopkgtest [03:03:04]: test translate-toolkit: preparing testbed 150s Reading package lists... 150s Building dependency tree... 150s Reading state information... 151s Starting pkgProblemResolver with broken count: 0 151s Starting 2 pkgProblemResolver with broken count: 0 151s Done 151s The following additional packages will be installed: 151s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 151s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 151s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 151s python3-aeidon python3-bs4 python3-cheroot python3-dateutil 151s python3-diff-match-patch python3-enchant python3-iniparse 151s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 151s python3-more-itertools python3-phply python3-ply python3-pycountry 151s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 151s python3-simplejson python3-soupsieve python3-translate python3-vobject 151s python3-xapian subversion translate-toolkit 151s Suggested packages: 151s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 151s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 151s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 151s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 151s db5.3-util libapache2-mod-svn subversion-tools 151s Recommended packages: 151s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 151s python3-cssselect python3-html5lib python3-tz translate-toolkit-doc 151s The following NEW packages will be installed: 151s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 151s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 151s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 151s libxslt1.1 python3-aeidon python3-bs4 python3-cheroot python3-dateutil 151s python3-diff-match-patch python3-enchant python3-iniparse 151s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 151s python3-more-itertools python3-phply python3-ply python3-pycountry 151s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 151s python3-simplejson python3-soupsieve python3-translate python3-vobject 151s python3-xapian subversion translate-toolkit 151s 0 upgraded, 42 newly installed, 0 to remove and 0 not upgraded. 151s Need to get 10.9 MB/10.9 MB of archives. 151s After this operation, 46.3 MB of additional disk space will be used. 151s Get:1 /tmp/autopkgtest.ZSvJAW/1-autopkgtest-satdep.deb autopkgtest-satdep s390x 0 [868 B] 151s Get:2 http://ftpmaster.internal/ubuntu oracular/main s390x emacsen-common all 3.0.5 [12.1 kB] 152s Get:3 http://ftpmaster.internal/ubuntu oracular/main s390x dictionaries-common all 1.29.7 [188 kB] 152s Get:4 http://ftpmaster.internal/ubuntu oracular/main s390x libgomp1 s390x 14.1.0-1ubuntu1 [151 kB] 152s Get:5 http://ftpmaster.internal/ubuntu oracular/main s390x gettext s390x 0.21-14ubuntu2 [915 kB] 152s Get:6 http://ftpmaster.internal/ubuntu oracular/main s390x hunspell-en-us all 1:2020.12.07-2 [280 kB] 152s Get:7 http://ftpmaster.internal/ubuntu oracular/main s390x libapr1t64 s390x 1.7.2-3.2 [113 kB] 152s Get:8 http://ftpmaster.internal/ubuntu oracular/main s390x libaprutil1t64 s390x 1.6.3-1.1ubuntu7 [99.6 kB] 152s Get:9 http://ftpmaster.internal/ubuntu oracular/main s390x libaspell15 s390x 0.60.8.1-1build1 [352 kB] 152s Get:10 http://ftpmaster.internal/ubuntu oracular/main s390x libhunspell-1.7-0 s390x 1.7.2+really1.7.2-10build3 [304 kB] 152s Get:11 http://ftpmaster.internal/ubuntu oracular/main s390x libenchant-2-2 s390x 2.3.3-2build2 [54.5 kB] 152s Get:12 http://ftpmaster.internal/ubuntu oracular/main s390x libexttextcat-data all 3.4.7-1build1 [193 kB] 152s Get:13 http://ftpmaster.internal/ubuntu oracular/universe s390x libserf-1-1 s390x 1.3.10-2 [49.7 kB] 152s Get:14 http://ftpmaster.internal/ubuntu oracular/universe s390x libutf8proc3 s390x 2.9.0-1build1 [71.1 kB] 152s Get:15 http://ftpmaster.internal/ubuntu oracular/universe s390x libsvn1 s390x 1.14.3-1build4 [1391 kB] 152s Get:16 http://ftpmaster.internal/ubuntu oracular/universe s390x libxapian30 s390x 1.4.22-1build1 [733 kB] 152s Get:17 http://ftpmaster.internal/ubuntu oracular/main s390x libxslt1.1 s390x 1.1.39-0exp1build1 [170 kB] 152s Get:18 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-aeidon all 1.11-2 [221 kB] 152s Get:19 http://ftpmaster.internal/ubuntu oracular/main s390x python3-soupsieve all 2.5-1 [33.0 kB] 152s Get:20 http://ftpmaster.internal/ubuntu oracular/main s390x python3-bs4 all 4.12.3-1 [109 kB] 152s Get:21 http://ftpmaster.internal/ubuntu oracular/main s390x python3-more-itertools all 10.2.0-1 [52.9 kB] 152s Get:22 http://ftpmaster.internal/ubuntu oracular/main s390x python3-jaraco.functools all 4.0.0-1 [10.7 kB] 152s Get:23 http://ftpmaster.internal/ubuntu oracular/main s390x python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 152s Get:24 http://ftpmaster.internal/ubuntu oracular/main s390x python3-dateutil all 2.9.0-2 [80.3 kB] 152s Get:25 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-diff-match-patch all 20230430-1 [33.1 kB] 152s Get:26 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-enchant all 3.2.2-1 [34.0 kB] 152s Get:27 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-rapidfuzz s390x 3.6.2+ds-3 [1484 kB] 152s Get:28 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-levenshtein s390x 0.25.1-3 [186 kB] 152s Get:29 http://ftpmaster.internal/ubuntu oracular/main s390x python3-lxml s390x 5.2.1-1 [1300 kB] 152s Get:30 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-mistletoe all 1.3.0-1 [38.0 kB] 152s Get:31 http://ftpmaster.internal/ubuntu oracular/main s390x python3-ply all 3.11-6 [46.5 kB] 152s Get:32 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-phply all 1.2.6-1 [50.5 kB] 152s Get:33 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-ruamel.yaml.clib s390x 0.2.8-1build1 [142 kB] 152s Get:34 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 152s Get:35 http://ftpmaster.internal/ubuntu oracular/main s390x python3-simplejson s390x 3.19.2-1build2 [55.2 kB] 152s Get:36 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-translate all 3.12.2-1ubuntu1 [318 kB] 152s Get:37 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-vobject all 0.9.6.1-2 [40.6 kB] 152s Get:38 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-xapian s390x 1.4.22-1build5 [366 kB] 152s Get:39 http://ftpmaster.internal/ubuntu oracular/universe s390x subversion s390x 1.14.3-1build4 [912 kB] 152s Get:40 http://ftpmaster.internal/ubuntu oracular/universe s390x translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 152s Get:41 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-iniparse all 0.5-2 [20.0 kB] 152s Get:42 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 153s Preconfiguring packages ... 153s Fetched 10.9 MB in 1s (9188 kB/s) 153s Selecting previously unselected package emacsen-common. 153s (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 ... 54607 files and directories currently installed.) 153s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 153s Unpacking emacsen-common (3.0.5) ... 153s Selecting previously unselected package dictionaries-common. 153s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 153s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 153s Unpacking dictionaries-common (1.29.7) ... 153s Selecting previously unselected package libgomp1:s390x. 153s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_s390x.deb ... 153s Unpacking libgomp1:s390x (14.1.0-1ubuntu1) ... 153s Selecting previously unselected package gettext. 153s Preparing to unpack .../03-gettext_0.21-14ubuntu2_s390x.deb ... 153s Unpacking gettext (0.21-14ubuntu2) ... 153s Selecting previously unselected package hunspell-en-us. 153s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 153s Unpacking hunspell-en-us (1:2020.12.07-2) ... 153s Selecting previously unselected package libapr1t64:s390x. 153s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_s390x.deb ... 153s Unpacking libapr1t64:s390x (1.7.2-3.2) ... 153s Selecting previously unselected package libaprutil1t64:s390x. 153s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_s390x.deb ... 153s Unpacking libaprutil1t64:s390x (1.6.3-1.1ubuntu7) ... 153s Selecting previously unselected package libaspell15:s390x. 153s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_s390x.deb ... 153s Unpacking libaspell15:s390x (0.60.8.1-1build1) ... 153s Selecting previously unselected package libhunspell-1.7-0:s390x. 153s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_s390x.deb ... 153s Unpacking libhunspell-1.7-0:s390x (1.7.2+really1.7.2-10build3) ... 153s Selecting previously unselected package libenchant-2-2:s390x. 153s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_s390x.deb ... 153s Unpacking libenchant-2-2:s390x (2.3.3-2build2) ... 153s Selecting previously unselected package libexttextcat-data. 153s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 153s Unpacking libexttextcat-data (3.4.7-1build1) ... 154s Selecting previously unselected package libserf-1-1:s390x. 154s Preparing to unpack .../11-libserf-1-1_1.3.10-2_s390x.deb ... 154s Unpacking libserf-1-1:s390x (1.3.10-2) ... 154s Selecting previously unselected package libutf8proc3:s390x. 154s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_s390x.deb ... 154s Unpacking libutf8proc3:s390x (2.9.0-1build1) ... 154s Selecting previously unselected package libsvn1:s390x. 154s Preparing to unpack .../13-libsvn1_1.14.3-1build4_s390x.deb ... 154s Unpacking libsvn1:s390x (1.14.3-1build4) ... 154s Selecting previously unselected package libxapian30:s390x. 154s Preparing to unpack .../14-libxapian30_1.4.22-1build1_s390x.deb ... 154s Unpacking libxapian30:s390x (1.4.22-1build1) ... 154s Selecting previously unselected package libxslt1.1:s390x. 154s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_s390x.deb ... 154s Unpacking libxslt1.1:s390x (1.1.39-0exp1build1) ... 154s Selecting previously unselected package python3-aeidon. 154s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 154s Unpacking python3-aeidon (1.11-2) ... 154s Selecting previously unselected package python3-soupsieve. 154s Preparing to unpack .../17-python3-soupsieve_2.5-1_all.deb ... 154s Unpacking python3-soupsieve (2.5-1) ... 154s Selecting previously unselected package python3-bs4. 154s Preparing to unpack .../18-python3-bs4_4.12.3-1_all.deb ... 154s Unpacking python3-bs4 (4.12.3-1) ... 154s Selecting previously unselected package python3-more-itertools. 154s Preparing to unpack .../19-python3-more-itertools_10.2.0-1_all.deb ... 154s Unpacking python3-more-itertools (10.2.0-1) ... 154s Selecting previously unselected package python3-jaraco.functools. 154s Preparing to unpack .../20-python3-jaraco.functools_4.0.0-1_all.deb ... 154s Unpacking python3-jaraco.functools (4.0.0-1) ... 154s Selecting previously unselected package python3-cheroot. 154s Preparing to unpack .../21-python3-cheroot_10.0.0+ds1-2_all.deb ... 154s Unpacking python3-cheroot (10.0.0+ds1-2) ... 154s Selecting previously unselected package python3-dateutil. 154s Preparing to unpack .../22-python3-dateutil_2.9.0-2_all.deb ... 154s Unpacking python3-dateutil (2.9.0-2) ... 154s Selecting previously unselected package python3-diff-match-patch. 154s Preparing to unpack .../23-python3-diff-match-patch_20230430-1_all.deb ... 154s Unpacking python3-diff-match-patch (20230430-1) ... 154s Selecting previously unselected package python3-enchant. 154s Preparing to unpack .../24-python3-enchant_3.2.2-1_all.deb ... 154s Unpacking python3-enchant (3.2.2-1) ... 154s Selecting previously unselected package python3-rapidfuzz. 154s Preparing to unpack .../25-python3-rapidfuzz_3.6.2+ds-3_s390x.deb ... 154s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 154s Selecting previously unselected package python3-levenshtein. 154s Preparing to unpack .../26-python3-levenshtein_0.25.1-3_s390x.deb ... 154s Unpacking python3-levenshtein (0.25.1-3) ... 154s Selecting previously unselected package python3-lxml:s390x. 154s Preparing to unpack .../27-python3-lxml_5.2.1-1_s390x.deb ... 154s Unpacking python3-lxml:s390x (5.2.1-1) ... 154s Selecting previously unselected package python3-mistletoe. 154s Preparing to unpack .../28-python3-mistletoe_1.3.0-1_all.deb ... 154s Unpacking python3-mistletoe (1.3.0-1) ... 154s Selecting previously unselected package python3-ply. 154s Preparing to unpack .../29-python3-ply_3.11-6_all.deb ... 154s Unpacking python3-ply (3.11-6) ... 154s Selecting previously unselected package python3-phply. 154s Preparing to unpack .../30-python3-phply_1.2.6-1_all.deb ... 154s Unpacking python3-phply (1.2.6-1) ... 154s Selecting previously unselected package python3-ruamel.yaml.clib:s390x. 154s Preparing to unpack .../31-python3-ruamel.yaml.clib_0.2.8-1build1_s390x.deb ... 154s Unpacking python3-ruamel.yaml.clib:s390x (0.2.8-1build1) ... 154s Selecting previously unselected package python3-ruamel.yaml. 154s Preparing to unpack .../32-python3-ruamel.yaml_0.17.21-1_all.deb ... 154s Unpacking python3-ruamel.yaml (0.17.21-1) ... 154s Selecting previously unselected package python3-simplejson. 154s Preparing to unpack .../33-python3-simplejson_3.19.2-1build2_s390x.deb ... 154s Unpacking python3-simplejson (3.19.2-1build2) ... 154s Selecting previously unselected package python3-translate. 154s Preparing to unpack .../34-python3-translate_3.12.2-1ubuntu1_all.deb ... 154s Unpacking python3-translate (3.12.2-1ubuntu1) ... 155s Selecting previously unselected package python3-vobject. 155s Preparing to unpack .../35-python3-vobject_0.9.6.1-2_all.deb ... 155s Unpacking python3-vobject (0.9.6.1-2) ... 155s Selecting previously unselected package python3-xapian. 155s Preparing to unpack .../36-python3-xapian_1.4.22-1build5_s390x.deb ... 155s Unpacking python3-xapian (1.4.22-1build5) ... 155s Selecting previously unselected package subversion. 155s Preparing to unpack .../37-subversion_1.14.3-1build4_s390x.deb ... 155s Unpacking subversion (1.14.3-1build4) ... 155s Selecting previously unselected package translate-toolkit. 155s Preparing to unpack .../38-translate-toolkit_3.12.2-1ubuntu1_all.deb ... 155s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 155s Selecting previously unselected package python3-iniparse. 155s Preparing to unpack .../39-python3-iniparse_0.5-2_all.deb ... 155s Unpacking python3-iniparse (0.5-2) ... 155s Selecting previously unselected package python3-pycountry. 155s Preparing to unpack .../40-python3-pycountry_23.12.11+ds1-2_all.deb ... 155s Unpacking python3-pycountry (23.12.11+ds1-2) ... 155s Selecting previously unselected package autopkgtest-satdep. 155s Preparing to unpack .../41-1-autopkgtest-satdep.deb ... 155s Unpacking autopkgtest-satdep (0) ... 155s Setting up python3-more-itertools (10.2.0-1) ... 156s Setting up libxapian30:s390x (1.4.22-1build1) ... 156s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 156s Setting up python3-diff-match-patch (20230430-1) ... 156s Setting up python3-jaraco.functools (4.0.0-1) ... 157s Setting up python3-aeidon (1.11-2) ... 157s Setting up libutf8proc3:s390x (2.9.0-1build1) ... 157s Setting up libaspell15:s390x (0.60.8.1-1build1) ... 157s Setting up python3-ply (3.11-6) ... 157s Setting up python3-ruamel.yaml.clib:s390x (0.2.8-1build1) ... 157s Setting up libgomp1:s390x (14.1.0-1ubuntu1) ... 157s Setting up python3-simplejson (3.19.2-1build2) ... 157s Setting up emacsen-common (3.0.5) ... 157s Setting up python3-cheroot (10.0.0+ds1-2) ... 158s Setting up python3-pycountry (23.12.11+ds1-2) ... 158s Setting up python3-xapian (1.4.22-1build5) ... 158s Setting up python3-ruamel.yaml (0.17.21-1) ... 159s Setting up python3-mistletoe (1.3.0-1) ... 159s Setting up libexttextcat-data (3.4.7-1build1) ... 159s Setting up libapr1t64:s390x (1.7.2-3.2) ... 159s Setting up libxslt1.1:s390x (1.1.39-0exp1build1) ... 159s Setting up python3-dateutil (2.9.0-2) ... 159s Setting up python3-levenshtein (0.25.1-3) ... 160s Setting up libhunspell-1.7-0:s390x (1.7.2+really1.7.2-10build3) ... 160s Setting up python3-soupsieve (2.5-1) ... 160s Setting up python3-iniparse (0.5-2) ... 160s Setting up libaprutil1t64:s390x (1.6.3-1.1ubuntu7) ... 160s Setting up python3-vobject (0.9.6.1-2) ... 161s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 161s patterns['name'] = '[a-zA-Z0-9\-_]+' 161s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 161s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 161s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 161s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 161s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 161s """ 161s Setting up gettext (0.21-14ubuntu2) ... 161s Setting up python3-phply (1.2.6-1) ... 161s Setting up dictionaries-common (1.29.7) ... 162s Setting up libserf-1-1:s390x (1.3.10-2) ... 162s Setting up python3-bs4 (4.12.3-1) ... 162s Setting up python3-lxml:s390x (5.2.1-1) ... 162s Setting up hunspell-en-us (1:2020.12.07-2) ... 162s Setting up libsvn1:s390x (1.14.3-1build4) ... 163s Setting up libenchant-2-2:s390x (2.3.3-2build2) ... 163s Setting up subversion (1.14.3-1build4) ... 163s Setting up python3-enchant (3.2.2-1) ... 163s Setting up python3-translate (3.12.2-1ubuntu1) ... 164s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 164s Setting up autopkgtest-satdep (0) ... 164s Processing triggers for man-db (2.12.1-1) ... 165s Processing triggers for install-info (7.1-3build2) ... 165s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 165s Processing triggers for dictionaries-common (1.29.7) ... 170s (Reading database ... 58035 files and directories currently installed.) 170s Removing autopkgtest-satdep (0) ... 171s autopkgtest [03:03:26]: test translate-toolkit: [----------------------- 171s ========= SMOKE TEST: /usr/bin/android2po =========== 171s Usage: android2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 171s 171s Convert Android string files to Gettext PO localization files. See: 171s http://docs.translatehouse.org/projects/translate- 171s toolkit/en/latest/commands/android2po.html for examples and usage 171s instructions. 171s 171s Options: 171s --version show program's version number and exit 171s -h, --help show this help message and exit 171s --manpage output a manpage based on the help 171s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 171s --errorlevel=ERRORLEVEL 171s show errorlevel as: none, message, exception, 171s traceback 171s -i INPUT, --input=INPUT 171s read from INPUT in xml format 171s -x EXCLUDE, --exclude=EXCLUDE 171s exclude names matching EXCLUDE from input paths 171s -o OUTPUT, --output=OUTPUT 171s write to OUTPUT in po, pot formats 171s -t TEMPLATE, --template=TEMPLATE 171s read from TEMPLATE in xml format 171s -S, --timestamp skip conversion if the output file has newer timestamp 171s --duplicates=DUPLICATESTYLE 171s what to do with duplicate strings (identical source 171s text): merge, msgctxt (default: 'msgctxt') 171s ========= SMOKE TEST: /usr/bin/build_tmdb =========== 171s usage: build_tmdb [-h] [-d TMDB_FILE] [-s SOURCE_LANG] -t TARGET_LANG 171s input files [input files ...] 171s 171s positional arguments: 171s input files 171s 171s options: 171s -h, --help show this help message and exit 171s -d TMDB_FILE, --tmdb TMDB_FILE 171s translation memory database file (default: tm.db) 171s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 171s source language of translation files (default: en) 171s -t TARGET_LANG, --import-target-lang TARGET_LANG 171s target language of translation files 171s ========= SMOKE TEST: /usr/bin/buildxpi =========== 171s usage: Usage: buildxpi.py [] [ ...] 171s 171s positional arguments: 171s langs 171s 171s options: 171s -h, --help show this help message and exit 171s -L L10NBASE, --l10n-base L10NBASE 171s The directory containing the subdirectory. 171s -o OUTPUTDIR, --output-dir OUTPUTDIR 171s The directory to copy the built XPI to (default: 171s current directory). 171s -p MOZPRODUCT, --mozproduct MOZPRODUCT 171s The Mozilla product name (default: "browser"). 171s -s SRCDIR, --src SRCDIR 171s The directory containing the Mozilla l10n sources. 171s -d, --delete-dest Delete output XPI if it already exists. 171s -v, --verbose Be more noisy 171s --soft-max-version Override a fixed max version with one to cover the 171s whole cycle e.g. 24.0a1 becomes 24.0.* 172s ========= SMOKE TEST: /usr/bin/csv2po =========== 172s 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] 172s 172s Convert Comma-Separated Value (.csv) files to Gettext PO localization files. 172s See: http://docs.translatehouse.org/projects/translate- 172s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in csv format 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in po, pot formats 172s -t TEMPLATE, --template=TEMPLATE 172s read from TEMPLATE in po, pot, pot formats 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s -P, --pot output PO Templates (.pot) rather than PO files (.po) 172s --charset=CHARSET set charset to decode from csv files 172s --columnorder=COLUMNORDER 172s specify the order and position of columns 172s (location,source,target) 172s --duplicates=DUPLICATESTYLE 172s what to do with duplicate strings (identical source 172s text): merge, msgctxt (default: 'msgctxt') 172s ========= SMOKE TEST: /usr/bin/csv2tbx =========== 172s Usage: csv2tbx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 172s 172s Convert Comma-Separated Value (.csv) files to a TermBase eXchange (.tbx) 172s glossary file. See: http://docs.translatehouse.org/projects/translate- 172s toolkit/en/latest/commands/csv2tbx.html for examples and usage instructions 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in csv format 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in tbx format 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s --charset=CHARSET set charset to decode from csv files 172s --columnorder=COLUMNORDER 172s specify the order and position of columns 172s (comment,source,target) 172s ========= SMOKE TEST: /usr/bin/dtd2po =========== 172s 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] 172s 172s Convert a Mozilla .dtd UTF-8 localization format to a Gettext PO localization 172s file. Uses the po and dtd modules, and the dtd2po convertor class which is in 172s this module You can convert back to .dtd using po2dtd.py. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in dtd format 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in po, pot formats 172s -t TEMPLATE, --template=TEMPLATE 172s read from TEMPLATE in dtd format 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s -P, --pot output PO Templates (.pot) rather than PO files (.po) 172s --duplicates=DUPLICATESTYLE 172s what to do with duplicate strings (identical source 172s text): merge, msgctxt (default: 'msgctxt') 172s ========= SMOKE TEST: /usr/bin/flatxml2po =========== 172s Usage: flatxml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 172s 172s Convert flat XML files to Gettext PO localization files. See: 172s http://docs.translatehouse.org/projects/translate- 172s toolkit/en/latest/commands/flatxml2po.html for examples and usage 172s instructions. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in xml format 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in po, pot formats 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s -r ROOT, --root=ROOT name of the XML root element (default: "root") 172s -v VALUE, --value=VALUE 172s name of the XML value element (default: "str") 172s -k KEY, --key=KEY name of the XML key attribute (default: "key") 172s -n NS, --namespace=NS 172s XML namespace uri (default: None) 173s ========= SMOKE TEST: /usr/bin/get_moz_enUS =========== 173s usage: get_moz_enUS [-h] [-s SRCDIR] [-d DESTDIR] [-p MOZPRODUCT] 173s [--delete-dest] [-v] 173s 173s options: 173s -h, --help show this help message and exit 173s -s SRCDIR, --src SRCDIR 173s The directory containing the Mozilla l10n sources. 173s -d DESTDIR, --dest DESTDIR 173s The destination directory to copy the en-US locale 173s files to. 173s -p MOZPRODUCT, --mozproduct MOZPRODUCT 173s The Mozilla product name. 173s --delete-dest Delete the destination directory (if it exists). 173s -v, --verbose Be more noisy 173s ========= SMOKE TEST: /usr/bin/html2po =========== 173s Usage: html2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 173s 173s Convert HTML files to Gettext PO localization files. See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 173s 173s Options: 173s --version show program's version number and exit 173s -h, --help show this help message and exit 173s --manpage output a manpage based on the help 173s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 173s --errorlevel=ERRORLEVEL 173s show errorlevel as: none, message, exception, 173s traceback 173s -i INPUT, --input=INPUT 173s read from INPUT in htm, html, xhtml formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in po, pot formats 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s -P, --pot output PO Templates (.pot) rather than PO files (.po) 173s --keepcomments preserve html comments as translation notes in the 173s output 173s --duplicates=DUPLICATESTYLE 173s what to do with duplicate strings (identical source 173s text): merge, msgctxt (default: 'msgctxt') 173s --multifile=MULTIFILESTYLE 173s how to split po/pot files (single, toplevel or 173s onefile) 173s ========= SMOKE TEST: /usr/bin/ical2po =========== 173s 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] 173s 173s Convert iCalendar files to Gettext PO localization files. See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 173s 173s Options: 173s --version show program's version number and exit 173s -h, --help show this help message and exit 173s --manpage output a manpage based on the help 173s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 173s --errorlevel=ERRORLEVEL 173s show errorlevel as: none, message, exception, 173s traceback 173s -i INPUT, --input=INPUT 173s read from INPUT in ics format 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in po, pot formats 173s -t TEMPLATE, --template=TEMPLATE 173s read from TEMPLATE in ics format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s -P, --pot output PO Templates (.pot) rather than PO files (.po) 173s --duplicates=DUPLICATESTYLE 173s what to do with duplicate strings (identical source 173s text): merge, msgctxt (default: 'msgctxt') 173s ========= SMOKE TEST: /usr/bin/idml2po =========== 173s Usage: idml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 173s 173s Convert IDML files to PO localization files. 173s 173s Options: 173s --version show program's version number and exit 173s -h, --help show this help message and exit 173s --manpage output a manpage based on the help 173s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 173s --errorlevel=ERRORLEVEL 173s show errorlevel as: none, message, exception, 173s traceback 173s -i INPUT, --input=INPUT 173s read from INPUT in idml format 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in po, pot formats 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s ========= SMOKE TEST: /usr/bin/ini2po =========== 174s 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] 174s 174s Convert .ini files to Gettext PO localization files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 174s 174s Options: 174s --version show program's version number and exit 174s -h, --help show this help message and exit 174s --manpage output a manpage based on the help 174s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 174s --errorlevel=ERRORLEVEL 174s show errorlevel as: none, message, exception, 174s traceback 174s -i INPUT, --input=INPUT 174s read from INPUT in ini, isl, iss formats 174s -x EXCLUDE, --exclude=EXCLUDE 174s exclude names matching EXCLUDE from input paths 174s -o OUTPUT, --output=OUTPUT 174s write to OUTPUT in po, pot formats 174s -t TEMPLATE, --template=TEMPLATE 174s read from TEMPLATE in ini, isl, iss formats 174s -S, --timestamp skip conversion if the output file has newer timestamp 174s -P, --pot output PO Templates (.pot) rather than PO files (.po) 174s --duplicates=DUPLICATESTYLE 174s what to do with duplicate strings (identical source 174s text): merge, msgctxt (default: 'msgctxt') 174s ========= SMOKE TEST: /usr/bin/json2po =========== 174s 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] 174s 174s Convert JSON files to Gettext PO localization files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 174s 174s Options: 174s --version show program's version number and exit 174s -h, --help show this help message and exit 174s --manpage output a manpage based on the help 174s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 174s --errorlevel=ERRORLEVEL 174s show errorlevel as: none, message, exception, 174s traceback 174s -i INPUT, --input=INPUT 174s read from INPUT in json format 174s -x EXCLUDE, --exclude=EXCLUDE 174s exclude names matching EXCLUDE from input paths 174s -o OUTPUT, --output=OUTPUT 174s write to OUTPUT in po, pot formats 174s -t TEMPLATE, --template=TEMPLATE 174s read from TEMPLATE in json format 174s -S, --timestamp skip conversion if the output file has newer timestamp 174s -P, --pot output PO Templates (.pot) rather than PO files (.po) 174s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 174s everything) 174s --duplicates=DUPLICATESTYLE 174s what to do with duplicate strings (identical source 174s text): merge, msgctxt (default: 'msgctxt') 174s ========= SMOKE TEST: /usr/bin/md2po =========== 175s Usage: md2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 175s 175s Convert Markdown files to Gettext PO localization files. See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 175s 175s Options: 175s --version show program's version number and exit 175s -h, --help show this help message and exit 175s --manpage output a manpage based on the help 175s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 175s --errorlevel=ERRORLEVEL 175s show errorlevel as: none, message, exception, 175s traceback 175s -i INPUT, --input=INPUT 175s read from INPUT in markdown, md, text, txt formats 175s -x EXCLUDE, --exclude=EXCLUDE 175s exclude names matching EXCLUDE from input paths 175s -o OUTPUT, --output=OUTPUT 175s write to OUTPUT in po, pot formats 175s -S, --timestamp skip conversion if the output file has newer timestamp 175s -P, --pot output PO Templates (.pot) rather than PO files (.po) 175s --duplicates=DUPLICATESTYLE 175s what to do with duplicate strings (identical source 175s text): merge, msgctxt (default: 'msgctxt') 175s --multifile=MULTIFILESTYLE 175s how to split po/pot files (single, toplevel or 175s onefile) 175s ========= SMOKE TEST: /usr/bin/moz2po =========== 176s 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] 176s 176s Convert Mozilla .dtd and .properties files to Gettext PO localization files. 176s See: http://docs.translatehouse.org/projects/translate- 176s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 176s 176s Options: 176s --version show program's version number and exit 176s -h, --help show this help message and exit 176s --manpage output a manpage based on the help 176s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 176s --errorlevel=ERRORLEVEL 176s show errorlevel as: none, message, exception, 176s traceback 176s -i INPUT, --input=INPUT 176s read from INPUT in *, dtd, inc, ini, it, js, lang, 176s manifest, properties, rdf formats 176s -x EXCLUDE, --exclude=EXCLUDE 176s exclude names matching EXCLUDE from input paths 176s -o OUTPUT, --output=OUTPUT 176s write to OUTPUT in *, dtd.po, dtd.pot, inc.po, 176s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 176s lang.pot, manifest, properties.po, properties.pot, rdf 176s formats 176s -t TEMPLATE, --template=TEMPLATE 176s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 176s manifest, properties, rdf formats 176s -S, --timestamp skip conversion if the output file has newer timestamp 176s -P, --pot output PO Templates (.pot) rather than PO files (.po) 176s --duplicates=DUPLICATESTYLE 176s what to do with duplicate strings (identical source 176s text): merge, msgctxt (default: 'msgctxt') 176s ========= SMOKE TEST: /usr/bin/mozlang2po =========== 176s Usage: mozlang2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 176s 176s Convert Mozilla .lang files to Gettext PO localization files. 176s 176s Options: 176s --version show program's version number and exit 176s -h, --help show this help message and exit 176s --manpage output a manpage based on the help 176s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 176s --errorlevel=ERRORLEVEL 176s show errorlevel as: none, message, exception, 176s traceback 176s -i INPUT, --input=INPUT 176s read from INPUT in lang format 176s -x EXCLUDE, --exclude=EXCLUDE 176s exclude names matching EXCLUDE from input paths 176s -o OUTPUT, --output=OUTPUT 176s write to OUTPUT in po, pot formats 176s -S, --timestamp skip conversion if the output file has newer timestamp 176s -P, --pot output PO Templates (.pot) rather than PO files (.po) 176s --encoding=ENCODING The encoding of the input file (default: UTF-8) 176s --duplicates=DUPLICATESTYLE 176s what to do with duplicate strings (identical source 176s text): merge, msgctxt (default: 'msgctxt') 176s ========= SMOKE TEST: /usr/bin/msghack =========== 176s Usage: /usr/bin/msghack [OPTION] file.po [ref.po] 176s This program can be used to alter .po files in ways no sane mind would think about. 176s -o result will be written to FILE 176s --invert invert a po file by switching msgid and msgstr 176s --master join any number of files in a master-formatted catalog 176s --empty empty the contents of the .po file, creating a .pot 176s --append append entries from ref.po that don't exist in file.po 176s 176s Note: It is just a replacement of msghack for backward support. 176s 176s ========= SMOKE TEST: /usr/bin/odf2xliff =========== 176s Usage: odf2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 176s 176s Convert OpenDocument (ODF) files to XLIFF localization files. See: 176s http://docs.translatehouse.org/projects/translate- 176s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 176s 176s Options: 176s --version show program's version number and exit 176s -h, --help show this help message and exit 176s --manpage output a manpage based on the help 176s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 176s --errorlevel=ERRORLEVEL 176s show errorlevel as: none, message, exception, 176s traceback 176s -i INPUT, --input=INPUT 176s read from INPUT in odc, odf, odg, odi, odm, odp, ods, 176s odt, otc, otf, otg, oth, oti, otp, ots, ott, sxw 176s formats 176s -x EXCLUDE, --exclude=EXCLUDE 176s exclude names matching EXCLUDE from input paths 176s -o OUTPUT, --output=OUTPUT 176s write to OUTPUT in xlf, xliff formats 176s -S, --timestamp skip conversion if the output file has newer timestamp 177s ========= SMOKE TEST: /usr/bin/oo2po =========== 177s Usage: oo2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 177s 177s Convert an OpenOffice.org (SDF) localization file to Gettext PO localization 177s files. See: http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 177s 177s Options: 177s --version show program's version number and exit 177s -h, --help show this help message and exit 177s --manpage output a manpage based on the help 177s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 177s --errorlevel=ERRORLEVEL 177s show errorlevel as: none, message, exception, 177s traceback 177s -i INPUT, --input=INPUT 177s read from INPUT in oo, sdf formats 177s -x EXCLUDE, --exclude=EXCLUDE 177s exclude names matching EXCLUDE from input paths 177s -o OUTPUT, --output=OUTPUT 177s write to OUTPUT in po, pot formats 177s -S, --timestamp skip conversion if the output file has newer timestamp 177s -P, --pot output PO Templates (.pot) rather than PO files (.po) 177s -l LANG, --language=LANG 177s set target language to extract from oo file (e.g. af- 177s ZA) 177s --source-language=LANG 177s set source language code (default en-US) 177s --nonrecursiveinput don't treat the input oo as a recursive store 177s --duplicates=DUPLICATESTYLE 177s what to do with duplicate strings (identical source 177s text): merge, msgctxt (default: 'msgctxt') 177s --multifile=MULTIFILESTYLE 177s how to split po/pot files (single, toplevel or 177s onefile) 177s ========= SMOKE TEST: /usr/bin/oo2xliff =========== 177s Usage: oo2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 177s 177s Convert an OpenOffice.org (SDF) localization file to XLIFF localization 177s files. See: http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 177s 177s Options: 177s --version show program's version number and exit 177s -h, --help show this help message and exit 177s --manpage output a manpage based on the help 177s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 177s --errorlevel=ERRORLEVEL 177s show errorlevel as: none, message, exception, 177s traceback 177s -i INPUT, --input=INPUT 177s read from INPUT in oo, sdf formats 177s -x EXCLUDE, --exclude=EXCLUDE 177s exclude names matching EXCLUDE from input paths 177s -o OUTPUT, --output=OUTPUT 177s write to OUTPUT in xlf, xliff formats 177s -S, --timestamp skip conversion if the output file has newer timestamp 177s -l LANG, --language=LANG 177s set target language to extract from oo file (e.g. af- 177s ZA) 177s --source-language=LANG 177s set source language code (default en-US) 177s --nonrecursiveinput don't treat the input oo as a recursive store 177s --duplicates=DUPLICATESTYLE 177s what to do with duplicate strings (identical source 177s text): merge, msgctxt (default: 'msgctxt') 177s --multifile=MULTIFILESTYLE 177s how to split po/pot files (single, toplevel or 177s onefile) 177s ========= SMOKE TEST: /usr/bin/php2po =========== 177s 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] 177s 177s Convert PHP localization files to Gettext PO localization files. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 177s 177s Options: 177s --version show program's version number and exit 177s -h, --help show this help message and exit 177s --manpage output a manpage based on the help 177s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 177s --errorlevel=ERRORLEVEL 177s show errorlevel as: none, message, exception, 177s traceback 177s -i INPUT, --input=INPUT 177s read from INPUT in html, php formats 177s -x EXCLUDE, --exclude=EXCLUDE 177s exclude names matching EXCLUDE from input paths 177s -o OUTPUT, --output=OUTPUT 177s write to OUTPUT in po, pot formats 177s -t TEMPLATE, --template=TEMPLATE 177s read from TEMPLATE in html, php formats 177s -S, --timestamp skip conversion if the output file has newer timestamp 177s -P, --pot output PO Templates (.pot) rather than PO files (.po) 177s --duplicates=DUPLICATESTYLE 177s what to do with duplicate strings (identical source 177s text): merge, msgctxt (default: 'msgctxt') 178s ========= SMOKE TEST: /usr/bin/phppo2pypo =========== 178s Usage: phppo2pypo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 178s 178s Convert PHP format .po files to Python format .po files. 178s 178s Options: 178s --version show program's version number and exit 178s -h, --help show this help message and exit 178s --manpage output a manpage based on the help 178s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 178s --errorlevel=ERRORLEVEL 178s show errorlevel as: none, message, exception, 178s traceback 178s -i INPUT, --input=INPUT 178s read from INPUT in po, pot formats 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in po, pot formats 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s ========= SMOKE TEST: /usr/bin/po2csv =========== 178s Usage: po2csv [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 178s 178s Convert Gettext PO localization files to Comma-Separated Value (.csv) files. 178s See: http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 178s 178s Options: 178s --version show program's version number and exit 178s -h, --help show this help message and exit 178s --manpage output a manpage based on the help 178s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 178s --errorlevel=ERRORLEVEL 178s show errorlevel as: none, message, exception, 178s traceback 178s -i INPUT, --input=INPUT 178s read from INPUT in po, pot formats 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in csv format 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s --columnorder=COLUMNORDER 178s specify the order and position of columns 178s (location,source,target) 178s ========= SMOKE TEST: /usr/bin/po2dtd =========== 178s Usage: po2dtd [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 178s 178s Converts a Gettext PO file to a UTF-8 encoded Mozilla .dtd file. .. note: 178s Conversion is either done using a template plus PO file or just using the 178s .po file. 178s 178s Options: 178s --version show program's version number and exit 178s -h, --help show this help message and exit 178s --manpage output a manpage based on the help 178s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 178s --errorlevel=ERRORLEVEL 178s show errorlevel as: none, message, exception, 178s traceback 178s -i INPUT, --input=INPUT 178s read from INPUT in po, pot formats 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in dtd format 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in dtd format 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s --threshold=PERCENT only convert files where the translation completion is 178s above PERCENT 178s --fuzzy use translations marked fuzzy 178s --nofuzzy don't use translations marked fuzzy (default) 178s --removeuntranslated remove untranslated strings from output 178s ========= SMOKE TEST: /usr/bin/po2flatxml =========== 178s Usage: po2flatxml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 178s 178s Convert Gettext PO localization files to flat XML files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/flatxml2po.html for examples and usage 178s instructions. 178s 178s Options: 178s --version show program's version number and exit 178s -h, --help show this help message and exit 178s --manpage output a manpage based on the help 178s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 178s --errorlevel=ERRORLEVEL 178s show errorlevel as: none, message, exception, 178s traceback 178s -i INPUT, --input=INPUT 178s read from INPUT in po, pot formats 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in xml format 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in xml format 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s -r ROOT, --root=ROOT name of the XML root element (default: "root") 178s -v VALUE, --value=VALUE 178s name of the XML value element (default: "str") 178s -k KEY, --key=KEY name of the XML key attribute (default: "key") 178s -n NS, --namespace=NS 178s XML namespace uri (default: None) 178s -w INDENT, --indent=INDENT 178s indent width in spaces, 0 for no indent (default: 2) 179s ========= SMOKE TEST: /usr/bin/po2html =========== 179s Usage: po2html [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 179s 179s Translate HTML files using Gettext PO localization files. See: 179s http://docs.translatehouse.org/projects/translate- 179s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 179s 179s Options: 179s --version show program's version number and exit 179s -h, --help show this help message and exit 179s --manpage output a manpage based on the help 179s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 179s --errorlevel=ERRORLEVEL 179s show errorlevel as: none, message, exception, 179s traceback 179s -i INPUT, --input=INPUT 179s read from INPUT in po, pot formats 179s -x EXCLUDE, --exclude=EXCLUDE 179s exclude names matching EXCLUDE from input paths 179s -o OUTPUT, --output=OUTPUT 179s write to OUTPUT in htm, html, xhtml formats 179s -t TEMPLATE, --template=TEMPLATE 179s read from TEMPLATE in htm, html, xhtml formats 179s -S, --timestamp skip conversion if the output file has newer timestamp 179s --threshold=PERCENT only convert files where the translation completion is 179s above PERCENT 179s --fuzzy use translations marked fuzzy 179s --nofuzzy don't use translations marked fuzzy (default) 179s ========= SMOKE TEST: /usr/bin/po2ical =========== 179s Usage: po2ical [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 179s 179s Convert Gettext PO localization files to iCalendar files. See: 179s http://docs.translatehouse.org/projects/translate- 179s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 179s 179s Options: 179s --version show program's version number and exit 179s -h, --help show this help message and exit 179s --manpage output a manpage based on the help 179s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 179s --errorlevel=ERRORLEVEL 179s show errorlevel as: none, message, exception, 179s traceback 179s -i INPUT, --input=INPUT 179s read from INPUT in po, pot formats 179s -x EXCLUDE, --exclude=EXCLUDE 179s exclude names matching EXCLUDE from input paths 179s -o OUTPUT, --output=OUTPUT 179s write to OUTPUT in ics format 179s -t TEMPLATE, --template=TEMPLATE 179s read from TEMPLATE in ics format 179s -S, --timestamp skip conversion if the output file has newer timestamp 179s --threshold=PERCENT only convert files where the translation completion is 179s above PERCENT 179s --fuzzy use translations marked fuzzy 179s --nofuzzy don't use translations marked fuzzy (default) 179s ========= SMOKE TEST: /usr/bin/po2idml =========== 179s Usage: po2idml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 179s 179s Takes an IDML template file and a PO file containing translations of strings 179s in the IDML template. It creates a new IDML file using the translations of the 179s PO file. 179s 179s Options: 179s --version show program's version number and exit 179s -h, --help show this help message and exit 179s --manpage output a manpage based on the help 179s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 179s --errorlevel=ERRORLEVEL 179s show errorlevel as: none, message, exception, 179s traceback 179s -i INPUT, --input=INPUT 179s read from INPUT in po, pot formats 179s -x EXCLUDE, --exclude=EXCLUDE 179s exclude names matching EXCLUDE from input paths 179s -o OUTPUT, --output=OUTPUT 179s write to OUTPUT in idml format 179s -t TEMPLATE, --template=TEMPLATE 179s read from TEMPLATE in idml format 179s -S, --timestamp skip conversion if the output file has newer timestamp 179s ========= SMOKE TEST: /usr/bin/po2ini =========== 180s Usage: po2ini [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 180s 180s Convert Gettext PO localization files to .ini files. See: 180s http://docs.translatehouse.org/projects/translate- 180s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 180s 180s Options: 180s --version show program's version number and exit 180s -h, --help show this help message and exit 180s --manpage output a manpage based on the help 180s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 180s --errorlevel=ERRORLEVEL 180s show errorlevel as: none, message, exception, 180s traceback 180s -i INPUT, --input=INPUT 180s read from INPUT in po, pot formats 180s -x EXCLUDE, --exclude=EXCLUDE 180s exclude names matching EXCLUDE from input paths 180s -o OUTPUT, --output=OUTPUT 180s write to OUTPUT in ini, isl formats 180s -t TEMPLATE, --template=TEMPLATE 180s read from TEMPLATE in ini, isl formats 180s -S, --timestamp skip conversion if the output file has newer timestamp 180s --threshold=PERCENT only convert files where the translation completion is 180s above PERCENT 180s --fuzzy use translations marked fuzzy 180s --nofuzzy don't use translations marked fuzzy (default) 180s ========= SMOKE TEST: /usr/bin/po2json =========== 180s Usage: po2json [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 180s 180s Convert Gettext PO localization files to JSON files. See: 180s http://docs.translatehouse.org/projects/translate- 180s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 180s 180s Options: 180s --version show program's version number and exit 180s -h, --help show this help message and exit 180s --manpage output a manpage based on the help 180s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 180s --errorlevel=ERRORLEVEL 180s show errorlevel as: none, message, exception, 180s traceback 180s -i INPUT, --input=INPUT 180s read from INPUT in po, pot formats 180s -x EXCLUDE, --exclude=EXCLUDE 180s exclude names matching EXCLUDE from input paths 180s -o OUTPUT, --output=OUTPUT 180s write to OUTPUT in json format 180s -t TEMPLATE, --template=TEMPLATE 180s read from TEMPLATE in json format 180s -S, --timestamp skip conversion if the output file has newer timestamp 180s --threshold=PERCENT only convert files where the translation completion is 180s above PERCENT 180s --fuzzy use translations marked fuzzy 180s --nofuzzy don't use translations marked fuzzy (default) 180s --removeuntranslated remove untranslated strings from output 180s ========= SMOKE TEST: /usr/bin/po2md =========== 180s Usage: po2md [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 180s 180s Translate Markdown files using Gettext PO localization files. See: 180s http://docs.translatehouse.org/projects/translate- 180s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 180s 180s Options: 180s --version show program's version number and exit 180s -h, --help show this help message and exit 180s --manpage output a manpage based on the help 180s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 180s --errorlevel=ERRORLEVEL 180s show errorlevel as: none, message, exception, 180s traceback 180s -i INPUT, --input=INPUT 180s read from INPUT in po, pot formats 180s -x EXCLUDE, --exclude=EXCLUDE 180s exclude names matching EXCLUDE from input paths 180s -o OUTPUT, --output=OUTPUT 180s write to OUTPUT in markdown, md, text, txt formats 180s -t TEMPLATE, --template=TEMPLATE 180s read from TEMPLATE in markdown, md, text, txt formats 180s -S, --timestamp skip conversion if the output file has newer timestamp 180s -m MAXLENGTH, --maxlinelength=MAXLENGTH 180s reflow (word wrap) the output to the given maximum 180s line length. set to 0 to disable 180s --threshold=PERCENT only convert files where the translation completion is 180s above PERCENT 180s --fuzzy use translations marked fuzzy 180s --nofuzzy don't use translations marked fuzzy (default) 181s ========= SMOKE TEST: /usr/bin/po2moz =========== 181s Usage: po2moz [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 181s 181s Convert Gettext PO localization files to Mozilla .dtd and .properties files. 181s See: http://docs.translatehouse.org/projects/translate- 181s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 181s 181s Options: 181s --version show program's version number and exit 181s -h, --help show this help message and exit 181s --manpage output a manpage based on the help 181s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 181s --errorlevel=ERRORLEVEL 181s show errorlevel as: none, message, exception, 181s traceback 181s -i INPUT, --input=INPUT 181s read from INPUT in *, dtd.po, dtd.pot, inc.po, 181s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 181s lang.pot, manifest, properties.po, properties.pot, rdf 181s formats 181s -x EXCLUDE, --exclude=EXCLUDE 181s exclude names matching EXCLUDE from input paths 181s -o OUTPUT, --output=OUTPUT 181s write to OUTPUT in *, dtd, inc, ini, it, js, lang, 181s manifest, properties, rdf formats 181s -t TEMPLATE, --template=TEMPLATE 181s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 181s manifest, properties, rdf formats 181s -S, --timestamp skip conversion if the output file has newer timestamp 181s -l LOCALE, --locale=LOCALE 181s set output locale (required as this sets the directory 181s names) 181s --threshold=PERCENT only convert files where the translation completion is 181s above PERCENT 181s --fuzzy use translations marked fuzzy 181s --nofuzzy don't use translations marked fuzzy (default) 181s --removeuntranslated remove untranslated strings from output 181s ========= SMOKE TEST: /usr/bin/po2mozlang =========== 181s Usage: po2mozlang [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 181s 181s Convert Gettext PO localization files to Mozilla .lang files. 181s 181s Options: 181s --version show program's version number and exit 181s -h, --help show this help message and exit 181s --manpage output a manpage based on the help 181s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 181s --errorlevel=ERRORLEVEL 181s show errorlevel as: none, message, exception, 181s traceback 181s -i INPUT, --input=INPUT 181s read from INPUT in po, pot formats 181s -x EXCLUDE, --exclude=EXCLUDE 181s exclude names matching EXCLUDE from input paths 181s -o OUTPUT, --output=OUTPUT 181s write to OUTPUT in lang format 181s -t TEMPLATE, --template=TEMPLATE 181s read from TEMPLATE in lang format 181s -S, --timestamp skip conversion if the output file has newer timestamp 181s --mark-active mark the file as active 181s --threshold=PERCENT only convert files where the translation completion is 181s above PERCENT 181s --fuzzy use translations marked fuzzy 181s --nofuzzy don't use translations marked fuzzy (default) 182s ========= SMOKE TEST: /usr/bin/po2oo =========== 182s Usage: po2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 182s 182s Convert Gettext PO localization files to an OpenOffice.org (SDF) localization 182s file. See: http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 182s 182s Options: 182s --version show program's version number and exit 182s -h, --help show this help message and exit 182s --manpage output a manpage based on the help 182s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 182s --errorlevel=ERRORLEVEL 182s show errorlevel as: none, message, exception, 182s traceback 182s -i INPUT, --input=INPUT 182s read from INPUT in po, pot, xlf, xliff formats 182s -x EXCLUDE, --exclude=EXCLUDE 182s exclude names matching EXCLUDE from input paths 182s -o OUTPUT, --output=OUTPUT 182s write to OUTPUT in oo, sdf formats 182s -t TEMPLATE, --template=TEMPLATE 182s read from TEMPLATE in oo, sdf formats 182s -S, --timestamp skip conversion if the output file has newer timestamp 182s -l LANG, --language=LANG 182s set target language code (e.g. af-ZA) [required] 182s --source-language=LANG 182s set source language code (default en-US) 182s -T, --keeptimestamp don't change the timestamps of the strings 182s --nonrecursiveoutput don't treat the output oo as a recursive store 182s --nonrecursivetemplate 182s don't treat the template oo as a recursive store 182s --skipsource don't output the source language, but fallback to it 182s where needed 182s --filteraction=ACTION 182s action on pofilter failure: none (default), warn, 182s exclude-serious, exclude-all 182s --threshold=PERCENT only convert files where the translation completion is 182s above PERCENT 182s --fuzzy use translations marked fuzzy 182s --nofuzzy don't use translations marked fuzzy (default) 182s --multifile=MULTIFILESTYLE 182s how to split po/pot files (single, toplevel or 182s onefile) 182s ========= SMOKE TEST: /usr/bin/po2php =========== 182s Usage: po2php [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 182s 182s Convert Gettext PO localization files to PHP localization files. See: 182s http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 182s 182s Options: 182s --version show program's version number and exit 182s -h, --help show this help message and exit 182s --manpage output a manpage based on the help 182s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 182s --errorlevel=ERRORLEVEL 182s show errorlevel as: none, message, exception, 182s traceback 182s -i INPUT, --input=INPUT 182s read from INPUT in po, pot formats 182s -x EXCLUDE, --exclude=EXCLUDE 182s exclude names matching EXCLUDE from input paths 182s -o OUTPUT, --output=OUTPUT 182s write to OUTPUT in html, php formats 182s -t TEMPLATE, --template=TEMPLATE 182s read from TEMPLATE in html, php formats 182s -S, --timestamp skip conversion if the output file has newer timestamp 182s --threshold=PERCENT only convert files where the translation completion is 182s above PERCENT 182s --fuzzy use translations marked fuzzy 182s --nofuzzy don't use translations marked fuzzy (default) 182s ========= SMOKE TEST: /usr/bin/po2prop =========== 182s Usage: po2prop [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 182s 182s Convert Gettext PO localization files to Java/Mozilla .properties files. 182s See: http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 182s 182s Options: 182s --version show program's version number and exit 182s -h, --help show this help message and exit 182s --manpage output a manpage based on the help 182s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 182s --errorlevel=ERRORLEVEL 182s show errorlevel as: none, message, exception, 182s traceback 182s -i INPUT, --input=INPUT 182s read from INPUT in po, pot formats 182s -x EXCLUDE, --exclude=EXCLUDE 182s exclude names matching EXCLUDE from input paths 182s -o OUTPUT, --output=OUTPUT 182s write to OUTPUT in lang, properties, strings formats 182s -t TEMPLATE, --template=TEMPLATE 182s read from TEMPLATE in lang, properties, strings 182s formats 182s -S, --timestamp skip conversion if the output file has newer timestamp 182s --personality=TYPE override the input file format: java, java-utf8, java- 182s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 182s strings, strings-utf8, joomla (for .properties files, 182s default: java) 182s --encoding=ENCODING override the encoding set by the personality 182s --threshold=PERCENT only convert files where the translation completion is 182s above PERCENT 182s --fuzzy use translations marked fuzzy 182s --nofuzzy don't use translations marked fuzzy (default) 182s --removeuntranslated remove untranslated strings from output 182s ========= SMOKE TEST: /usr/bin/po2rc =========== 182s Usage: po2rc [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 182s 182s Convert Gettext PO localization files back to Windows Resource (.rc) files. 182s See: http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 182s 182s Options: 182s --version show program's version number and exit 182s -h, --help show this help message and exit 182s --manpage output a manpage based on the help 182s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 182s --errorlevel=ERRORLEVEL 182s show errorlevel as: none, message, exception, 182s traceback 182s -i INPUT, --input=INPUT 182s read from INPUT in po, pot formats 182s -x EXCLUDE, --exclude=EXCLUDE 182s exclude names matching EXCLUDE from input paths 182s -o OUTPUT, --output=OUTPUT 182s write to OUTPUT in rc format 182s -t TEMPLATE, --template=TEMPLATE 182s read from TEMPLATE in rc format 182s -S, --timestamp skip conversion if the output file has newer timestamp 182s --charset=CHARSET charset to use to decode the RC files (default: utf-8) 182s -l LANG, --lang=LANG LANG entry 182s --sublang=SUBLANG SUBLANG entry (default: SUBLANG_DEFAULT) 182s --threshold=PERCENT only convert files where the translation completion is 182s above PERCENT 182s --fuzzy use translations marked fuzzy 182s --nofuzzy don't use translations marked fuzzy (default) 183s ========= SMOKE TEST: /usr/bin/po2resx =========== 183s Usage: po2resx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 183s 183s Convert Gettext PO localisation files to .Net Resource (.resx) files. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 183s 183s Options: 183s --version show program's version number and exit 183s -h, --help show this help message and exit 183s --manpage output a manpage based on the help 183s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 183s --errorlevel=ERRORLEVEL 183s show errorlevel as: none, message, exception, 183s traceback 183s -i INPUT, --input=INPUT 183s read from INPUT in po, pot formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in resx format 183s -t TEMPLATE, --template=TEMPLATE 183s read from TEMPLATE in resx format 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s --fuzzy use translations marked fuzzy 183s --nofuzzy don't use translations marked fuzzy (default) 183s ========= SMOKE TEST: /usr/bin/po2sub =========== 183s Usage: po2sub [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 183s 183s Convert Gettext PO localization files to subtitle files. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 183s 183s Options: 183s --version show program's version number and exit 183s -h, --help show this help message and exit 183s --manpage output a manpage based on the help 183s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 183s --errorlevel=ERRORLEVEL 183s show errorlevel as: none, message, exception, 183s traceback 183s -i INPUT, --input=INPUT 183s read from INPUT in po, pot formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in ass, srt, ssa, sub formats 183s -t TEMPLATE, --template=TEMPLATE 183s read from TEMPLATE in ass, srt, ssa, sub formats 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s --threshold=PERCENT only convert files where the translation completion is 183s above PERCENT 183s --fuzzy use translations marked fuzzy 183s --nofuzzy don't use translations marked fuzzy (default) 183s ========= SMOKE TEST: /usr/bin/po2symb =========== 183s Usage: po2symb [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 183s 183s Convert Gettext PO localization files to Symbian translation files. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 183s 183s Options: 183s --version show program's version number and exit 183s -h, --help show this help message and exit 183s --manpage output a manpage based on the help 183s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 183s --errorlevel=ERRORLEVEL 183s show errorlevel as: none, message, exception, 183s traceback 183s -i INPUT, --input=INPUT 183s read from INPUT in po, pot formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in r0 format 183s -t TEMPLATE, --template=TEMPLATE 183s read from TEMPLATE in 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s --duplicates=DUPLICATESTYLE 183s what to do with duplicate strings (identical source 183s text): merge, msgctxt (default: 'msgctxt') 183s ========= SMOKE TEST: /usr/bin/po2tiki =========== 183s Usage: po2tiki [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 183s 183s Convert Gettext PO files to TikiWiki's language.php files. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 183s 183s Options: 183s --version show program's version number and exit 183s -h, --help show this help message and exit 183s --manpage output a manpage based on the help 183s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 183s --errorlevel=ERRORLEVEL 183s show errorlevel as: none, message, exception, 183s traceback 183s -i INPUT, --input=INPUT 183s read from INPUT in po, pot formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in tiki format 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s ========= SMOKE TEST: /usr/bin/po2tmx =========== 183s Usage: po2tmx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 183s 183s Convert Gettext PO localization files to a TMX (Translation Memory eXchange) 183s file. See: http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/po2tmx.html for examples and usage instructions. 183s 183s Options: 183s --version show program's version number and exit 183s -h, --help show this help message and exit 183s --manpage output a manpage based on the help 183s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 183s --errorlevel=ERRORLEVEL 183s show errorlevel as: none, message, exception, 183s traceback 183s -i INPUT, --input=INPUT 183s read from INPUT in po, pot formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in tmx format 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s -l LANG, --language=LANG 183s set target language code (e.g. af-ZA) [required] 183s --source-language=LANG 183s set source language code (default: en) 183s --comments=COMMENT set default comment import: none, source, type or 183s others (default: none) 183s ========= SMOKE TEST: /usr/bin/po2ts =========== 183s Usage: po2ts [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 183s 183s Convert Gettext PO localization files to Qt Linguist (.ts) files. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 183s 183s Options: 183s --version show program's version number and exit 183s -h, --help show this help message and exit 183s --manpage output a manpage based on the help 183s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 183s --errorlevel=ERRORLEVEL 183s show errorlevel as: none, message, exception, 183s traceback 183s -i INPUT, --input=INPUT 183s read from INPUT in po, pot formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in ts format 183s -t TEMPLATE, --template=TEMPLATE 183s read from TEMPLATE in ts format 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s -c CONTEXT, --context=CONTEXT 183s use supplied context instead of the one in the .po 183s file comment 184s ========= SMOKE TEST: /usr/bin/po2txt =========== 184s Usage: po2txt [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 184s 184s Convert Gettext PO localization files to plain text (.txt) files. See: 184s http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 184s 184s Options: 184s --version show program's version number and exit 184s -h, --help show this help message and exit 184s --manpage output a manpage based on the help 184s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 184s --errorlevel=ERRORLEVEL 184s show errorlevel as: none, message, exception, 184s traceback 184s -i INPUT, --input=INPUT 184s read from INPUT in po, pot, xlf, xliff formats 184s -x EXCLUDE, --exclude=EXCLUDE 184s exclude names matching EXCLUDE from input paths 184s -o OUTPUT, --output=OUTPUT 184s write to OUTPUT in txt format 184s -t TEMPLATE, --template=TEMPLATE 184s read from TEMPLATE in txt format 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s --encoding=ENCODING The encoding of the template file (default: UTF-8) 184s -w WRAP, --wrap=WRAP set number of columns to wrap text at 184s --threshold=PERCENT only convert files where the translation completion is 184s above PERCENT 184s --fuzzy use translations marked fuzzy 184s --nofuzzy don't use translations marked fuzzy (default) 184s ========= SMOKE TEST: /usr/bin/po2web2py =========== 184s Usage: po2web2py [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 184s 184s Convert GNU/gettext PO files to web2py translation dictionaries (.py). See: 184s http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 184s 184s Options: 184s --version show program's version number and exit 184s -h, --help show this help message and exit 184s --manpage output a manpage based on the help 184s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 184s --errorlevel=ERRORLEVEL 184s show errorlevel as: none, message, exception, 184s traceback 184s -i INPUT, --input=INPUT 184s read from INPUT in po, pot formats 184s -x EXCLUDE, --exclude=EXCLUDE 184s exclude names matching EXCLUDE from input paths 184s -o OUTPUT, --output=OUTPUT 184s write to OUTPUT in py format 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s --threshold=PERCENT only convert files where the translation completion is 184s above PERCENT 184s --fuzzy use translations marked fuzzy 184s --nofuzzy don't use translations marked fuzzy (default) 184s ========= SMOKE TEST: /usr/bin/po2wordfast =========== 184s Usage: po2wordfast [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 184s 184s Convert Gettext PO localization files to a Wordfast translation memory file. 184s See: http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/po2wordfast.html for examples and usage 184s instructions. 184s 184s Options: 184s --version show program's version number and exit 184s -h, --help show this help message and exit 184s --manpage output a manpage based on the help 184s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 184s --errorlevel=ERRORLEVEL 184s show errorlevel as: none, message, exception, 184s traceback 184s -i INPUT, --input=INPUT 184s read from INPUT in po, pot formats 184s -x EXCLUDE, --exclude=EXCLUDE 184s exclude names matching EXCLUDE from input paths 184s -o OUTPUT, --output=OUTPUT 184s write to OUTPUT in txt format 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s -l LANG, --language=LANG 184s set target language code (e.g. af-ZA) [required] 184s --source-language=LANG 184s set source language code (default: en) 184s ========= SMOKE TEST: /usr/bin/po2xliff =========== 184s Usage: po2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 184s 184s Convert Gettext PO localization files to XLIFF localization files. See: 184s http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 184s 184s Options: 184s --version show program's version number and exit 184s -h, --help show this help message and exit 184s --manpage output a manpage based on the help 184s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 184s --errorlevel=ERRORLEVEL 184s show errorlevel as: none, message, exception, 184s traceback 184s -i INPUT, --input=INPUT 184s read from INPUT in po, pot formats 184s -x EXCLUDE, --exclude=EXCLUDE 184s exclude names matching EXCLUDE from input paths 184s -o OUTPUT, --output=OUTPUT 184s write to OUTPUT in xlf, xliff formats 184s -t TEMPLATE, --template=TEMPLATE 184s read from TEMPLATE in xlf, xliff formats 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s ========= SMOKE TEST: /usr/bin/po2yaml =========== 184s Usage: po2yaml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 184s 184s Convert Gettext PO localization files to YAML files. See: 184s http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 184s 184s Options: 184s --version show program's version number and exit 184s -h, --help show this help message and exit 184s --manpage output a manpage based on the help 184s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 184s --errorlevel=ERRORLEVEL 184s show errorlevel as: none, message, exception, 184s traceback 184s -i INPUT, --input=INPUT 184s read from INPUT in po, pot formats 184s -x EXCLUDE, --exclude=EXCLUDE 184s exclude names matching EXCLUDE from input paths 184s -o OUTPUT, --output=OUTPUT 184s write to OUTPUT in yaml, yml formats 184s -t TEMPLATE, --template=TEMPLATE 184s read from TEMPLATE in yaml, yml formats 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s --threshold=PERCENT only convert files where the translation completion is 184s above PERCENT 184s --fuzzy use translations marked fuzzy 184s --nofuzzy don't use translations marked fuzzy (default) 184s ========= SMOKE TEST: /usr/bin/poclean =========== 184s Usage: poclean [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 184s 184s Produces a clean file from an unclean file (Trados/Wordfast) by stripping out 184s the tw4win indicators. This does not convert an RTF file to PO/XLIFF, but 184s produces the target file with only the target text in from a text version of 184s the RTF. 184s 184s Options: 184s --version show program's version number and exit 184s -h, --help show this help message and exit 184s --manpage output a manpage based on the help 184s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 184s --errorlevel=ERRORLEVEL 184s show errorlevel as: none, message, exception, 184s traceback 184s -i INPUT, --input=INPUT 184s read from INPUT in po, pot, xlf, xliff formats 184s -x EXCLUDE, --exclude=EXCLUDE 184s exclude names matching EXCLUDE from input paths 184s -o OUTPUT, --output=OUTPUT 184s write to OUTPUT in po, pot, xlf, xliff formats 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s ========= SMOKE TEST: /usr/bin/pocompendium =========== 184s Usage: pocompendium [options] output.po <-d directory(s)|file(s)> 184s The first parameter is the output file, standard output if the output file is '-'. 184s Any number of directories may be specified for input files. 184s Options: 184s --invert|v Creates an inverse compendium with msgid and msgstr swapped 184s --errors|e Only ouput msg bundles that have errors 184s --correct|c Only ouput msg bundles that are correctly translated 184s --ignore-case|i Drops all strings to lowercase 184s --strip-accel-tilde|-st Strip all tilde (~) accelerator characters 184s --strip-accel-amp|-sa Strip all ampersand (&) accelerator characters 184s --strip-accel-under|-su Strip all underscore (_) accelerator characters 184s ========= SMOKE TEST: /usr/bin/pocompile =========== 184s Usage: pocompile [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 184s 184s Compile XLIFF and Gettext PO localization files into Gettext MO (Machine 184s Object) files. See: http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/pocompile.html for examples and usage instructions. 184s 184s Options: 184s --version show program's version number and exit 184s -h, --help show this help message and exit 184s --manpage output a manpage based on the help 184s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 184s --errorlevel=ERRORLEVEL 184s show errorlevel as: none, message, exception, 184s traceback 184s -i INPUT, --input=INPUT 184s read from INPUT in po, pot, xlf, xliff formats 184s -x EXCLUDE, --exclude=EXCLUDE 184s exclude names matching EXCLUDE from input paths 184s -o OUTPUT, --output=OUTPUT 184s write to OUTPUT in mo format 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s --fuzzy use translations marked fuzzy 184s --nofuzzy don't use translations marked fuzzy (default) 185s ========= SMOKE TEST: /usr/bin/poconflicts =========== 185s 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] 185s input directory is searched for PO files, PO files with name of conflicting string are output in output directory 185s 185s Conflict finder for Gettext PO localization files. See: 185s http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/poconflicts.html for examples and usage 185s instructions. 185s 185s Options: 185s --version show program's version number and exit 185s -h, --help show this help message and exit 185s --manpage output a manpage based on the help 185s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 185s --errorlevel=ERRORLEVEL 185s show errorlevel as: none, message, exception, 185s traceback 185s -i INPUT, --input=INPUT 185s read from INPUT in po format 185s -x EXCLUDE, --exclude=EXCLUDE 185s exclude names matching EXCLUDE from input paths 185s -o OUTPUT, --output=OUTPUT 185s write to OUTPUT in po format 185s -I, --ignore-case ignore case distinctions 185s -v, --invert invert the conflicts thus extracting conflicting 185s destination words 185s --accelerator=ACCELERATORS 185s ignores the given accelerator characters when matching 185s ========= SMOKE TEST: /usr/bin/pocount =========== 185s usage: pocount [-h] [--incomplete] 185s [--full | --csv | --short | --short-strings | --short-words] 185s [--no-color] 185s files [files ...] 185s 185s positional arguments: 185s files 185s 185s options: 185s -h, --help show this help message and exit 185s --incomplete skip 100% translated files. 185s 185s Output format: 185s --full (default) statistics in full, verbose format 185s --csv statistics in CSV format 185s --short same as --short-strings 185s --short-strings statistics of strings in short format - one line per file 185s --short-words statistics of words in short format - one line per file 185s --no-color show output without color 185s ========= SMOKE TEST: /usr/bin/podebug =========== 185s Usage: podebug [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 185s 185s Insert debug messages into XLIFF and Gettext PO localization files. See: 185s http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/podebug.html for examples and usage instructions. 185s 185s Options: 185s --version show program's version number and exit 185s -h, --help show this help message and exit 185s --manpage output a manpage based on the help 185s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 185s --errorlevel=ERRORLEVEL 185s show errorlevel as: none, message, exception, 185s traceback 185s -i INPUT, --input=INPUT 185s read from INPUT in po, pot, pot, tmx, xlf, xliff 185s formats 185s -x EXCLUDE, --exclude=EXCLUDE 185s exclude names matching EXCLUDE from input paths 185s -o OUTPUT, --output=OUTPUT 185s write to OUTPUT in po, pot, tmx, xlf, xliff formats 185s -S, --timestamp skip conversion if the output file has newer timestamp 185s -f FORMAT, --format=FORMAT 185s specify format string 185s --rewrite=STYLE the translation rewrite style: blank, bracket, chef, 185s classified, en, flipped, unicode, xxx 185s --ignore=APPLICATION apply tagging ignore rules for the given application: 185s gtk, kde, libreoffice, mozilla, openoffice 185s --preserveplaceholders 185s attempt to exclude characters that are part of 185s placeholders when performing character-level rewrites 185s so that consuming applications can still use the 185s placeholders to generate final output 185s ========= SMOKE TEST: /usr/bin/pofilter =========== 185s Usage: pofilter [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 185s 185s Perform quality checks on Gettext PO, XLIFF and TMX localization files. 185s Snippet files are created whenever a test fails. These can be examined, 185s corrected and merged back into the originals using pomerge. See: 185s http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/pofilter.html for examples and usage instructions 185s and http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/pofilter_tests.html for full descriptions of all 185s tests. 185s 185s Options: 185s --version show program's version number and exit 185s -h, --help show this help message and exit 185s --manpage output a manpage based on the help 185s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 185s --errorlevel=ERRORLEVEL 185s show errorlevel as: none, message, exception, 185s traceback 185s -i INPUT, --input=INPUT 185s read from INPUT in po, pot, tmx, xlf, xliff formats 185s -x EXCLUDE, --exclude=EXCLUDE 185s exclude names matching EXCLUDE from input paths 185s -o OUTPUT, --output=OUTPUT 185s write to OUTPUT in po, pot, tmx, xlf, xliff formats 185s -l, --listfilters list filters available 185s --review include units marked for review (default) 185s --noreview exclude units marked for review 185s --fuzzy include units marked fuzzy (default) 185s --nofuzzy exclude units marked fuzzy 185s --nonotes don't add notes about the errors 185s --autocorrect output automatic corrections where possible rather 185s than describing issues 185s --language=LANG set target language code (e.g. af-ZA) [required for 185s spell check and recommended in general] 185s --openoffice use the standard checks for OpenOffice translations 185s --libreoffice use the standard checks for LibreOffice translations 185s --mozilla use the standard checks for Mozilla translations 185s --drupal use the standard checks for Drupal translations 185s --gnome use the standard checks for Gnome translations 185s --kde use the standard checks for KDE translations 185s --wx use the standard checks for wxWidgets translations 185s --excludefilter=FILTER 185s don't use FILTER when filtering 185s -t FILTER, --test=FILTER 185s only use test FILTERs specified with this option when 185s filtering 185s --notranslatefile=FILE 185s read list of untranslatable words from FILE (must not 185s be translated) 185s --musttranslatefile=FILE 185s read list of translatable words from FILE (must be 185s translated) 185s --validcharsfile=FILE 185s read list of all valid characters from FILE (must be 185s in UTF-8) 186s ========= SMOKE TEST: /usr/bin/pogrep =========== 186s 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] 186s 186s Grep XLIFF, Gettext PO and TMX localization files. Matches are output to 186s snippet files of the same type which can then be reviewed and later merged 186s using :doc:`pomerge `. See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/pogrep.html for examples and usage instructions. 186s 186s Options: 186s --version show program's version number and exit 186s -h, --help show this help message and exit 186s --manpage output a manpage based on the help 186s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 186s --errorlevel=ERRORLEVEL 186s show errorlevel as: none, message, exception, 186s traceback 186s -i INPUT, --input=INPUT 186s read from INPUT in gmo, mo, po, pot, tmx, xlf, xlff, 186s xliff formats 186s -x EXCLUDE, --exclude=EXCLUDE 186s exclude names matching EXCLUDE from input paths 186s -o OUTPUT, --output=OUTPUT 186s write to OUTPUT in gmo, mo, po, pot, tmx, xlf, xlff, 186s xliff formats 186s --search=SEARCHPARTS searches the given parts (source, target, notes and 186s locations) 186s -I, --ignore-case ignore case distinctions 186s -e, --regexp use regular expression matching 186s -v, --invert-match select non-matching lines 186s --accelerator=ACCELERATOR 186s ignores the given accelerator when matching 186s -k, --keep-translations 186s always extract units with translations 186s ========= SMOKE TEST: /usr/bin/pomerge =========== 186s Usage: pomerge [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 186s 186s Merges XLIFF and Gettext PO localization files. Snippet file produced by 186s e.g. :doc:`pogrep ` and updated by a translator can be 186s merged back into the original files. See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 186s 186s Options: 186s --version show program's version number and exit 186s -h, --help show this help message and exit 186s --manpage output a manpage based on the help 186s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 186s --errorlevel=ERRORLEVEL 186s show errorlevel as: none, message, exception, 186s traceback 186s -i INPUT, --input=INPUT 186s read from INPUT in po, pot, pot, xlf, xliff formats 186s -x EXCLUDE, --exclude=EXCLUDE 186s exclude names matching EXCLUDE from input paths 186s -o OUTPUT, --output=OUTPUT 186s write to OUTPUT in po, pot, pot, xlf, xliff formats 186s -t TEMPLATE, --template=TEMPLATE 186s read from TEMPLATE in po, pot, pot, xlf, xliff formats 186s -S, --timestamp skip conversion if the output file has newer timestamp 186s --mergeblanks=MERGEBLANKS 186s whether to overwrite existing translations with blank 186s translations (yes/no). Default is yes. 186s --mergefuzzy=MERGEFUZZY 186s whether to consider fuzzy translations from input 186s (yes/no). Default is yes. 186s --mergecomments=MERGECOMMENTS 186s whether to merge comments as well as translations 186s (yes/no). Default is yes. 186s ========= SMOKE TEST: /usr/bin/pomigrate2 =========== 186s Usage pomigrate2 [options] 186s 186s Options: 186s -F|--use-fuzzy-matching - use fuzzy algorithms when merging to attempt to match strings 186s -C|--use-compendium - create and use a compendium built from the migrating files 186s -C|--use-compendium=some-compendium.po 186s - use an external compendium during the migration 186s --no-wrap - do not wrap long lines 186s --locale=lang - set locale for newly born files 186s -q|--quiet - suppress most output 186s -p|--pot2po - use pot2po instead of msgmerge to migrate 186s ========= SMOKE TEST: /usr/bin/popuretext =========== 186s Usage: popuretext ( -P pot-dir | po-dir ) file.txt [accelerator] 186s ========= SMOKE TEST: /usr/bin/poreencode =========== 186s Usage: poreencode 186s eg: poreencode UTF-8 af/ 186s ========= SMOKE TEST: /usr/bin/porestructure =========== 186s Usage: porestructure [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 186s input directory is searched for PO files with (poconflicts) comments, all entries are written to files in a directory structure for pomerge 186s 186s Restructure Gettxt PO files produced by :doc:`poconflicts 186s ` into the original directory tree for merging using 186s :doc:`pomerge `. See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 186s 186s Options: 186s --version show program's version number and exit 186s -h, --help show this help message and exit 186s --manpage output a manpage based on the help 186s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 186s --errorlevel=ERRORLEVEL 186s show errorlevel as: none, message, exception, 186s traceback 186s -i INPUT, --input=INPUT 186s read from INPUT in po format 186s -x EXCLUDE, --exclude=EXCLUDE 186s exclude names matching EXCLUDE from input paths 186s -o OUTPUT, --output=OUTPUT 186s write to OUTPUT in po format 186s ========= SMOKE TEST: /usr/bin/posegment =========== 186s Usage: posegment [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 186s 186s Segment Gettext PO, XLIFF and TMX localization files at the sentence level. 186s See: http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/posegment.html for examples and usage instructions. 186s 186s Options: 186s --version show program's version number and exit 186s -h, --help show this help message and exit 186s --manpage output a manpage based on the help 186s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 186s --errorlevel=ERRORLEVEL 186s show errorlevel as: none, message, exception, 186s traceback 186s -i INPUT, --input=INPUT 186s read from INPUT in po, pot, tmx, xlf, xliff formats 186s -x EXCLUDE, --exclude=EXCLUDE 186s exclude names matching EXCLUDE from input paths 186s -o OUTPUT, --output=OUTPUT 186s write to OUTPUT in po, pot, tmx, xlf, xliff formats 186s -S, --timestamp skip conversion if the output file has newer timestamp 186s -P, --pot output PO Templates (.pot) rather than PO files (.po) 186s -l LANG, --language=LANG 186s the target language code 186s --source-language=LANG 186s the source language code (default 'en') 186s --keepspaces Disable automatic stripping of whitespace 186s --only-aligned Removes units where sentence number does not 186s correspond 186s ========= SMOKE TEST: /usr/bin/poswap =========== 186s Usage: poswap [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 186s 186s Builds a new translation file with the target of the input language as source 186s language. .. note:: Ensure that the two po files correspond 100% to the same 186s pot file before using this. To translate Kurdish (ku) through French:: 186s poswap -i fr/ -t ku -o fr-ku To convert the fr-ku files back to en-ku:: 186s poswap --reverse -i fr/ -t fr-ku -o en-ku See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/poswap.html for examples and usage instructions. 186s 186s Options: 186s --version show program's version number and exit 186s -h, --help show this help message and exit 186s --manpage output a manpage based on the help 186s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 186s --errorlevel=ERRORLEVEL 186s show errorlevel as: none, message, exception, 186s traceback 186s -i INPUT, --input=INPUT 186s read from INPUT in po, pot formats 186s -x EXCLUDE, --exclude=EXCLUDE 186s exclude names matching EXCLUDE from input paths 186s -o OUTPUT, --output=OUTPUT 186s write to OUTPUT in po, pot formats 186s -t TEMPLATE, --template=TEMPLATE 186s read from TEMPLATE in po, pot, pot formats 186s -S, --timestamp skip conversion if the output file has newer timestamp 186s --reverse reverse the process of intermediate language 186s conversion 187s ========= SMOKE TEST: /usr/bin/pot2po =========== 187s 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] 187s 187s Convert template files (like .pot or template .xlf files) to translation 187s files, preserving existing translations. See: 187s http://docs.translatehouse.org/projects/translate- 187s toolkit/en/latest/commands/pot2po.html for examples and usage instructions. 187s 187s Options: 187s --version show program's version number and exit 187s -h, --help show this help message and exit 187s --manpage output a manpage based on the help 187s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 187s --errorlevel=ERRORLEVEL 187s show errorlevel as: none, message, exception, 187s traceback 187s -i INPUT, --input=INPUT 187s read from INPUT in catkeys, lang, pot, ts, xlf, xliff 187s formats 187s -x EXCLUDE, --exclude=EXCLUDE 187s exclude names matching EXCLUDE from input paths 187s -o OUTPUT, --output=OUTPUT 187s write to OUTPUT in catkeys, lang, po, pot, ts, xlf, 187s xliff formats 187s -t TEMPLATE, --template=TEMPLATE 187s read from TEMPLATE in catkeys, lang, po, pot, ts, xlf, 187s xliff formats 187s -S, --timestamp skip conversion if the output file has newer timestamp 187s -P, --pot output PO Templates (.pot) rather than PO files (.po) 187s --tm=TM The file to use as translation memory when fuzzy 187s matching 187s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 187s The minimum similarity for inclusion (default: 75%) 187s --nofuzzymatching Disable fuzzy matching 187s ========= SMOKE TEST: /usr/bin/poterminology =========== 187s 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] 187s input directory is searched for PO files, terminology PO file is output file 187s 187s Create a terminology file by reading a set of .po or .pot files to produce a 187s pootle-terminology.pot. See: 187s http://docs.translatehouse.org/projects/translate- 187s toolkit/en/latest/commands/poterminology.html for examples and usage 187s instructions. 187s 187s Options: 187s --version show program's version number and exit 187s -h, --help show this help message and exit 187s --manpage output a manpage based on the help 187s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 187s --errorlevel=ERRORLEVEL 187s show errorlevel as: none, message, exception, 187s traceback 187s -i INPUT, --input=INPUT 187s read from INPUT in po, pot formats 187s -x EXCLUDE, --exclude=EXCLUDE 187s exclude names matching EXCLUDE from input paths 187s -o OUTPUT, --output=OUTPUT 187s write to OUTPUT in po, pot formats 187s -u UPDATEFILE, --update=UPDATEFILE 187s update terminology in UPDATEFILE 187s -S STOPFILE, --stopword-list=STOPFILE 187s read stopword (term exclusion) list from STOPFILE 187s (default /usr/share/pyshared/translate/share/stoplist- 187s en) 187s -F, --fold-titlecase fold "Title Case" to lowercase (default) 187s -C, --preserve-case preserve all uppercase/lowercase 187s -I, --ignore-case make all terms lowercase 187s --accelerator=ACCELERATORS 187s ignore the given accelerator characters when matching 187s -t LENGTH, --term-words=LENGTH 187s generate terms of up to LENGTH words (default 3) 187s --nonstop-needed=MIN omit terms with less than MIN nonstop words (default 187s 1) 187s --inputs-needed=MIN omit terms appearing in less than MIN input files 187s (default 2, or 1 if only one input file) 187s --fullmsg-needed=MIN omit full message terms appearing in less than MIN 187s different messages (default 1) 187s --substr-needed=MIN omit substring-only terms appearing in less than MIN 187s different messages (default 2) 187s --locs-needed=MIN omit terms appearing in less than MIN different 187s original source files (default 2) 187s --sort=ORDER output sort order(s): frequency, dictionary, length 187s (may repeat option, default is all in above order) 187s --source-language=LANG 187s the source language code (default 'en') 187s -v, --invert invert the source and target languages for terminology 187s ========= SMOKE TEST: /usr/bin/pretranslate =========== 187s Usage: pretranslate [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 187s 187s Fill localization files with suggested translations based on translation 187s memory and existing translations. See: 187s http://docs.translatehouse.org/projects/translate- 187s toolkit/en/latest/commands/pretranslate.html for examples and usage 187s instructions. 187s 187s Options: 187s --version show program's version number and exit 187s -h, --help show this help message and exit 187s --manpage output a manpage based on the help 187s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 187s --errorlevel=ERRORLEVEL 187s show errorlevel as: none, message, exception, 187s traceback 187s -i INPUT, --input=INPUT 187s read from INPUT in po, pot, pot, xlf, xliff formats 187s -x EXCLUDE, --exclude=EXCLUDE 187s exclude names matching EXCLUDE from input paths 187s -o OUTPUT, --output=OUTPUT 187s write to OUTPUT in po, pot, xlf, xliff formats 187s -t TEMPLATE, --template=TEMPLATE 187s read from TEMPLATE in po, pot, xlf, xliff formats 187s -S, --timestamp skip conversion if the output file has newer timestamp 187s --tm=TM The file to use as translation memory when fuzzy 187s matching 187s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 187s The minimum similarity for inclusion (default: 75%) 187s --nofuzzymatching Disable fuzzy matching 188s ========= SMOKE TEST: /usr/bin/prop2po =========== 188s 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] 188s 188s Convert Java/Mozilla .properties files to Gettext PO localization files. 188s See: http://docs.translatehouse.org/projects/translate- 188s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 188s 188s Options: 188s --version show program's version number and exit 188s -h, --help show this help message and exit 188s --manpage output a manpage based on the help 188s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 188s --errorlevel=ERRORLEVEL 188s show errorlevel as: none, message, exception, 188s traceback 188s -i INPUT, --input=INPUT 188s read from INPUT in lang, properties, strings formats 188s -x EXCLUDE, --exclude=EXCLUDE 188s exclude names matching EXCLUDE from input paths 188s -o OUTPUT, --output=OUTPUT 188s write to OUTPUT in po, pot formats 188s -t TEMPLATE, --template=TEMPLATE 188s read from TEMPLATE in lang, properties, strings 188s formats 188s -S, --timestamp skip conversion if the output file has newer timestamp 188s -P, --pot output PO Templates (.pot) rather than PO files (.po) 188s --personality=TYPE override the input file format: java, java-utf8, java- 188s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 188s strings, strings-utf8, joomla (for .properties files, 188s default: java) 188s --encoding=ENCODING override the encoding set by the personality 188s --duplicates=DUPLICATESTYLE 188s what to do with duplicate strings (identical source 188s text): merge, msgctxt (default: 'msgctxt') 188s ========= SMOKE TEST: /usr/bin/pydiff =========== 188s usage: pydiff [-h] [-i] [-U NUM] [-r] [-N] [--unidirectional-new-file] [-s] 188s [-x PAT] [--fromcontains TEXT] [--tocontains TEXT] 188s [--contains TEXT] [-I] [--accelerator ACCELERATORS] 188s fromfile tofile 188s 188s positional arguments: 188s fromfile 188s tofile 188s 188s options: 188s -h, --help show this help message and exit 188s -i, --ignore-case Ignore case differences in file contents. 188s -U NUM, --unified NUM 188s Output NUM (default 3) lines of unified context 188s -r, --recursive Recursively compare any subdirectories found. 188s -N, --new-file Treat absent files as empty. 188s --unidirectional-new-file 188s Treat absent first files as empty. 188s -s, --report-identical-files 188s Report when two files are the same. 188s -x PAT, --exclude PAT 188s Exclude files that match PAT. 188s --fromcontains TEXT Only show changes where fromfile contains TEXT 188s --tocontains TEXT Only show changes where tofile contains TEXT 188s --contains TEXT Only show changes where fromfile or tofile contains 188s TEXT 188s -I, --ignore-case-contains 188s Ignore case differences when matching any of the 188s changes 188s --accelerator ACCELERATORS 188s ignores the given accelerator characters when matching 188s ========= SMOKE TEST: /usr/bin/pypo2phppo =========== 188s Usage: pypo2phppo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 188s 188s Convert Python format .po files to PHP format .po files. 188s 188s Options: 188s --version show program's version number and exit 188s -h, --help show this help message and exit 188s --manpage output a manpage based on the help 188s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 188s --errorlevel=ERRORLEVEL 188s show errorlevel as: none, message, exception, 188s traceback 188s -i INPUT, --input=INPUT 188s read from INPUT in po, pot formats 188s -x EXCLUDE, --exclude=EXCLUDE 188s exclude names matching EXCLUDE from input paths 188s -o OUTPUT, --output=OUTPUT 188s write to OUTPUT in po, pot formats 188s -S, --timestamp skip conversion if the output file has newer timestamp 189s ========= SMOKE TEST: /usr/bin/rc2po =========== 189s 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] 189s 189s Convert Windows RC files to Gettext PO localization files. See: 189s http://docs.translatehouse.org/projects/translate- 189s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 189s 189s Options: 189s --version show program's version number and exit 189s -h, --help show this help message and exit 189s --manpage output a manpage based on the help 189s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 189s --errorlevel=ERRORLEVEL 189s show errorlevel as: none, message, exception, 189s traceback 189s -i INPUT, --input=INPUT 189s read from INPUT in nls, rc formats 189s -x EXCLUDE, --exclude=EXCLUDE 189s exclude names matching EXCLUDE from input paths 189s -o OUTPUT, --output=OUTPUT 189s write to OUTPUT in po, pot formats 189s -t TEMPLATE, --template=TEMPLATE 189s read from TEMPLATE in nls, rc formats 189s -S, --timestamp skip conversion if the output file has newer timestamp 189s -P, --pot output PO Templates (.pot) rather than PO files (.po) 189s --charset=CHARSET charset to use to decode the RC files (autodetection 189s is used by default) 189s -l LANG, --lang=LANG LANG entry (default: None) 189s --sublang=SUBLANG SUBLANG entry (default: None) 189s --duplicates=DUPLICATESTYLE 189s what to do with duplicate strings (identical source 189s text): merge, msgctxt (default: 'msgctxt') 189s ========= SMOKE TEST: /usr/bin/resx2po =========== 189s 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] 189s 189s Convert .Net Resource (.resx) to Gettext PO localisation files. See: 189s http://docs.translatehouse.org/projects/translate- 189s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 189s 189s Options: 189s --version show program's version number and exit 189s -h, --help show this help message and exit 189s --manpage output a manpage based on the help 189s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 189s --errorlevel=ERRORLEVEL 189s show errorlevel as: none, message, exception, 189s traceback 189s -i INPUT, --input=INPUT 189s read from INPUT in resx format 189s -x EXCLUDE, --exclude=EXCLUDE 189s exclude names matching EXCLUDE from input paths 189s -o OUTPUT, --output=OUTPUT 189s write to OUTPUT in po, pot formats 189s -t TEMPLATE, --template=TEMPLATE 189s read from TEMPLATE in resx format 189s -S, --timestamp skip conversion if the output file has newer timestamp 189s -P, --pot output PO Templates (.pot) rather than PO files (.po) 189s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 189s everything) 189s --duplicates=DUPLICATESTYLE 189s what to do with duplicate strings (identical source 189s text): merge, msgctxt (default: 'msgctxt') 189s ========= SMOKE TEST: /usr/bin/sub2po =========== 189s 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] 189s 189s Convert subtitle files to Gettext PO localization files. See: 189s http://docs.translatehouse.org/projects/translate- 189s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 189s 189s Options: 189s --version show program's version number and exit 189s -h, --help show this help message and exit 189s --manpage output a manpage based on the help 189s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 189s --errorlevel=ERRORLEVEL 189s show errorlevel as: none, message, exception, 189s traceback 189s -i INPUT, --input=INPUT 189s read from INPUT in ass, srt, ssa, sub formats 189s -x EXCLUDE, --exclude=EXCLUDE 189s exclude names matching EXCLUDE from input paths 189s -o OUTPUT, --output=OUTPUT 189s write to OUTPUT in po, pot formats 189s -t TEMPLATE, --template=TEMPLATE 189s read from TEMPLATE in ass, srt, ssa, sub formats 189s -S, --timestamp skip conversion if the output file has newer timestamp 189s -P, --pot output PO Templates (.pot) rather than PO files (.po) 189s --duplicates=DUPLICATESTYLE 189s what to do with duplicate strings (identical source 189s text): merge, msgctxt (default: 'msgctxt') 190s ========= SMOKE TEST: /usr/bin/symb2po =========== 190s 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] 190s 190s Convert Symbian localisation files to Gettext PO localization files. See: 190s http://docs.translatehouse.org/projects/translate- 190s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 190s 190s Options: 190s --version show program's version number and exit 190s -h, --help show this help message and exit 190s --manpage output a manpage based on the help 190s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 190s --errorlevel=ERRORLEVEL 190s show errorlevel as: none, message, exception, 190s traceback 190s -i INPUT, --input=INPUT 190s read from INPUT in r01 format 190s -x EXCLUDE, --exclude=EXCLUDE 190s exclude names matching EXCLUDE from input paths 190s -o OUTPUT, --output=OUTPUT 190s write to OUTPUT in po, pot formats 190s -t TEMPLATE, --template=TEMPLATE 190s read from TEMPLATE in 190s -S, --timestamp skip conversion if the output file has newer timestamp 190s -P, --pot output PO Templates (.pot) rather than PO files (.po) 190s --duplicates=DUPLICATESTYLE 190s what to do with duplicate strings (identical source 190s text): merge, msgctxt (default: 'msgctxt') 190s ========= SMOKE TEST: /usr/bin/tbx2po =========== 190s Usage: tbx2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 190s 190s Convert TermBase eXchange (.tbx) glossary file into a Gettext PO file. See: 190s http://docs.translatehouse.org/projects/translate- 190s toolkit/en/latest/commands/tbx2po.html for examples and usage instructions 190s 190s Options: 190s --version show program's version number and exit 190s -h, --help show this help message and exit 190s --manpage output a manpage based on the help 190s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 190s --errorlevel=ERRORLEVEL 190s show errorlevel as: none, message, exception, 190s traceback 190s -i INPUT, --input=INPUT 190s read from INPUT in tbx format 190s -x EXCLUDE, --exclude=EXCLUDE 190s exclude names matching EXCLUDE from input paths 190s -o OUTPUT, --output=OUTPUT 190s write to OUTPUT in po, pot formats 190s -S, --timestamp skip conversion if the output file has newer timestamp 190s ========= SMOKE TEST: /usr/bin/tiki2po =========== 190s Usage: tiki2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 190s 190s Convert TikiWiki's language.php files to Gettext PO localization files. See: 190s http://docs.translatehouse.org/projects/translate- 190s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 190s 190s Options: 190s --version show program's version number and exit 190s -h, --help show this help message and exit 190s --manpage output a manpage based on the help 190s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 190s --errorlevel=ERRORLEVEL 190s show errorlevel as: none, message, exception, 190s traceback 190s -i INPUT, --input=INPUT 190s read from INPUT in php format 190s -x EXCLUDE, --exclude=EXCLUDE 190s exclude names matching EXCLUDE from input paths 190s -o OUTPUT, --output=OUTPUT 190s write to OUTPUT in po, pot formats 190s -S, --timestamp skip conversion if the output file has newer timestamp 190s --include-unused Include strings in the unused section 190s ========= SMOKE TEST: /usr/bin/tmserver =========== 190s usage: tmserver [-h] [-d TMDBFILE] [-f TMFILES] [-t TARGET_LANG] 190s [-s SOURCE_LANG] [-b BIND] [-p PORT] 190s [--max-candidates MAX_CANDIDATES] 190s [--min-similarity MIN_SIMILARITY] [--max-length MAX_LENGTH] 190s [--debug] 190s 190s options: 190s -h, --help show this help message and exit 190s -d TMDBFILE, --tmdb TMDBFILE 190s translation memory database file 190s -f TMFILES, --import-translation-file TMFILES 190s translation file to import into the database 190s -t TARGET_LANG, --import-target-lang TARGET_LANG 190s target language of translation files 190s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 190s source language of translation files 190s -b BIND, --bind BIND address to bind server to (default: localhost) 190s -p PORT, --port PORT port to listen on (default: 8888) 190s --max-candidates MAX_CANDIDATES 190s Maximum number of candidates 190s --min-similarity MIN_SIMILARITY 190s minimum similarity 190s --max-length MAX_LENGTH 190s Maxmimum string length 190s --debug enable debugging features 191s ========= SMOKE TEST: /usr/bin/ts2po =========== 191s Usage: ts2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 191s 191s Convert Qt Linguist (.ts) files to Gettext PO localization files. See: 191s http://docs.translatehouse.org/projects/translate- 191s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 191s 191s Options: 191s --version show program's version number and exit 191s -h, --help show this help message and exit 191s --manpage output a manpage based on the help 191s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 191s --errorlevel=ERRORLEVEL 191s show errorlevel as: none, message, exception, 191s traceback 191s -i INPUT, --input=INPUT 191s read from INPUT in ts format 191s -x EXCLUDE, --exclude=EXCLUDE 191s exclude names matching EXCLUDE from input paths 191s -o OUTPUT, --output=OUTPUT 191s write to OUTPUT in po, pot formats 191s -S, --timestamp skip conversion if the output file has newer timestamp 191s -P, --pot output PO Templates (.pot) rather than PO files (.po) 191s --duplicates=DUPLICATESTYLE 191s what to do with duplicate strings (identical source 191s text): merge, msgctxt (default: 'msgctxt') 191s ========= SMOKE TEST: /usr/bin/txt2po =========== 191s Usage: txt2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 191s 191s Convert plain text (.txt) files to Gettext PO localization files. See: 191s http://docs.translatehouse.org/projects/translate- 191s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 191s 191s Options: 191s --version show program's version number and exit 191s -h, --help show this help message and exit 191s --manpage output a manpage based on the help 191s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 191s --errorlevel=ERRORLEVEL 191s show errorlevel as: none, message, exception, 191s traceback 191s -i INPUT, --input=INPUT 191s read from INPUT in *, txt formats 191s -x EXCLUDE, --exclude=EXCLUDE 191s exclude names matching EXCLUDE from input paths 191s -o OUTPUT, --output=OUTPUT 191s write to OUTPUT in po, pot formats 191s -S, --timestamp skip conversion if the output file has newer timestamp 191s -P, --pot output PO Templates (.pot) rather than PO files (.po) 191s --encoding=ENCODING The encoding of the input file (default: UTF-8) 191s --flavour=FLAVOUR The flavour of text file: plain (default), dokuwiki, 191s mediawiki 191s --no-segmentation Don't segment the file, treat it like a single message 191s --duplicates=DUPLICATESTYLE 191s what to do with duplicate strings (identical source 191s text): merge, msgctxt (default: 'msgctxt') 191s ========= SMOKE TEST: /usr/bin/web2py2po =========== 191s Usage: web2py2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 191s 191s Convert web2py translation dictionaries (.py) to GNU/gettext PO files. See: 191s http://docs.translatehouse.org/projects/translate- 191s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 191s 191s Options: 191s --version show program's version number and exit 191s -h, --help show this help message and exit 191s --manpage output a manpage based on the help 191s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 191s --errorlevel=ERRORLEVEL 191s show errorlevel as: none, message, exception, 191s traceback 191s -i INPUT, --input=INPUT 191s read from INPUT in py format 191s -x EXCLUDE, --exclude=EXCLUDE 191s exclude names matching EXCLUDE from input paths 191s -o OUTPUT, --output=OUTPUT 191s write to OUTPUT in po, pot formats 191s -S, --timestamp skip conversion if the output file has newer timestamp 191s -P, --pot output PO Templates (.pot) rather than PO files (.po) 191s --duplicates=DUPLICATESTYLE 191s what to do with duplicate strings (identical source 191s text): merge, msgctxt (default: 'msgctxt') 191s ========= SMOKE TEST: /usr/bin/xliff2odf =========== 192s Usage: xliff2odf [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 192s 192s Convert XLIFF translation files to OpenDocument (ODF) files. See: 192s http://docs.translatehouse.org/projects/translate- 192s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 192s 192s Options: 192s --version show program's version number and exit 192s -h, --help show this help message and exit 192s --manpage output a manpage based on the help 192s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 192s --errorlevel=ERRORLEVEL 192s show errorlevel as: none, message, exception, 192s traceback 192s -i INPUT, --input=INPUT 192s read from INPUT in xlf format 192s -x EXCLUDE, --exclude=EXCLUDE 192s exclude names matching EXCLUDE from input paths 192s -o OUTPUT, --output=OUTPUT 192s write to OUTPUT in odc, odf, odg, odi, odm, odp, ods, 192s odt, otc, otf, otg, oth, oti, otp, ots, ott formats 192s -t TEMPLATE, --template=TEMPLATE 192s read from TEMPLATE in odc, odf, odg, odi, odm, odp, 192s ods, odt, otc, otf, otg, oth, oti, otp, ots, ott 192s formats 192s -S, --timestamp skip conversion if the output file has newer timestamp 192s ========= SMOKE TEST: /usr/bin/xliff2oo =========== 192s Usage: xliff2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 192s 192s Convert XLIFF localization files to an OpenOffice.org (SDF) localization 192s file. See: http://docs.translatehouse.org/projects/translate- 192s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 192s 192s Options: 192s --version show program's version number and exit 192s -h, --help show this help message and exit 192s --manpage output a manpage based on the help 192s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 192s --errorlevel=ERRORLEVEL 192s show errorlevel as: none, message, exception, 192s traceback 192s -i INPUT, --input=INPUT 192s read from INPUT in po, pot, xlf, xliff formats 192s -x EXCLUDE, --exclude=EXCLUDE 192s exclude names matching EXCLUDE from input paths 192s -o OUTPUT, --output=OUTPUT 192s write to OUTPUT in oo, sdf formats 192s -t TEMPLATE, --template=TEMPLATE 192s read from TEMPLATE in oo, sdf formats 192s -S, --timestamp skip conversion if the output file has newer timestamp 192s -l LANG, --language=LANG 192s set target language code (e.g. af-ZA) [required] 192s --source-language=LANG 192s set source language code (default en-US) 192s -T, --keeptimestamp don't change the timestamps of the strings 192s --nonrecursiveoutput don't treat the output oo as a recursive store 192s --nonrecursivetemplate 192s don't treat the template oo as a recursive store 192s --skipsource don't output the source language, but fallback to it 192s where needed 192s --filteraction=ACTION 192s action on pofilter failure: none (default), warn, 192s exclude-serious, exclude-all 192s --fuzzy use translations marked fuzzy 192s --nofuzzy don't use translations marked fuzzy (default) 192s --multifile=MULTIFILESTYLE 192s how to split po/pot files (single, toplevel or 192s onefile) 192s ========= SMOKE TEST: /usr/bin/xliff2po =========== 192s Usage: xliff2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 192s 192s Convert XLIFF localization files to Gettext PO localization files. See: 192s http://docs.translatehouse.org/projects/translate- 192s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 192s 192s Options: 192s --version show program's version number and exit 192s -h, --help show this help message and exit 192s --manpage output a manpage based on the help 192s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 192s --errorlevel=ERRORLEVEL 192s show errorlevel as: none, message, exception, 192s traceback 192s -i INPUT, --input=INPUT 192s read from INPUT in xlf, xliff formats 192s -x EXCLUDE, --exclude=EXCLUDE 192s exclude names matching EXCLUDE from input paths 192s -o OUTPUT, --output=OUTPUT 192s write to OUTPUT in po, pot formats 192s -S, --timestamp skip conversion if the output file has newer timestamp 192s -P, --pot output PO Templates (.pot) rather than PO files (.po) 192s --duplicates=DUPLICATESTYLE 192s what to do with duplicate strings (identical source 192s text): merge, msgctxt (default: 'msgctxt') 192s ========= SMOKE TEST: /usr/bin/yaml2po =========== 192s 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] 192s 192s Convert YAML files to Gettext PO localization files. See: 192s http://docs.translatehouse.org/projects/translate- 192s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 192s 192s Options: 192s --version show program's version number and exit 192s -h, --help show this help message and exit 192s --manpage output a manpage based on the help 192s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 192s --errorlevel=ERRORLEVEL 192s show errorlevel as: none, message, exception, 192s traceback 192s -i INPUT, --input=INPUT 192s read from INPUT in yaml, yml formats 192s -x EXCLUDE, --exclude=EXCLUDE 192s exclude names matching EXCLUDE from input paths 192s -o OUTPUT, --output=OUTPUT 192s write to OUTPUT in po, pot formats 192s -t TEMPLATE, --template=TEMPLATE 192s read from TEMPLATE in yaml, yml formats 192s -S, --timestamp skip conversion if the output file has newer timestamp 192s -P, --pot output PO Templates (.pot) rather than PO files (.po) 192s --duplicates=DUPLICATESTYLE 192s what to do with duplicate strings (identical source 192s text): merge, msgctxt (default: 'msgctxt') 193s autopkgtest [03:03:48]: test translate-toolkit: -----------------------] 194s translate-toolkit PASS 194s autopkgtest [03:03:49]: test translate-toolkit: - - - - - - - - - - results - - - - - - - - - - 194s autopkgtest [03:03:49]: test python3-translate: preparing testbed 291s autopkgtest [03:05:26]: testbed dpkg architecture: s390x 291s autopkgtest [03:05:26]: testbed apt version: 2.9.3 291s autopkgtest [03:05:26]: @@@@@@@@@@@@@@@@@@@@ test bed setup 292s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 293s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [333 kB] 293s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 293s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2864 B] 293s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 293s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main s390x Packages [47.8 kB] 293s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted s390x Packages [1860 B] 293s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe s390x Packages [258 kB] 293s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse s390x Packages [1768 B] 293s Fetched 808 kB in 1s (816 kB/s) 293s Reading package lists... 296s Reading package lists... 296s Building dependency tree... 296s Reading state information... 296s Calculating upgrade... 296s The following packages will be upgraded: 296s debianutils libheif-plugin-aomdec libheif-plugin-aomenc 296s libheif-plugin-libde265 libheif1 libnetplan1 liburcu8t64 netplan-generator 296s netplan.io python3-netplan 297s 10 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 297s Need to get 758 kB of archives. 297s After this operation, 48.1 kB disk space will be freed. 297s Get:1 http://ftpmaster.internal/ubuntu oracular/main s390x debianutils s390x 5.18 [90.2 kB] 297s Get:2 http://ftpmaster.internal/ubuntu oracular/main s390x netplan-generator s390x 1.0-3ubuntu1 [59.2 kB] 297s Get:3 http://ftpmaster.internal/ubuntu oracular/main s390x python3-netplan s390x 1.0-3ubuntu1 [22.9 kB] 297s Get:4 http://ftpmaster.internal/ubuntu oracular/main s390x netplan.io s390x 1.0-3ubuntu1 [65.8 kB] 297s Get:5 http://ftpmaster.internal/ubuntu oracular/main s390x libnetplan1 s390x 1.0-3ubuntu1 [125 kB] 297s Get:6 http://ftpmaster.internal/ubuntu oracular/main s390x libheif-plugin-aomdec s390x 1.17.6-3 [10.1 kB] 297s Get:7 http://ftpmaster.internal/ubuntu oracular/main s390x libheif-plugin-aomenc s390x 1.17.6-3 [15.1 kB] 297s Get:8 http://ftpmaster.internal/ubuntu oracular/main s390x libheif1 s390x 1.17.6-3 [295 kB] 297s Get:9 http://ftpmaster.internal/ubuntu oracular/main s390x libheif-plugin-libde265 s390x 1.17.6-3 [8172 B] 297s Get:10 http://ftpmaster.internal/ubuntu oracular/main s390x liburcu8t64 s390x 0.14.0-4 [66.5 kB] 298s Fetched 758 kB in 1s (1219 kB/s) 298s (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 ... 54607 files and directories currently installed.) 298s Preparing to unpack .../debianutils_5.18_s390x.deb ... 298s Unpacking debianutils (5.18) over (5.17build1) ... 298s Setting up debianutils (5.18) ... 298s (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 ... 54607 files and directories currently installed.) 298s Preparing to unpack .../0-netplan-generator_1.0-3ubuntu1_s390x.deb ... 298s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 298s Unpacking netplan-generator (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 298s Preparing to unpack .../1-python3-netplan_1.0-3ubuntu1_s390x.deb ... 298s Unpacking python3-netplan (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 298s Preparing to unpack .../2-netplan.io_1.0-3ubuntu1_s390x.deb ... 298s Unpacking netplan.io (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 298s Preparing to unpack .../3-libnetplan1_1.0-3ubuntu1_s390x.deb ... 298s Unpacking libnetplan1:s390x (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 298s Preparing to unpack .../4-libheif-plugin-aomdec_1.17.6-3_s390x.deb ... 298s Unpacking libheif-plugin-aomdec:s390x (1.17.6-3) over (1.17.6-1ubuntu4) ... 298s Preparing to unpack .../5-libheif-plugin-aomenc_1.17.6-3_s390x.deb ... 298s Unpacking libheif-plugin-aomenc:s390x (1.17.6-3) over (1.17.6-1ubuntu4) ... 298s Preparing to unpack .../6-libheif1_1.17.6-3_s390x.deb ... 298s Unpacking libheif1:s390x (1.17.6-3) over (1.17.6-1ubuntu4) ... 298s Preparing to unpack .../7-libheif-plugin-libde265_1.17.6-3_s390x.deb ... 298s Unpacking libheif-plugin-libde265:s390x (1.17.6-3) over (1.17.6-1ubuntu4) ... 298s Preparing to unpack .../8-liburcu8t64_0.14.0-4_s390x.deb ... 298s Unpacking liburcu8t64:s390x (0.14.0-4) over (0.14.0-3.1build1) ... 298s Setting up liburcu8t64:s390x (0.14.0-4) ... 298s Setting up libnetplan1:s390x (1.0-3ubuntu1) ... 298s Setting up python3-netplan (1.0-3ubuntu1) ... 298s Setting up netplan-generator (1.0-3ubuntu1) ... 298s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 298s Setting up netplan.io (1.0-3ubuntu1) ... 298s Setting up libheif-plugin-aomdec:s390x (1.17.6-3) ... 298s Setting up libheif-plugin-libde265:s390x (1.17.6-3) ... 298s Setting up libheif1:s390x (1.17.6-3) ... 298s Setting up libheif-plugin-aomenc:s390x (1.17.6-3) ... 298s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 298s Processing triggers for man-db (2.12.1-1) ... 299s Processing triggers for dbus (1.14.10-4ubuntu4) ... 300s Reading package lists... 300s Building dependency tree... 300s Reading state information... 300s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 301s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 301s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 301s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 301s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 302s Reading package lists... 303s Reading package lists... 303s Building dependency tree... 303s Reading state information... 303s Calculating upgrade... 303s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 303s Reading package lists... 304s Building dependency tree... 304s Reading state information... 304s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 308s Reading package lists... 309s Building dependency tree... 309s Reading state information... 309s Starting pkgProblemResolver with broken count: 0 309s Starting 2 pkgProblemResolver with broken count: 0 309s Done 310s The following additional packages will be installed: 310s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 310s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 310s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 310s python3-aeidon python3-all python3-bs4 python3-cheroot python3-dateutil 310s python3-diff-match-patch python3-enchant python3-iniconfig python3-iniparse 310s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 310s python3-more-itertools python3-packaging python3-phply python3-pluggy 310s python3-ply python3-pycountry python3-pytest python3-rapidfuzz 310s python3-ruamel.yaml python3-ruamel.yaml.clib python3-simplejson 310s python3-soupsieve python3-syrupy python3-translate python3-vobject 310s python3-xapian subversion 310s Suggested packages: 310s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 310s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 310s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 310s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 310s db5.3-util libapache2-mod-svn subversion-tools 310s Recommended packages: 310s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 310s python3-cssselect python3-html5lib python3-tz 310s The following NEW packages will be installed: 310s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 310s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 310s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 310s libxslt1.1 python3-aeidon python3-all python3-bs4 python3-cheroot 310s python3-dateutil python3-diff-match-patch python3-enchant python3-iniconfig 310s python3-iniparse python3-jaraco.functools python3-levenshtein python3-lxml 310s python3-mistletoe python3-more-itertools python3-packaging python3-phply 310s python3-pluggy python3-ply python3-pycountry python3-pytest 310s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 310s python3-simplejson python3-soupsieve python3-syrupy python3-translate 310s python3-vobject python3-xapian subversion 310s 0 upgraded, 47 newly installed, 0 to remove and 0 not upgraded. 310s Need to get 11.2 MB/11.2 MB of archives. 310s After this operation, 47.8 MB of additional disk space will be used. 310s Get:1 /tmp/autopkgtest.ZSvJAW/2-autopkgtest-satdep.deb autopkgtest-satdep s390x 0 [876 B] 310s Get:2 http://ftpmaster.internal/ubuntu oracular/main s390x emacsen-common all 3.0.5 [12.1 kB] 310s Get:3 http://ftpmaster.internal/ubuntu oracular/main s390x dictionaries-common all 1.29.7 [188 kB] 310s Get:4 http://ftpmaster.internal/ubuntu oracular/main s390x libgomp1 s390x 14.1.0-1ubuntu1 [151 kB] 310s Get:5 http://ftpmaster.internal/ubuntu oracular/main s390x gettext s390x 0.21-14ubuntu2 [915 kB] 310s Get:6 http://ftpmaster.internal/ubuntu oracular/main s390x hunspell-en-us all 1:2020.12.07-2 [280 kB] 311s Get:7 http://ftpmaster.internal/ubuntu oracular/main s390x libapr1t64 s390x 1.7.2-3.2 [113 kB] 311s Get:8 http://ftpmaster.internal/ubuntu oracular/main s390x libaprutil1t64 s390x 1.6.3-1.1ubuntu7 [99.6 kB] 311s Get:9 http://ftpmaster.internal/ubuntu oracular/main s390x libaspell15 s390x 0.60.8.1-1build1 [352 kB] 311s Get:10 http://ftpmaster.internal/ubuntu oracular/main s390x libhunspell-1.7-0 s390x 1.7.2+really1.7.2-10build3 [304 kB] 311s Get:11 http://ftpmaster.internal/ubuntu oracular/main s390x libenchant-2-2 s390x 2.3.3-2build2 [54.5 kB] 311s Get:12 http://ftpmaster.internal/ubuntu oracular/main s390x libexttextcat-data all 3.4.7-1build1 [193 kB] 311s Get:13 http://ftpmaster.internal/ubuntu oracular/universe s390x libserf-1-1 s390x 1.3.10-2 [49.7 kB] 311s Get:14 http://ftpmaster.internal/ubuntu oracular/universe s390x libutf8proc3 s390x 2.9.0-1build1 [71.1 kB] 311s Get:15 http://ftpmaster.internal/ubuntu oracular/universe s390x libsvn1 s390x 1.14.3-1build4 [1391 kB] 311s Get:16 http://ftpmaster.internal/ubuntu oracular/universe s390x libxapian30 s390x 1.4.22-1build1 [733 kB] 311s Get:17 http://ftpmaster.internal/ubuntu oracular/main s390x libxslt1.1 s390x 1.1.39-0exp1build1 [170 kB] 311s Get:18 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-aeidon all 1.11-2 [221 kB] 311s Get:19 http://ftpmaster.internal/ubuntu oracular/main s390x python3-all s390x 3.12.3-0ubuntu1 [890 B] 311s Get:20 http://ftpmaster.internal/ubuntu oracular/main s390x python3-soupsieve all 2.5-1 [33.0 kB] 311s Get:21 http://ftpmaster.internal/ubuntu oracular/main s390x python3-bs4 all 4.12.3-1 [109 kB] 311s Get:22 http://ftpmaster.internal/ubuntu oracular/main s390x python3-more-itertools all 10.2.0-1 [52.9 kB] 311s Get:23 http://ftpmaster.internal/ubuntu oracular/main s390x python3-jaraco.functools all 4.0.0-1 [10.7 kB] 311s Get:24 http://ftpmaster.internal/ubuntu oracular/main s390x python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 311s Get:25 http://ftpmaster.internal/ubuntu oracular/main s390x python3-dateutil all 2.9.0-2 [80.3 kB] 311s Get:26 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-diff-match-patch all 20230430-1 [33.1 kB] 311s Get:27 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-enchant all 3.2.2-1 [34.0 kB] 311s Get:28 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-iniconfig all 1.1.1-2 [6024 B] 311s Get:29 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-rapidfuzz s390x 3.6.2+ds-3 [1484 kB] 311s Get:30 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-levenshtein s390x 0.25.1-3 [186 kB] 311s Get:31 http://ftpmaster.internal/ubuntu oracular/main s390x python3-lxml s390x 5.2.1-1 [1300 kB] 311s Get:32 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-mistletoe all 1.3.0-1 [38.0 kB] 311s Get:33 http://ftpmaster.internal/ubuntu oracular/main s390x python3-packaging all 24.0-1 [41.1 kB] 311s Get:34 http://ftpmaster.internal/ubuntu oracular/main s390x python3-ply all 3.11-6 [46.5 kB] 311s Get:35 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-phply all 1.2.6-1 [50.5 kB] 311s Get:36 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-pluggy all 1.5.0-1 [21.0 kB] 311s Get:37 http://ftpmaster.internal/ubuntu oracular-proposed/universe s390x python3-pytest all 8.2.2-1ubuntu1 [250 kB] 311s Get:38 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-ruamel.yaml.clib s390x 0.2.8-1build1 [142 kB] 311s Get:39 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 311s Get:40 http://ftpmaster.internal/ubuntu oracular/main s390x python3-simplejson s390x 3.19.2-1build2 [55.2 kB] 311s Get:41 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-syrupy all 4.6.1-1 [42.8 kB] 311s Get:42 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-translate all 3.12.2-1ubuntu1 [318 kB] 311s Get:43 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-vobject all 0.9.6.1-2 [40.6 kB] 311s Get:44 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-xapian s390x 1.4.22-1build5 [366 kB] 311s Get:45 http://ftpmaster.internal/ubuntu oracular/universe s390x subversion s390x 1.14.3-1build4 [912 kB] 311s Get:46 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-iniparse all 0.5-2 [20.0 kB] 311s Get:47 http://ftpmaster.internal/ubuntu oracular/universe s390x python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 312s Preconfiguring packages ... 312s Fetched 11.2 MB in 1s (9771 kB/s) 312s Selecting previously unselected package emacsen-common. 312s (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 ... 54607 files and directories currently installed.) 312s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 312s Unpacking emacsen-common (3.0.5) ... 312s Selecting previously unselected package dictionaries-common. 312s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 312s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 312s Unpacking dictionaries-common (1.29.7) ... 312s Selecting previously unselected package libgomp1:s390x. 312s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_s390x.deb ... 312s Unpacking libgomp1:s390x (14.1.0-1ubuntu1) ... 312s Selecting previously unselected package gettext. 312s Preparing to unpack .../03-gettext_0.21-14ubuntu2_s390x.deb ... 312s Unpacking gettext (0.21-14ubuntu2) ... 312s Selecting previously unselected package hunspell-en-us. 312s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 312s Unpacking hunspell-en-us (1:2020.12.07-2) ... 312s Selecting previously unselected package libapr1t64:s390x. 312s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_s390x.deb ... 312s Unpacking libapr1t64:s390x (1.7.2-3.2) ... 312s Selecting previously unselected package libaprutil1t64:s390x. 312s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_s390x.deb ... 312s Unpacking libaprutil1t64:s390x (1.6.3-1.1ubuntu7) ... 312s Selecting previously unselected package libaspell15:s390x. 312s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_s390x.deb ... 312s Unpacking libaspell15:s390x (0.60.8.1-1build1) ... 312s Selecting previously unselected package libhunspell-1.7-0:s390x. 312s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_s390x.deb ... 312s Unpacking libhunspell-1.7-0:s390x (1.7.2+really1.7.2-10build3) ... 312s Selecting previously unselected package libenchant-2-2:s390x. 312s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_s390x.deb ... 312s Unpacking libenchant-2-2:s390x (2.3.3-2build2) ... 312s Selecting previously unselected package libexttextcat-data. 312s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 312s Unpacking libexttextcat-data (3.4.7-1build1) ... 312s Selecting previously unselected package libserf-1-1:s390x. 312s Preparing to unpack .../11-libserf-1-1_1.3.10-2_s390x.deb ... 312s Unpacking libserf-1-1:s390x (1.3.10-2) ... 312s Selecting previously unselected package libutf8proc3:s390x. 312s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_s390x.deb ... 312s Unpacking libutf8proc3:s390x (2.9.0-1build1) ... 312s Selecting previously unselected package libsvn1:s390x. 312s Preparing to unpack .../13-libsvn1_1.14.3-1build4_s390x.deb ... 312s Unpacking libsvn1:s390x (1.14.3-1build4) ... 313s Selecting previously unselected package libxapian30:s390x. 313s Preparing to unpack .../14-libxapian30_1.4.22-1build1_s390x.deb ... 313s Unpacking libxapian30:s390x (1.4.22-1build1) ... 313s Selecting previously unselected package libxslt1.1:s390x. 313s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_s390x.deb ... 313s Unpacking libxslt1.1:s390x (1.1.39-0exp1build1) ... 313s Selecting previously unselected package python3-aeidon. 313s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 313s Unpacking python3-aeidon (1.11-2) ... 313s Selecting previously unselected package python3-all. 313s Preparing to unpack .../17-python3-all_3.12.3-0ubuntu1_s390x.deb ... 313s Unpacking python3-all (3.12.3-0ubuntu1) ... 313s Selecting previously unselected package python3-soupsieve. 313s Preparing to unpack .../18-python3-soupsieve_2.5-1_all.deb ... 313s Unpacking python3-soupsieve (2.5-1) ... 313s Selecting previously unselected package python3-bs4. 313s Preparing to unpack .../19-python3-bs4_4.12.3-1_all.deb ... 313s Unpacking python3-bs4 (4.12.3-1) ... 313s Selecting previously unselected package python3-more-itertools. 313s Preparing to unpack .../20-python3-more-itertools_10.2.0-1_all.deb ... 313s Unpacking python3-more-itertools (10.2.0-1) ... 313s Selecting previously unselected package python3-jaraco.functools. 313s Preparing to unpack .../21-python3-jaraco.functools_4.0.0-1_all.deb ... 313s Unpacking python3-jaraco.functools (4.0.0-1) ... 313s Selecting previously unselected package python3-cheroot. 313s Preparing to unpack .../22-python3-cheroot_10.0.0+ds1-2_all.deb ... 313s Unpacking python3-cheroot (10.0.0+ds1-2) ... 313s Selecting previously unselected package python3-dateutil. 313s Preparing to unpack .../23-python3-dateutil_2.9.0-2_all.deb ... 313s Unpacking python3-dateutil (2.9.0-2) ... 313s Selecting previously unselected package python3-diff-match-patch. 313s Preparing to unpack .../24-python3-diff-match-patch_20230430-1_all.deb ... 313s Unpacking python3-diff-match-patch (20230430-1) ... 313s Selecting previously unselected package python3-enchant. 313s Preparing to unpack .../25-python3-enchant_3.2.2-1_all.deb ... 313s Unpacking python3-enchant (3.2.2-1) ... 313s Selecting previously unselected package python3-iniconfig. 313s Preparing to unpack .../26-python3-iniconfig_1.1.1-2_all.deb ... 313s Unpacking python3-iniconfig (1.1.1-2) ... 313s Selecting previously unselected package python3-rapidfuzz. 313s Preparing to unpack .../27-python3-rapidfuzz_3.6.2+ds-3_s390x.deb ... 313s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 313s Selecting previously unselected package python3-levenshtein. 313s Preparing to unpack .../28-python3-levenshtein_0.25.1-3_s390x.deb ... 313s Unpacking python3-levenshtein (0.25.1-3) ... 313s Selecting previously unselected package python3-lxml:s390x. 313s Preparing to unpack .../29-python3-lxml_5.2.1-1_s390x.deb ... 313s Unpacking python3-lxml:s390x (5.2.1-1) ... 313s Selecting previously unselected package python3-mistletoe. 313s Preparing to unpack .../30-python3-mistletoe_1.3.0-1_all.deb ... 313s Unpacking python3-mistletoe (1.3.0-1) ... 313s Selecting previously unselected package python3-packaging. 313s Preparing to unpack .../31-python3-packaging_24.0-1_all.deb ... 313s Unpacking python3-packaging (24.0-1) ... 313s Selecting previously unselected package python3-ply. 313s Preparing to unpack .../32-python3-ply_3.11-6_all.deb ... 313s Unpacking python3-ply (3.11-6) ... 313s Selecting previously unselected package python3-phply. 313s Preparing to unpack .../33-python3-phply_1.2.6-1_all.deb ... 313s Unpacking python3-phply (1.2.6-1) ... 313s Selecting previously unselected package python3-pluggy. 313s Preparing to unpack .../34-python3-pluggy_1.5.0-1_all.deb ... 313s Unpacking python3-pluggy (1.5.0-1) ... 313s Selecting previously unselected package python3-pytest. 313s Preparing to unpack .../35-python3-pytest_8.2.2-1ubuntu1_all.deb ... 313s Unpacking python3-pytest (8.2.2-1ubuntu1) ... 313s Selecting previously unselected package python3-ruamel.yaml.clib:s390x. 313s Preparing to unpack .../36-python3-ruamel.yaml.clib_0.2.8-1build1_s390x.deb ... 313s Unpacking python3-ruamel.yaml.clib:s390x (0.2.8-1build1) ... 313s Selecting previously unselected package python3-ruamel.yaml. 313s Preparing to unpack .../37-python3-ruamel.yaml_0.17.21-1_all.deb ... 313s Unpacking python3-ruamel.yaml (0.17.21-1) ... 313s Selecting previously unselected package python3-simplejson. 313s Preparing to unpack .../38-python3-simplejson_3.19.2-1build2_s390x.deb ... 313s Unpacking python3-simplejson (3.19.2-1build2) ... 313s Selecting previously unselected package python3-syrupy. 313s Preparing to unpack .../39-python3-syrupy_4.6.1-1_all.deb ... 313s Unpacking python3-syrupy (4.6.1-1) ... 314s Selecting previously unselected package python3-translate. 314s Preparing to unpack .../40-python3-translate_3.12.2-1ubuntu1_all.deb ... 314s Unpacking python3-translate (3.12.2-1ubuntu1) ... 314s Selecting previously unselected package python3-vobject. 314s Preparing to unpack .../41-python3-vobject_0.9.6.1-2_all.deb ... 314s Unpacking python3-vobject (0.9.6.1-2) ... 314s Selecting previously unselected package python3-xapian. 314s Preparing to unpack .../42-python3-xapian_1.4.22-1build5_s390x.deb ... 314s Unpacking python3-xapian (1.4.22-1build5) ... 314s Selecting previously unselected package subversion. 314s Preparing to unpack .../43-subversion_1.14.3-1build4_s390x.deb ... 314s Unpacking subversion (1.14.3-1build4) ... 314s Selecting previously unselected package python3-iniparse. 314s Preparing to unpack .../44-python3-iniparse_0.5-2_all.deb ... 314s Unpacking python3-iniparse (0.5-2) ... 314s Selecting previously unselected package python3-pycountry. 314s Preparing to unpack .../45-python3-pycountry_23.12.11+ds1-2_all.deb ... 314s Unpacking python3-pycountry (23.12.11+ds1-2) ... 314s Selecting previously unselected package autopkgtest-satdep. 314s Preparing to unpack .../46-2-autopkgtest-satdep.deb ... 314s Unpacking autopkgtest-satdep (0) ... 314s Setting up python3-more-itertools (10.2.0-1) ... 314s Setting up python3-iniconfig (1.1.1-2) ... 315s Setting up libxapian30:s390x (1.4.22-1build1) ... 315s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 315s Setting up python3-diff-match-patch (20230430-1) ... 315s Setting up python3-jaraco.functools (4.0.0-1) ... 316s Setting up python3-aeidon (1.11-2) ... 316s Setting up libutf8proc3:s390x (2.9.0-1build1) ... 316s Setting up libaspell15:s390x (0.60.8.1-1build1) ... 316s Setting up python3-ply (3.11-6) ... 316s Setting up python3-ruamel.yaml.clib:s390x (0.2.8-1build1) ... 316s Setting up python3-all (3.12.3-0ubuntu1) ... 316s Setting up libgomp1:s390x (14.1.0-1ubuntu1) ... 316s Setting up python3-simplejson (3.19.2-1build2) ... 317s Setting up python3-packaging (24.0-1) ... 317s Setting up emacsen-common (3.0.5) ... 317s Setting up python3-cheroot (10.0.0+ds1-2) ... 317s Setting up python3-pycountry (23.12.11+ds1-2) ... 318s Setting up python3-xapian (1.4.22-1build5) ... 318s Setting up python3-pluggy (1.5.0-1) ... 318s Setting up python3-ruamel.yaml (0.17.21-1) ... 319s Setting up python3-mistletoe (1.3.0-1) ... 319s Setting up libexttextcat-data (3.4.7-1build1) ... 319s Setting up libapr1t64:s390x (1.7.2-3.2) ... 319s Setting up libxslt1.1:s390x (1.1.39-0exp1build1) ... 319s Setting up python3-dateutil (2.9.0-2) ... 319s Setting up python3-levenshtein (0.25.1-3) ... 320s Setting up libhunspell-1.7-0:s390x (1.7.2+really1.7.2-10build3) ... 320s Setting up python3-soupsieve (2.5-1) ... 320s Setting up python3-iniparse (0.5-2) ... 320s Setting up libaprutil1t64:s390x (1.6.3-1.1ubuntu7) ... 320s Setting up python3-vobject (0.9.6.1-2) ... 320s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 320s patterns['name'] = '[a-zA-Z0-9\-_]+' 320s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 320s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 320s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 320s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 320s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 320s """ 320s Setting up gettext (0.21-14ubuntu2) ... 320s Setting up python3-phply (1.2.6-1) ... 321s Setting up dictionaries-common (1.29.7) ... 321s Setting up python3-pytest (8.2.2-1ubuntu1) ... 322s Setting up python3-syrupy (4.6.1-1) ... 322s Setting up libserf-1-1:s390x (1.3.10-2) ... 322s Setting up python3-bs4 (4.12.3-1) ... 322s Setting up python3-lxml:s390x (5.2.1-1) ... 322s Setting up hunspell-en-us (1:2020.12.07-2) ... 322s Setting up libsvn1:s390x (1.14.3-1build4) ... 323s Setting up libenchant-2-2:s390x (2.3.3-2build2) ... 323s Setting up subversion (1.14.3-1build4) ... 323s Setting up python3-enchant (3.2.2-1) ... 323s Setting up python3-translate (3.12.2-1ubuntu1) ... 324s Setting up autopkgtest-satdep (0) ... 324s Processing triggers for man-db (2.12.1-1) ... 324s Processing triggers for install-info (7.1-3build2) ... 325s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 325s Processing triggers for dictionaries-common (1.29.7) ... 329s (Reading database ... 58061 files and directories currently installed.) 329s Removing autopkgtest-satdep (0) ... 331s autopkgtest [03:06:06]: test python3-translate: [----------------------- 332s ============================= test session starts ============================== 332s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 332s cachedir: .pytest_cache 332s rootdir: /tmp/autopkgtest.ZSvJAW/autopkgtest_tmp 332s plugins: syrupy-4.6.1 341s collecting ... collected 3313 items / 2 skipped 341s 341s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 341s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 341s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 341s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 341s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 341s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 341s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 341s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 341s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 341s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 341s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 341s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 341s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 342s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 342s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 342s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 342s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 342s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 342s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 342s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 342s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 342s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 342s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 342s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 342s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 342s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 342s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 342s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 342s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 342s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 342s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 342s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 342s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 342s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 342s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 342s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 342s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 342s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 342s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 342s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 342s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 342s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 342s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 342s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 342s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 342s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 342s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 342s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 342s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 342s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 342s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 342s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 342s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 342s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 342s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 342s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 342s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 343s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 343s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 343s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 343s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 343s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 343s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 343s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 343s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 343s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 343s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 343s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 343s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 343s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 343s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 343s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 343s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 343s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 343s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 343s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 343s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 343s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 343s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 343s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 343s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 344s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 344s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 344s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 344s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 344s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 344s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 344s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 344s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 344s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 344s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 344s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 344s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 344s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 344s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 344s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 344s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 344s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 344s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 344s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 344s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 344s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 344s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 345s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 345s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 345s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 345s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 345s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 345s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 345s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 345s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 345s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 345s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 345s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 345s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 345s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 345s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 345s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 345s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 345s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 345s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 345s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 345s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 345s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 345s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 345s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 345s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 345s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 345s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 345s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 345s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 345s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 345s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 345s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 346s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 346s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 346s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 346s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 346s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 346s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 346s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 346s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 346s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 346s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 346s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 346s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 346s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 346s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 346s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 346s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 347s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 347s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 347s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 347s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 347s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 347s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 347s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 347s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 347s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 347s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 347s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 347s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 347s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 347s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 347s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 347s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 347s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 347s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 347s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 347s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 347s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 347s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 347s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 347s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 347s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 347s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 347s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 347s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 347s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 347s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 347s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 347s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 347s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 347s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 347s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 347s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 347s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 347s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 347s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 347s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 347s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 347s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 347s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 347s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 347s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 347s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 347s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 347s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 347s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 347s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 347s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 347s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 347s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 347s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 347s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 347s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 347s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 347s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 347s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 347s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 347s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 347s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 347s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 347s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 347s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 347s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 347s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 347s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 347s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 347s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 347s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 347s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 347s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 347s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 347s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 347s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 347s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 347s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 347s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 347s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 347s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 347s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 347s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 347s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 347s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 347s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 347s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 347s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 348s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 348s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 348s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 348s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 348s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 348s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 348s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 348s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 348s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 348s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 348s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 348s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 348s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 348s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 348s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 348s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 348s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 348s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 348s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 348s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 348s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 348s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 348s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 348s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 348s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 348s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 348s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 348s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 348s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 348s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 348s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 348s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 348s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 348s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 348s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 348s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 348s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 348s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 348s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 348s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 348s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 348s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 348s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 349s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 349s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 349s tests/translate/storage/test_mo.py::TestMOFile::test_output SKIPPED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 349s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 349s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 349s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 349s 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%] 349s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 349s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 349s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 349s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 349s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 349s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 349s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 349s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 349s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 349s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 349s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 349s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 349s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 349s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 350s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 350s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 350s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 350s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 350s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 350s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 350s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 350s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 350s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 350s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 350s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 350s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 350s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 350s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 350s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 350s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 350s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 350s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 353s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 353s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 353s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 353s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 353s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 353s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 353s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 353s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 353s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 353s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 353s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 353s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 353s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 353s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 353s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 353s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 353s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 353s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 353s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 354s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 354s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 354s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 354s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 354s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 354s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 354s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 354s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 354s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 354s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 354s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 354s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 354s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 354s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 354s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 354s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 354s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 354s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 355s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 355s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 355s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 355s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 355s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 355s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 355s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 355s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 355s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 355s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 355s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 355s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 355s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 355s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 355s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 355s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 355s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 355s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 355s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 355s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 357s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 357s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 357s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 357s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 357s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 357s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 357s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 357s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 357s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 357s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 357s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 357s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 357s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 357s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 357s tests/translate/tools/test_help.py::test_help[build_tmdb] SKIPPED (S...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[phppo2pypo] SKIPPED (S...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[poclean] SKIPPED (Skip...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[pocompile] SKIPPED (Sk...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[poconflicts] SKIPPED (...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[pocount] SKIPPED (Skip...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[podebug] SKIPPED (Skip...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[pogrep] SKIPPED (Skip ...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[pomerge] SKIPPED (Skip...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[porestructure] SKIPPED [ 94%] 357s tests/translate/tools/test_help.py::test_help[posegment] SKIPPED (Sk...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[poswap] SKIPPED (Skip ...) [ 94%] 357s tests/translate/tools/test_help.py::test_help[poterminology] SKIPPED [ 95%] 357s tests/translate/tools/test_help.py::test_help[pretranslate] SKIPPED [ 95%] 357s tests/translate/tools/test_help.py::test_help[pydiff] SKIPPED (Skip ...) [ 95%] 357s tests/translate/tools/test_help.py::test_help[pypo2phppo] SKIPPED (S...) [ 95%] 357s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 357s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 358s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 358s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 358s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 358s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 358s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 358s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 358s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 358s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 358s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 358s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 359s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 359s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 359s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 359s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 359s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 359s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 359s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 359s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 359s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 359s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 359s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 359s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 359s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 359s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 359s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff SKIPPED [ 99%] 359s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff SKIPPED [100%] 359s 359s ================================== XFAILURES =================================== 359s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_accelerator_keys_not_in_sentence(self): 359s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 359s dtdtemplate = """ 359s """ 359s dtdlanguage = """ 359s """ 359s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 359s print(pofile) 359s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 359s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 359s 359s tests/translate/convert/test_dtd2po.py:348: AttributeError 359s ----------------------------- Captured stdout call ----------------------------- 359s 359s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_accelerator_keys_not_in_sentence(self): 359s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 359s dtdtemplate = """ 359s """ 359s dtdlanguage = """ 359s """ 359s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 359s print(pofile) 359s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 359s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 359s 359s tests/translate/convert/test_dtd2po.py:348: AttributeError 359s ----------------------------- Captured stdout call ----------------------------- 359s 359s ________________ TestPO2Php.test_merging_propertyless_template _________________ 359s 359s self = 359s 359s @mark.xfail(reason="Need to review if we want this behaviour") 359s def test_merging_propertyless_template(self): 359s """Check that when merging with a template with no property values that we copy the template.""" 359s posource = "" 359s proptemplate = "# A comment\n" 359s propexpected = proptemplate 359s > propfile = self.merge2prop(proptemplate, posource) 359s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 359s 359s tests/translate/convert/test_po2php.py:386: AttributeError 359s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 359s 359s self = 359s 359s @mark.xfail(reason="Need to review if we want this behaviour") 359s def test_merging_propertyless_template(self): 359s """Check that when merging with a template with no property values that we copy the template.""" 359s posource = "" 359s proptemplate = "# A comment\n" 359s propexpected = proptemplate 359s > propfile = self.merge2prop(proptemplate, posource) 359s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 359s 359s tests/translate/convert/test_po2php.py:386: AttributeError 359s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 359s 359s self = 359s 359s @mark.xfail(reason="Not implemented - review if this is even correct") 359s def test_merging_msgid_change(self): 359s """Tests that if the msgid changes but the location stays the same that we merge.""" 359s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 359s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 359s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 359s newpo = self.convertpot(potsource, posource) 359s print(newpo) 359s > assert str(self.singleunit(newpo)) == poexpected 359s 359s tests/translate/convert/test_pot2po.py:121: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s pofile = 359s 359s @staticmethod 359s def singleunit(pofile): 359s """Checks that the pofile contains a single non-header unit, and returns it.""" 359s > assert len(pofile.units) == 2 359s E assert 3 == 2 359s E + where 3 = len([, , ]) 359s E + where [, , ] = .units 359s 359s tests/translate/convert/test_pot2po.py:25: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s 359s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented - needs review") 359s def test_merging_accelerator_changes(self): 359s """Test that a change in the accelerator localtion still allows merging.""" 359s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 359s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 359s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 359s newpo = self.convertpot(potsource, posource) 359s print(newpo) 359s > assert str(self.singleunit(newpo)) == poexpected 359s 359s tests/translate/convert/test_pot2po.py:190: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s pofile = 359s 359s @staticmethod 359s def singleunit(pofile): 359s """Checks that the pofile contains a single non-header unit, and returns it.""" 359s > assert len(pofile.units) == 2 359s E assert 3 == 2 359s E + where 3 = len([, , ]) 359s E + where [, , ] = .units 359s 359s tests/translate/convert/test_pot2po.py:25: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s 359s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented - review if this is even correct") 359s def test_lines_cut_differently(self): 359s """Checks that the correct formatting is preserved when pot an po lines differ.""" 359s potsource = ( 359s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 359s ) 359s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 359s newpo = self.convertpot(potsource, posource) 359s newpounit = self.singleunit(newpo) 359s > assert str(newpounit) == posource 359s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 359s E 359s E #: simple.label 359s E - msgid "Line" 359s E + msgid "Line split " 359s E ? +++++++ 359s E - " split differently" 359s E ? ------- 359s E + "differently" 359s E msgstr "Lyne verskillend gesny" 359s 359s tests/translate/convert/test_pot2po.py:201: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s #: simple.label 359s msgid "Line split " 359s "differently" 359s msgstr "Lyne verskillend gesny" 359s 359s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 359s 359s self = 359s 359s @mark.xfail(reason="Not implemented - review if this is even correct") 359s def test_merging_msgid_change(self): 359s """Tests that if the msgid changes but the location stays the same that we merge.""" 359s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 359s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 359s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 359s newpo = self.convertpot(potsource, posource) 359s print(newpo) 359s > assert str(self.singleunit(newpo)) == poexpected 359s 359s tests/translate/convert/test_pot2po.py:121: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s pofile = 359s 359s @staticmethod 359s def singleunit(pofile): 359s """Checks that the pofile contains a single non-header unit, and returns it.""" 359s > assert len(pofile.units) == 2 359s E assert 3 == 2 359s E + where 3 = len([, , ]) 359s E + where [, , ] = .units 359s 359s tests/translate/convert/test_pot2po.py:25: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s 359s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented - needs review") 359s def test_merging_accelerator_changes(self): 359s """Test that a change in the accelerator localtion still allows merging.""" 359s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 359s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 359s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 359s newpo = self.convertpot(potsource, posource) 359s print(newpo) 359s > assert str(self.singleunit(newpo)) == poexpected 359s 359s tests/translate/convert/test_pot2po.py:190: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s pofile = 359s 359s @staticmethod 359s def singleunit(pofile): 359s """Checks that the pofile contains a single non-header unit, and returns it.""" 359s > assert len(pofile.units) == 2 359s E assert 3 == 2 359s E + where 3 = len([, , ]) 359s E + where [, , ] = .units 359s 359s tests/translate/convert/test_pot2po.py:25: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s 359s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented - review if this is even correct") 359s def test_lines_cut_differently(self): 359s """Checks that the correct formatting is preserved when pot an po lines differ.""" 359s potsource = ( 359s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 359s ) 359s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 359s newpo = self.convertpot(potsource, posource) 359s newpounit = self.singleunit(newpo) 359s > assert str(newpounit) == posource 359s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 359s E 359s E #: simple.label 359s E - msgid "Line" 359s E + msgid "Line split " 359s E ? +++++++ 359s E - " split differently" 359s E ? ------- 359s E + "differently" 359s E msgstr "Lyne verskillend gesny" 359s 359s tests/translate/convert/test_pot2po.py:201: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s #: simple.label 359s msgid "Line split " 359s "differently" 359s msgstr "Lyne verskillend gesny" 359s 359s ________________________ TestYAML2PO.test_no_duplicates ________________________ 359s 359s self = 359s input = '\nfoo: bar\nfoo: baz\n' 359s 359s def parse(self, input): 359s """Parse the given file or file source string.""" 359s if hasattr(input, "name"): 359s self.filename = input.name 359s elif not getattr(self, "filename", ""): 359s self.filename = "" 359s if hasattr(input, "read"): 359s src = input.read() 359s input.close() 359s input = src 359s if isinstance(input, bytes): 359s input = input.decode("utf-8") 359s try: 359s > self._original = self.yaml.load(input) 359s 359s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 359s return constructor.get_single_data() 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 359s return self.construct_document(node) 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 359s for _dummy in generator: 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 359s self.construct_mapping(node, data, deep=True) 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 359s if self.check_mapping_key(node, key_node, maptyp, key, value): 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s self = 359s 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'))]) 359s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 359s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 359s 359s def check_mapping_key(self, node, key_node, mapping, key, value): 359s # type: (Any, Any, Any, Any, Any) -> bool 359s """return True if key is unique""" 359s if key in mapping: 359s if not self.allow_duplicate_keys: 359s mk = mapping.get(key) 359s args = [ 359s 'while constructing a mapping', 359s node.start_mark, 359s 'found duplicate key "{}" with value "{}" ' 359s '(original value: "{}")'.format(key, value, mk), 359s key_node.start_mark, 359s """ 359s To suppress this check see: 359s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 359s """, 359s """\ 359s Duplicate keys will become an error in future releases, and are errors 359s by default when using the new API. 359s """, 359s ] 359s if self.allow_duplicate_keys is None: 359s warnings.warn(DuplicateKeyFutureWarning(*args)) 359s else: 359s > raise DuplicateKeyError(*args) 359s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 359s E in "", line 2, column 1: 359s E foo: bar 359s E ^ (line: 2) 359s E found duplicate key "foo" with value "baz" (original value: "bar") 359s E in "", line 3, column 1: 359s E foo: baz 359s E ^ (line: 3) 359s E 359s E To suppress this check see: 359s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 359s 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 359s 359s During handling of the above exception, another exception occurred: 359s 359s self = 359s 359s @pytest.mark.xfail(reason="This is invalid YAML document") 359s def test_no_duplicates(self): 359s """Check converting drops duplicates.""" 359s input_string = """ 359s foo: bar 359s foo: baz 359s """ 359s > target_store = self._convert_to_store(input_string) 359s 359s tests/translate/convert/test_yaml2po.py:112: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 359s return self._convert(*args, **kwargs)[0] 359s tests/translate/convert/test_yaml2po.py:28: in _convert 359s converter = self.ConverterClass( 359s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 359s self.source_store = self.SourceStoreClass(input_file) 359s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 359s self.parse(inputfile) 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s self = 359s input = '\nfoo: bar\nfoo: baz\n' 359s 359s def parse(self, input): 359s """Parse the given file or file source string.""" 359s if hasattr(input, "name"): 359s self.filename = input.name 359s elif not getattr(self, "filename", ""): 359s self.filename = "" 359s if hasattr(input, "read"): 359s src = input.read() 359s input.close() 359s input = src 359s if isinstance(input, bytes): 359s input = input.decode("utf-8") 359s try: 359s self._original = self.yaml.load(input) 359s except YAMLError as e: 359s message = getattr(e, "problem", getattr(e, "message", str(e))) 359s if hasattr(e, "problem_mark"): 359s message += f" {e.problem_mark}" 359s > raise base.ParseError(message) 359s 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)' 359s 359s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 359s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 359s 359s self = 359s input = '\nfoo: bar\nfoo: baz\n' 359s 359s def parse(self, input): 359s """Parse the given file or file source string.""" 359s if hasattr(input, "name"): 359s self.filename = input.name 359s elif not getattr(self, "filename", ""): 359s self.filename = "" 359s if hasattr(input, "read"): 359s src = input.read() 359s input.close() 359s input = src 359s if isinstance(input, bytes): 359s input = input.decode("utf-8") 359s try: 359s > self._original = self.yaml.load(input) 359s 359s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 359s return constructor.get_single_data() 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 359s return self.construct_document(node) 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 359s for _dummy in generator: 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 359s self.construct_mapping(node, data, deep=True) 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 359s if self.check_mapping_key(node, key_node, maptyp, key, value): 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s self = 359s 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'))]) 359s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 359s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 359s 359s def check_mapping_key(self, node, key_node, mapping, key, value): 359s # type: (Any, Any, Any, Any, Any) -> bool 359s """return True if key is unique""" 359s if key in mapping: 359s if not self.allow_duplicate_keys: 359s mk = mapping.get(key) 359s args = [ 359s 'while constructing a mapping', 359s node.start_mark, 359s 'found duplicate key "{}" with value "{}" ' 359s '(original value: "{}")'.format(key, value, mk), 359s key_node.start_mark, 359s """ 359s To suppress this check see: 359s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 359s """, 359s """\ 359s Duplicate keys will become an error in future releases, and are errors 359s by default when using the new API. 359s """, 359s ] 359s if self.allow_duplicate_keys is None: 359s warnings.warn(DuplicateKeyFutureWarning(*args)) 359s else: 359s > raise DuplicateKeyError(*args) 359s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 359s E in "", line 2, column 1: 359s E foo: bar 359s E ^ (line: 2) 359s E found duplicate key "foo" with value "baz" (original value: "bar") 359s E in "", line 3, column 1: 359s E foo: baz 359s E ^ (line: 3) 359s E 359s E To suppress this check see: 359s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 359s 359s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 359s 359s During handling of the above exception, another exception occurred: 359s 359s self = 359s 359s @pytest.mark.xfail(reason="This is invalid YAML document") 359s def test_no_duplicates(self): 359s """Check converting drops duplicates.""" 359s input_string = """ 359s foo: bar 359s foo: baz 359s """ 359s > target_store = self._convert_to_store(input_string) 359s 359s tests/translate/convert/test_yaml2po.py:112: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 359s return self._convert(*args, **kwargs)[0] 359s tests/translate/convert/test_yaml2po.py:28: in _convert 359s converter = self.ConverterClass( 359s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 359s self.source_store = self.SourceStoreClass(input_file) 359s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 359s self.parse(inputfile) 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s self = 359s input = '\nfoo: bar\nfoo: baz\n' 359s 359s def parse(self, input): 359s """Parse the given file or file source string.""" 359s if hasattr(input, "name"): 359s self.filename = input.name 359s elif not getattr(self, "filename", ""): 359s self.filename = "" 359s if hasattr(input, "read"): 359s src = input.read() 359s input.close() 359s input = src 359s if isinstance(input, bytes): 359s input = input.decode("utf-8") 359s try: 359s self._original = self.yaml.load(input) 359s except YAMLError as e: 359s message = getattr(e, "problem", getattr(e, "message", str(e))) 359s if hasattr(e, "problem_mark"): 359s message += f" {e.problem_mark}" 359s > raise base.ParseError(message) 359s 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)' 359s 359s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 359s __________________________ test_acceleratedvariables ___________________________ 359s 359s @mark.xfail(reason="Accelerated variables needs a better implementation") 359s def test_acceleratedvariables(): 359s """Test for accelerated variables.""" 359s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 359s mozillachecker = checks.MozillaChecker() 359s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 359s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 359s 359s tests/translate/filters/test_checks.py:206: AttributeError 359s ___________________________ test_musttranslatewords ____________________________ 359s 359s @mark.xfail(reason="FIXME: All fails() tests are not working") 359s def test_musttranslatewords(): 359s """Tests stopwords.""" 359s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 359s assert passes( 359s stdchecker.musttranslatewords, 359s "This uses Mozilla of course", 359s "hierdie gebruik le mozille natuurlik", 359s ) 359s stdchecker = checks.StandardChecker( 359s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 359s ) 359s assert passes( 359s stdchecker.musttranslatewords, 359s "This uses Mozilla of course", 359s "hierdie gebruik le mozille natuurlik", 359s ) 359s > assert fails( 359s stdchecker.musttranslatewords, 359s "This uses Mozilla of course", 359s "hierdie gebruik Mozilla natuurlik", 359s ) 359s E AssertionError: assert False 359s E + where False = fails(>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 359s E + where > = .musttranslatewords 359s 359s tests/translate/filters/test_checks.py:612: AssertionError 359s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 359s 359s @mark.xfail(reason="Bug #3408") 359s def test_persian_single_and_double_quote_fail_at_the_same_time(): 359s """Test Persian single and double quote failures in string with single quotes.""" 359s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 359s 359s # With single quote check. 359s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 359s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 359s E assert False 359s E + where False = fails(>, "Path: '%S'", 'مسیر: "%S"\u200e') 359s E + where > = .singlequoting 359s 359s tests/translate/filters/test_checks.py:1271: AssertionError 359s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 359s 359s @mark.xfail(reason="Bug #3506") 359s def test_bengali_mozilla_inverted_xmltags(): 359s """Test Bengali Mozilla XML tags.""" 359s bn_mozilla_checker = checks.MozillaChecker( 359s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 359s ) 359s str_en = """We co-founded the WHAT-WG to.""" 359s str_bn = """এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।""" 359s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 359s E assert False 359s E + where False = passes(>, 'We co-founded the WHAT-WG to.', 'এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।') 359s E + where > = .xmltags 359s 359s tests/translate/filters/test_checks.py:2065: AssertionError 359s _______________________________ test_word_khmer ________________________________ 359s 359s @mark.xfail( 359s reason="ZWS is not considered a space in Python 2.6+. Khmer " 359s "should extend words() to include \\u200b in addition to " 359s "other word breakers." 359s ) 359s def test_word_khmer(): 359s language = common.Common 359s # Let's test Khmer with zero width space (\u200b) 359s words = language.words("ផ្ដល់\u200bយោបល់") 359s print("ផ្ដល់\u200bយោបល់") 359s print(language.words("ផ្ដល់<200b>យោបល់")) 359s print(["ផ្ដល់", "យោបល់"]) 359s > assert words == ["ផ្ដល់", "យោបល់"] 359s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 359s E 359s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 359s E Right contains one more item: 'យោបល់' 359s E 359s E Full diff: 359s E [ 359s E + 'ផ្ដល់\u200bយោបល់',... 359s E 359s E ...Full output truncated (3 lines hidden), use '-vv' to show 359s 359s tests/translate/lang/test_common.py:47: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s ផ្ដល់​យោបល់ 359s ['ផ្ដល់<200b>យោបល់'] 359s ['ផ្ដល់', 'យោបល់'] 359s __________________ TestConverters.test_to_general_placeables ___________________ 359s 359s self = 359s 359s @mark.xfail(reason="Test needs fixing, disabled for now") 359s def test_to_general_placeables(self): 359s basetree = base.to_base_placeables(self.elem) 359s gentree = general.to_general_placeables(basetree) 359s > assert gentree == self.elem 359s E assert '])>])> == '])>])> 359s E 359s E Full diff: 359s E - , '])>, , '])>])> 359s E ? ^^^ 359s E + , '])>, , '])>])> 359s E ? ^^^^^^ 359s 359s tests/translate/storage/placeables/test_base.py:210: AssertionError 359s ___________________ TestConverters.test_to_xliff_placeables ____________________ 359s 359s self = 359s 359s @mark.xfail(reason="Test needs fixing, disabled for now") 359s def test_to_xliff_placeables(self): 359s basetree = base.to_base_placeables(self.elem) 359s xliff_from_base = xliff.to_xliff_placeables(basetree) 359s > assert str(xliff_from_base) != str(self.elem) 359s E assert 'Ģët &brandLong;' != 'Ģët &brandLong;' 359s E + where 'Ģët &brandLong;' = str(, '])>, , '])>])>) 359s E + and 'Ģët &brandLong;' = str(, '])>, , '])>])>) 359s E + where , '])>, , '])>])> = .elem 359s 359s tests/translate/storage/placeables/test_base.py:216: AssertionError 359s _____________________ test_quotefordtd_unimplemented_cases _____________________ 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_quotefordtd_unimplemented_cases(): 359s """Test unimplemented quoting DTD cases.""" 359s > assert dtd.quotefordtd("Between

and

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

and

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

and

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

and

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

and

' 359s E 359s E -

and

359s E + <p> and </p> 359s 359s tests/translate/storage/test_dtd.py:103: AssertionError 359s ________________________ TestDTD.test_comment_following ________________________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_comment_following(self): 359s """Check that comments that appear after and entity are not pushed onto another line.""" 359s dtdsource = ' ' 359s dtdregen = self.dtdregen(dtdsource) 359s > assert dtdsource == dtdregen 359s E assert '' == ' 359s E - 359s E - 359s 359s tests/translate/storage/test_dtd.py:344: AssertionError 359s _________________________ TestDTD.test_invalid_quoting _________________________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_invalid_quoting(self): 359s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 359s # TODO: we should rather raise an error 359s dtdsource = '\n' 359s assert ( 359s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 359s ) 359s dtdfile = self.dtdparse(dtdsource) 359s assert len(dtdfile.units) == 1 359s dtdunit = dtdfile.units[0] 359s assert dtdunit.definition == '"bananas for sale"' 359s > assert bytes(dtdfile) == b'\n' 359s E assert b'' == b'\n' 359s E 359s E Full diff: 359s E - (b'\n') 359s E + b'' 359s 359s tests/translate/storage/test_dtd.py:364: AssertionError 359s __________________________ TestOtFile.test_extensions __________________________ 359s 359s self = 359s 359s @mark.xfail( 359s reason="This doesn't work, due to two store classes handling different " 359s "extensions, but factory listing it as one supported file type" 359s ) 359s def test_extensions(self): 359s > super().test_extensions() 359s 359s tests/translate/storage/test_omegat.py:20: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s self = 359s 359s def test_extensions(self): 359s """Test that the factory knows the extensions for this class.""" 359s supported = factory.supported_files() 359s supported_dict = { 359s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 359s } 359s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 359s return 359s detail = supported_dict[ 359s self.StoreClass.Name 359s ] # will start to get problematic once translated 359s print("Factory:", detail[0]) 359s print("StoreClass:", self.StoreClass.Extensions) 359s for ext in detail[0]: 359s > assert ext in self.StoreClass.Extensions 359s E AssertionError: assert 'tab' in ['utf8'] 359s E + where ['utf8'] = .Extensions 359s E + where = .StoreClass 359s 359s tests/translate/storage/test_base.py:386: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s Factory: ['utf8', 'tab'] 359s StoreClass: ['utf8'] 359s _________________________ TestPOFile.test_kde_plurals __________________________ 359s 359s self = 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_kde_plurals(self): 359s """Tests kde-style plurals. (Bug: 191).""" 359s posource = r"""msgid "_n Singular\n" 359s "Plural" 359s msgstr "Een\n" 359s "Twee\n" 359s "Drie" 359s """ 359s pofile = self.poparse(posource) 359s assert len(pofile.units) == 1 359s unit = pofile.units[0] 359s > assert unit.hasplural() 359s E assert False 359s E + where False = >() 359s E + where > = .hasplural 359s 359s tests/translate/storage/test_po.py:374: AssertionError 359s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 359s 359s self = 359s 359s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 359s def test_makeobsolete_untranslated(self): 359s """Tests making an untranslated unit obsolete.""" 359s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 359s pofile = self.poparse(posource) 359s unit = pofile.units[0] 359s print(bytes(pofile)) 359s assert not unit.isobsolete() 359s unit.makeobsolete() 359s > assert str(unit) == "" 359s E assert '#~ msgid "te...~ msgstr ""\n' == '' 359s E 359s E + #~ msgid "test" 359s E + #~ msgstr "" 359s 359s tests/translate/storage/test_po.py:449: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 359s ________________________ TestXWikiFullPage.test_remove _________________________ 359s 359s self = 359s 359s @mark.xfail(reason="removal not working in full page") 359s def test_remove(self): 359s > super().test_remove() 359s 359s tests/translate/storage/test_properties.py:1614: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s self = 359s 359s def test_remove(self): 359s """Tests removing a unit with a source string.""" 359s store = self.StoreClass() 359s unit = store.addsourceunit("Test String") 359s # Some storages (MO, OmegaT) serialize only translated units 359s unit.target = "Test target" 359s assert headerless_len(store.units) == 1 359s withunit = bytes(store) 359s print(withunit) 359s store.removeunit(unit) 359s assert headerless_len(store.units) == 0 359s withoutunit = bytes(store) 359s print(withoutunit) 359s > assert withoutunit != withunit 359s 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' 359s 359s tests/translate/storage/test_base.py:278: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s 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' 359s 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' 359s ________________________ TestPYPOFile.test_kde_plurals _________________________ 359s 359s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x3ff9017da90> 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_kde_plurals(self): 359s """Tests kde-style plurals. (Bug: 191).""" 359s posource = r"""msgid "_n Singular\n" 359s "Plural" 359s msgstr "Een\n" 359s "Twee\n" 359s "Drie" 359s """ 359s pofile = self.poparse(posource) 359s assert len(pofile.units) == 1 359s unit = pofile.units[0] 359s > assert unit.hasplural() 359s E assert False 359s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x3ff8cf82c60>>() 359s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x3ff8cf82c60>> = <translate.storage.pypo.pounit object at 0x3ff8cf82c60>.hasplural 359s 359s tests/translate/storage/test_po.py:374: AssertionError 359s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 359s 359s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x3ff9017f4d0> 359s 359s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 359s def test_makeobsolete_untranslated(self): 359s """Tests making an untranslated unit obsolete.""" 359s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 359s pofile = self.poparse(posource) 359s unit = pofile.units[0] 359s print(bytes(pofile)) 359s assert not unit.isobsolete() 359s unit.makeobsolete() 359s > assert str(unit) == "" 359s E assert '#~ msgid "te...~ msgstr ""\n' == '' 359s E 359s E + #~ msgid "test" 359s E + #~ msgstr "" 359s 359s tests/translate/storage/test_po.py:449: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 359s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 359s 359s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x3ff906e6e40> 359s 359s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 359s def test_mixed_newlines_typecomment(self): 359s """Checks that mixed newlines in typecomments are properly parsed.""" 359s # This was generated by translate-tookit prior to 359s # issue that test_dos_newlines_write is covering was fixed. 359s posource = b"""#, fuzzy 359s msgid "test me"\r 359s msgstr ""\r 359s """ 359s > pofile = self.poparse(posource) 359s 359s tests/translate/storage/test_pypo.py:620: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s tests/translate/storage/test_po.py:214: in poparse 359s return self.StoreClass(dummyfile) 359s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 359s super().__init__(inputfile, **kwargs) 359s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 359s self.parse(inputfile) 359s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 359s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s parse_state = <translate.storage.poparser.ParseState object at 0x3ff8cffc320> 359s store = <translate.storage.pypo.pofile object at 0x3ff8cf83bc0> 359s 359s def parse_units(parse_state, store): 359s unit = parse_header(parse_state, store) 359s while unit: 359s unit.infer_state() 359s store.addunit(unit) 359s unit = parse_unit(parse_state) 359s if not parse_state.eof: 359s > raise PoParseError(parse_state) 359s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 359s 359s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 359s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 359s 359s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x3ff906daf30> 359s 359s @pytest.mark.xfail(reason="Not Implemented") 359s def test_note_sanity(self): 359s > super().test_note_sanity() 359s 359s tests/translate/storage/test_subtitles.py:13: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x3ff906daf30> 359s 359s def test_note_sanity(self): 359s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 359s unit = self.unit 359s 359s unit.addnote("Test note 1", origin="translator") 359s unit.addnote("Test note 2", origin="translator") 359s unit.addnote("Test note 3", origin="translator") 359s expected_notes = "Test note 1\nTest note 2\nTest note 3" 359s actual_notes = unit.getnotes(origin="translator") 359s > assert actual_notes == expected_notes 359s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 359s E 359s E - Test note 1 359s E - Test note 2 359s E - Test note 3 359s 359s tests/translate/storage/test_base.py:180: AssertionError 359s __________________________ TestCount.test_plurals_kde __________________________ 359s 359s self = <tests.translate.tools.test_pocount.TestCount object at 0x3ff9134bda0> 359s 359s @mark.xfail(reason="Support commented out pending removal") 359s def test_plurals_kde(self): 359s """Test that we correcly count old style KDE plurals.""" 359s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 359s 359s tests/translate/tools/test_pocount.py:91: 359s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 359s 359s source = '_n: Singular\\n\nPlural', expectedsource = 2 359s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 359s 359s @staticmethod 359s def count(source, expectedsource, target=None, expectedtarget=None): 359s """Simple helper to check the respective word counts.""" 359s poelement = po.pounit(source) 359s if target is not None: 359s poelement.target = target 359s wordssource, wordstarget = pocount.wordsinunit(poelement) 359s print( 359s 'Source (expected=%d; actual=%d): "%s"' 359s % (expectedsource, wordssource, source) 359s ) 359s > assert wordssource == expectedsource 359s E assert 3 == 2 359s 359s tests/translate/tools/test_pocount.py:33: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s Source (expected=2; actual=3): "_n: Singular\n 359s Plural" 359s _________________________ TestPOMerge.test_escape_tabs _________________________ 359s 359s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x3ff913de060> 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_escape_tabs(self): 359s """Ensure that input tabs are escaped in the output, like gettext does.""" 359s # The strings below contains the tab character, not spaces. 359s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 359s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 359s expectedpo = r"""msgid "First\tSecond" 359s msgstr "Eerste\tTweede" 359s """ 359s pofile = self.mergestore(templatepo, mergepo) 359s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 359s > assert bytes(pofile).decode("utf-8") == expectedpo 359s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 359s E 359s E - msgid "First\tSecond" 359s E ? ^^ 359s E + msgid "First Second" 359s E ? ^ 359s E msgstr "Eerste\tTweede" 359s 359s tests/translate/tools/test_pomerge.py:349: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s Expected: 359s msgid "First\tSecond" 359s msgstr "Eerste\tTweede" 359s 359s 359s Merged: 359s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 359s __________________ TestPretranslate.test_merging_msgid_change __________________ 359s 359s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x3ff91340140> 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_merging_msgid_change(self): 359s """ 359s tests that if the msgid changes but the location stays the same that 359s we merge. 359s """ 359s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 359s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 359s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 359s newpo = self.pretranslatepo(input_source, template_source) 359s print(bytes(newpo)) 359s > assert bytes(newpo).decode("utf-8") == poexpected 359s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 359s E 359s E #: simple.label 359s E #: simple.accesskey 359s E - #, fuzzy 359s E msgid "Its &hard coding a newline.\n" 359s E - msgstr "&Hart gekoeerde nuwe lyne\n" 359s E + msgstr "" 359s 359s tests/translate/tools/test_pretranslate.py:130: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 359s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 359s 359s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x3ff913412b0> 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_merging_accelerator_changes(self): 359s """ 359s test that a change in the accelerator localtion still allows 359s merging. 359s """ 359s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 359s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 359s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 359s newpo = self.pretranslatepo(input_source, template_source) 359s print(bytes(newpo)) 359s > assert bytes(newpo).decode("utf-8") == poexpected 359s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 359s E 359s E #: someline.c 359s E msgid "A&bout" 359s E - msgstr "&Info" 359s E ? ----- 359s E + msgstr "" 359s 359s tests/translate/tools/test_pretranslate.py:185: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 359s _________________ TestPretranslate.test_lines_cut_differently __________________ 359s 359s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x3ff91340c80> 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_lines_cut_differently(self): 359s """ 359s Checks that the correct formatting is preserved when pot an po lines 359s differ. 359s """ 359s input_source = ( 359s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 359s ) 359s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 359s newpo = self.pretranslatepo(input_source, template_source) 359s newpounit = self.singleunit(newpo) 359s > assert str(newpounit) == template_source 359s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 359s E 359s E #: simple.label 359s E - msgid "Line" 359s E + msgid "Line split " 359s E ? +++++++ 359s E - " split differently" 359s E ? ------- 359s E + "differently" 359s E msgstr "Lyne verskillend gesny" 359s 359s tests/translate/tools/test_pretranslate.py:199: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s #: simple.label 359s msgid "Line split " 359s "differently" 359s msgstr "Lyne verskillend gesny" 359s 359s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 359s 359s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x3ff913411c0> 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_merging_msgid_change(self): 359s """ 359s tests that if the msgid changes but the location stays the same that 359s we merge. 359s """ 359s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 359s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 359s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 359s newpo = self.pretranslatepo(input_source, template_source) 359s print(bytes(newpo)) 359s > assert bytes(newpo).decode("utf-8") == poexpected 359s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 359s E 359s E #: simple.label 359s E #: simple.accesskey 359s E - #, fuzzy 359s E msgid "Its &hard coding a newline.\n" 359s E - msgstr "&Hart gekoeerde nuwe lyne\n" 359s E + msgstr "" 359s 359s tests/translate/tools/test_pretranslate.py:130: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 359s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 359s 359s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x3ff913407d0> 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_merging_accelerator_changes(self): 359s """ 359s test that a change in the accelerator localtion still allows 359s merging. 359s """ 359s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 359s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 359s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 359s newpo = self.pretranslatepo(input_source, template_source) 359s print(bytes(newpo)) 359s > assert bytes(newpo).decode("utf-8") == poexpected 359s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 359s E 359s E #: someline.c 359s E msgid "A&bout" 359s E - msgstr "&Info" 359s E ? ----- 359s E + msgstr "" 359s 359s tests/translate/tools/test_pretranslate.py:185: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 359s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 359s 359s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x3ff91342270> 359s 359s @mark.xfail(reason="Not Implemented") 359s def test_lines_cut_differently(self): 359s """ 359s Checks that the correct formatting is preserved when pot an po lines 359s differ. 359s """ 359s input_source = ( 359s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 359s ) 359s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 359s newpo = self.pretranslatepo(input_source, template_source) 359s newpounit = self.singleunit(newpo) 359s > assert str(newpounit) == template_source 359s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 359s E 359s E #: simple.label 359s E - msgid "Line" 359s E + msgid "Line split " 359s E ? +++++++ 359s E - " split differently" 359s E ? ------- 359s E + "differently" 359s E msgstr "Lyne verskillend gesny" 359s 359s tests/translate/tools/test_pretranslate.py:199: AssertionError 359s ----------------------------- Captured stdout call ----------------------------- 359s #: simple.label 359s msgid "Line split " 359s "differently" 359s msgstr "Lyne verskillend gesny" 359s 359s =============================== warnings summary =============================== 359s tests/translate/storage/test_cpo.py:15 359s Warning: 359s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 359s ImportError('gettext PO library not found') 359s In pytest 9.1 this warning will become an error by default. 359s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 359s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 359s 359s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 359s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ZSvJAW/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 359s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 359s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 359s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 359s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 359s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 359s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 359s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 359s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 359s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 359s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 359s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 359s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 359s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 359s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 359s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 359s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 359s Warning: Could not find accesskey for key.accesskey 359s 359s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 359s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 359s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 359s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 359s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 359s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ZSvJAW/autopkgtest_tmp/tests/translate/convert/test.idml'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 359s Warning: unclosed file <_io.BufferedReader name='translation.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 359s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 359s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 359s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 359s Warning: Could not find accesskey for prop.accesskey 359s 359s tests/translate/convert/test_po2tmx.py: 26 warnings 359s tests/translate/filters/test_pofilter.py: 13 warnings 359s tests/translate/storage/test_tbx.py: 17 warnings 359s tests/translate/storage/test_tmx.py: 24 warnings 359s 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' 359s 359s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 359s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 359s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 359s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 359s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 359s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 359s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 359s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 359s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 359s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 359s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 359s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 359s Enable tracemalloc to get traceback where the object was allocated. 359s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 359s 360s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 360s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 360s Enable tracemalloc to get traceback where the object was allocated. 360s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 360s 360s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 360s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ZSvJAW/autopkgtest_tmp/tests/translate/convert/test.odt'> 360s Enable tracemalloc to get traceback where the object was allocated. 360s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 360s 360s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 360s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 360s Enable tracemalloc to get traceback where the object was allocated. 360s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 360s 360s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 360s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 360s Enable tracemalloc to get traceback where the object was allocated. 360s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 360s 360s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 360s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 360s Enable tracemalloc to get traceback where the object was allocated. 360s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 360s 360s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 360s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 360s Enable tracemalloc to get traceback where the object was allocated. 360s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 360s 360s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 360s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 360s 360s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 360s Warning: DTD file '' does not validate 360s 360s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 360s --------------------------- snapshot report summary ---------------------------- 360s 23 snapshots passed. 360s =========================== short test summary info ============================ 360s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 360s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 360s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 360s SKIPPED [1] tests/translate/storage/test_mo.py:498: Skip testing command line tools 360s SKIPPED [16] tests/translate/tools/test_help.py:16: Skip testing command line tools 360s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:49: Skip testing command line tools 360s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:58: Skip testing command line tools 360s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 360s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 360s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 360s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 360s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 360s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 360s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 360s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 360s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 360s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 360s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 360s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 360s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 360s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 360s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 360s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 360s 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. 360s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 360s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 360s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 360s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 360s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 360s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 360s 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 360s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 360s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 360s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 360s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 360s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 360s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 360s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 360s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 360s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 360s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 360s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 360s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 360s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 360s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 360s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 360s ========= 3254 passed, 22 skipped, 39 xfailed, 127 warnings in 27.87s ========== 360s autopkgtest [03:06:35]: test python3-translate: -----------------------] 361s python3-translate PASS 361s autopkgtest [03:06:36]: test python3-translate: - - - - - - - - - - results - - - - - - - - - - 361s autopkgtest [03:06:36]: test python3-translate-commands: preparing testbed 363s Reading package lists... 363s Building dependency tree... 363s Reading state information... 363s Starting pkgProblemResolver with broken count: 0 363s Starting 2 pkgProblemResolver with broken count: 0 363s Done 363s The following additional packages will be installed: 363s translate-toolkit 363s Recommended packages: 363s translate-toolkit-doc 363s The following NEW packages will be installed: 363s autopkgtest-satdep translate-toolkit 363s 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. 363s Need to get 88.2 kB/89.1 kB of archives. 363s After this operation, 253 kB of additional disk space will be used. 363s Get:1 /tmp/autopkgtest.ZSvJAW/3-autopkgtest-satdep.deb autopkgtest-satdep s390x 0 [888 B] 364s Get:2 http://ftpmaster.internal/ubuntu oracular/universe s390x translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 364s Fetched 88.2 kB in 0s (306 kB/s) 364s Selecting previously unselected package translate-toolkit. 364s (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 ... 58061 files and directories currently installed.) 364s Preparing to unpack .../translate-toolkit_3.12.2-1ubuntu1_all.deb ... 364s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 364s Selecting previously unselected package autopkgtest-satdep. 364s Preparing to unpack .../3-autopkgtest-satdep.deb ... 364s Unpacking autopkgtest-satdep (0) ... 364s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 364s Setting up autopkgtest-satdep (0) ... 364s Processing triggers for man-db (2.12.1-1) ... 368s (Reading database ... 58234 files and directories currently installed.) 368s Removing autopkgtest-satdep (0) ... 368s autopkgtest [03:06:43]: test python3-translate-commands: [----------------------- 369s ============================= test session starts ============================== 369s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 369s cachedir: .pytest_cache 369s rootdir: /tmp/autopkgtest.ZSvJAW/autopkgtest_tmp 369s plugins: syrupy-4.6.1 378s collecting ... collected 3313 items / 2 skipped 378s 378s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 378s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 378s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 378s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 378s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 378s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 378s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 378s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 378s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 378s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 378s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 378s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 378s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 378s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 378s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 378s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 379s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 379s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 379s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 379s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 379s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 379s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 379s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 379s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 379s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 379s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 379s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 379s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 379s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 379s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 379s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 379s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 379s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 379s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 379s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 379s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 379s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 379s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 379s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 379s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 379s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 379s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 379s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 379s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 379s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 379s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 379s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 379s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 379s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 379s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 380s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 380s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 380s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 380s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 380s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 380s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 380s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 380s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 380s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 380s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 380s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 380s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 380s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 380s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 380s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 380s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 380s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 380s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 380s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 380s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 380s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 380s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 380s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 380s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 380s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 380s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 380s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 380s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 380s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 381s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 381s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 381s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 381s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 381s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 381s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 381s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 381s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 381s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 381s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 381s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 381s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 381s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 381s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 381s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 381s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 381s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 381s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 381s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 381s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 381s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 381s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 382s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 382s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 382s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 382s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 382s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 382s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 382s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 382s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 382s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 382s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 382s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 382s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 382s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 382s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 382s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 382s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 382s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 382s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 382s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 382s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 382s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 382s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 382s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 382s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 382s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 382s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 382s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 382s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 382s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 382s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 382s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 382s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 383s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 383s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 383s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 383s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 383s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 383s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 383s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 383s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 383s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 383s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 383s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 383s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 383s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 383s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 383s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 383s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 383s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 383s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 384s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 384s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 384s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 384s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 384s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 384s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 384s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 384s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 384s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 384s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 384s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 384s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 384s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 384s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 384s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 384s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 384s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 384s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 384s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 384s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 384s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 384s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 384s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 384s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 384s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 384s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 384s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 384s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 384s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 384s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 384s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 384s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 384s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 384s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 384s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 384s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 384s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 384s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 384s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 384s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 384s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 384s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 385s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 385s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 385s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 385s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 385s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 385s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 385s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 385s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 385s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 385s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 385s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 385s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 385s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 385s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 385s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 385s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 385s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 385s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 385s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 385s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 385s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 385s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 385s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 385s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 385s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 385s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 385s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 385s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 385s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 385s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 385s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 385s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 385s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 385s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 385s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 385s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 385s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 385s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 385s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 385s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 385s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 385s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 385s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 385s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 385s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 385s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 385s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 385s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 385s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 385s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 385s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 385s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 385s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 385s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 385s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 385s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 385s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 385s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 385s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 385s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 385s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 385s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 386s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 386s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 386s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 386s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 386s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 386s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 386s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 386s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 386s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 386s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 386s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 386s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 386s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 386s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 386s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 386s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 386s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 386s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 386s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 386s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 386s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 386s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 386s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 386s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 386s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 386s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 386s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 386s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 386s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 387s tests/translate/storage/test_mo.py::TestMOFile::test_output PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 387s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 387s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 387s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 387s 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%] 387s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 387s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 387s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 387s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 387s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 387s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 387s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 387s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 387s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 387s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 387s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 387s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 387s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 387s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 387s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 387s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 387s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 388s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 388s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 388s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 388s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 388s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 388s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 388s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 388s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 388s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 388s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 388s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 388s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 388s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 388s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 389s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 389s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 389s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 389s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 389s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 389s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 389s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 389s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 389s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 389s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 389s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 389s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 389s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 389s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 389s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 389s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 389s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 390s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 390s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 390s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 390s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 390s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 390s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 390s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 390s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 390s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 390s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 390s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 390s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 390s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 390s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 390s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 390s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 390s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 390s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 390s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 390s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 390s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 390s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 390s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 390s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 390s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 390s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 390s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 390s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 390s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 390s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 390s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 390s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 390s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 390s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 391s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 391s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 391s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 392s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 392s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 392s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 392s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 392s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 392s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 392s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 392s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 392s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 392s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 392s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 392s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[build_tmdb] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[phppo2pypo] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[poclean] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[pocompile] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[poconflicts] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[pocount] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[podebug] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[pogrep] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[pomerge] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[porestructure] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[posegment] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[poswap] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[poterminology] PASSED [ 95%] 394s tests/translate/tools/test_help.py::test_help[pretranslate] PASSED [ 95%] 394s tests/translate/tools/test_help.py::test_help[pydiff] PASSED [ 95%] 394s tests/translate/tools/test_help.py::test_help[pypo2phppo] PASSED [ 95%] 394s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 394s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 395s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 395s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 395s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 395s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 395s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 395s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 395s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 395s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 395s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 395s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff PASSED [ 99%] 396s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff PASSED [100%] 396s 396s ================================== XFAILURES =================================== 396s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 396s 396s self = <tests.translate.convert.test_dtd2po.TestDTD2PO object at 0x3ff8207a720> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_accelerator_keys_not_in_sentence(self): 396s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 396s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 396s <!ENTITY useAutoScroll.accesskey "a">""" 396s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 396s <!ENTITY useAutoScroll.accesskey "a">""" 396s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 396s print(pofile) 396s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 396s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 396s 396s tests/translate/convert/test_dtd2po.py:348: AttributeError 396s ----------------------------- Captured stdout call ----------------------------- 396s <translate.storage.pypo.pofile object at 0x3ff7faf8ce0> 396s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 396s 396s self = <tests.translate.convert.test_dtd2po.TestDTD2POCommand object at 0x3ff81faa300> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_accelerator_keys_not_in_sentence(self): 396s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 396s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 396s <!ENTITY useAutoScroll.accesskey "a">""" 396s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 396s <!ENTITY useAutoScroll.accesskey "a">""" 396s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 396s print(pofile) 396s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 396s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 396s 396s tests/translate/convert/test_dtd2po.py:348: AttributeError 396s ----------------------------- Captured stdout call ----------------------------- 396s <translate.storage.pypo.pofile object at 0x3ff7fafa660> 396s ________________ TestPO2Php.test_merging_propertyless_template _________________ 396s 396s self = <tests.translate.convert.test_po2php.TestPO2Php object at 0x3ff8111d5b0> 396s 396s @mark.xfail(reason="Need to review if we want this behaviour") 396s def test_merging_propertyless_template(self): 396s """Check that when merging with a template with no property values that we copy the template.""" 396s posource = "" 396s proptemplate = "# A comment\n" 396s propexpected = proptemplate 396s > propfile = self.merge2prop(proptemplate, posource) 396s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 396s 396s tests/translate/convert/test_po2php.py:386: AttributeError 396s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 396s 396s self = <tests.translate.convert.test_po2php.TestPO2PhpCommand object at 0x3ff8111ef90> 396s 396s @mark.xfail(reason="Need to review if we want this behaviour") 396s def test_merging_propertyless_template(self): 396s """Check that when merging with a template with no property values that we copy the template.""" 396s posource = "" 396s proptemplate = "# A comment\n" 396s propexpected = proptemplate 396s > propfile = self.merge2prop(proptemplate, posource) 396s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 396s 396s tests/translate/convert/test_po2php.py:386: AttributeError 396s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 396s 396s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x3ff80af7980> 396s 396s @mark.xfail(reason="Not implemented - review if this is even correct") 396s def test_merging_msgid_change(self): 396s """Tests that if the msgid changes but the location stays the same that we merge.""" 396s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 396s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 396s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 396s newpo = self.convertpot(potsource, posource) 396s print(newpo) 396s > assert str(self.singleunit(newpo)) == poexpected 396s 396s tests/translate/convert/test_pot2po.py:121: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s pofile = <translate.storage.pypo.pofile object at 0x3ff7f27caa0> 396s 396s @staticmethod 396s def singleunit(pofile): 396s """Checks that the pofile contains a single non-header unit, and returns it.""" 396s > assert len(pofile.units) == 2 396s E assert 3 == 2 396s E + where 3 = len([<translate.storage.pypo.pounit object at 0x3ff7f27ea50>, <translate.storage.pypo.pounit object at 0x3ff7f27d6d0>, <translate.storage.pypo.pounit object at 0x3ff7faf8890>]) 396s E + where [<translate.storage.pypo.pounit object at 0x3ff7f27ea50>, <translate.storage.pypo.pounit object at 0x3ff7f27d6d0>, <translate.storage.pypo.pounit object at 0x3ff7faf8890>] = <translate.storage.pypo.pofile object at 0x3ff7f27caa0>.units 396s 396s tests/translate/convert/test_pot2po.py:25: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s <translate.storage.pypo.pofile object at 0x3ff7f27caa0> 396s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 396s 396s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x3ff80a3c440> 396s 396s @mark.xfail(reason="Not Implemented - needs review") 396s def test_merging_accelerator_changes(self): 396s """Test that a change in the accelerator localtion still allows merging.""" 396s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 396s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 396s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 396s newpo = self.convertpot(potsource, posource) 396s print(newpo) 396s > assert str(self.singleunit(newpo)) == poexpected 396s 396s tests/translate/convert/test_pot2po.py:190: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s pofile = <translate.storage.pypo.pofile object at 0x3ff7eeb0620> 396s 396s @staticmethod 396s def singleunit(pofile): 396s """Checks that the pofile contains a single non-header unit, and returns it.""" 396s > assert len(pofile.units) == 2 396s E assert 3 == 2 396s E + where 3 = len([<translate.storage.pypo.pounit object at 0x3ff7fd14830>, <translate.storage.pypo.pounit object at 0x3ff7fd143e0>, <translate.storage.pypo.pounit object at 0x3ff7fd14c20>]) 396s E + where [<translate.storage.pypo.pounit object at 0x3ff7fd14830>, <translate.storage.pypo.pounit object at 0x3ff7fd143e0>, <translate.storage.pypo.pounit object at 0x3ff7fd14c20>] = <translate.storage.pypo.pofile object at 0x3ff7eeb0620>.units 396s 396s tests/translate/convert/test_pot2po.py:25: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s <translate.storage.pypo.pofile object at 0x3ff7eeb0620> 396s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 396s 396s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x3ff80a3c5c0> 396s 396s @mark.xfail(reason="Not Implemented - review if this is even correct") 396s def test_lines_cut_differently(self): 396s """Checks that the correct formatting is preserved when pot an po lines differ.""" 396s potsource = ( 396s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 396s ) 396s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 396s newpo = self.convertpot(potsource, posource) 396s newpounit = self.singleunit(newpo) 396s > assert str(newpounit) == posource 396s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 396s E 396s E #: simple.label 396s E - msgid "Line" 396s E + msgid "Line split " 396s E ? +++++++ 396s E - " split differently" 396s E ? ------- 396s E + "differently" 396s E msgstr "Lyne verskillend gesny" 396s 396s tests/translate/convert/test_pot2po.py:201: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s #: simple.label 396s msgid "Line split " 396s "differently" 396s msgstr "Lyne verskillend gesny" 396s 396s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 396s 396s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x3ff80a3e990> 396s 396s @mark.xfail(reason="Not implemented - review if this is even correct") 396s def test_merging_msgid_change(self): 396s """Tests that if the msgid changes but the location stays the same that we merge.""" 396s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 396s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 396s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 396s newpo = self.convertpot(potsource, posource) 396s print(newpo) 396s > assert str(self.singleunit(newpo)) == poexpected 396s 396s tests/translate/convert/test_pot2po.py:121: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s pofile = <translate.storage.pypo.pofile object at 0x3ff7fd16870> 396s 396s @staticmethod 396s def singleunit(pofile): 396s """Checks that the pofile contains a single non-header unit, and returns it.""" 396s > assert len(pofile.units) == 2 396s E assert 3 == 2 396s E + where 3 = len([<translate.storage.pypo.pounit object at 0x3ff7fd16390>, <translate.storage.pypo.pounit object at 0x3ff7fd149b0>, <translate.storage.pypo.pounit object at 0x3ff7fd15d60>]) 396s E + where [<translate.storage.pypo.pounit object at 0x3ff7fd16390>, <translate.storage.pypo.pounit object at 0x3ff7fd149b0>, <translate.storage.pypo.pounit object at 0x3ff7fd15d60>] = <translate.storage.pypo.pofile object at 0x3ff7fd16870>.units 396s 396s tests/translate/convert/test_pot2po.py:25: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s <translate.storage.pypo.pofile object at 0x3ff7fd16870> 396s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 396s 396s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x3ff80a3f050> 396s 396s @mark.xfail(reason="Not Implemented - needs review") 396s def test_merging_accelerator_changes(self): 396s """Test that a change in the accelerator localtion still allows merging.""" 396s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 396s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 396s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 396s newpo = self.convertpot(potsource, posource) 396s print(newpo) 396s > assert str(self.singleunit(newpo)) == poexpected 396s 396s tests/translate/convert/test_pot2po.py:190: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s pofile = <translate.storage.pypo.pofile object at 0x3ff7eeb2990> 396s 396s @staticmethod 396s def singleunit(pofile): 396s """Checks that the pofile contains a single non-header unit, and returns it.""" 396s > assert len(pofile.units) == 2 396s E assert 3 == 2 396s E + where 3 = len([<translate.storage.pypo.pounit object at 0x3ff7f27d5e0>, <translate.storage.pypo.pounit object at 0x3ff7f27d190>, <translate.storage.pypo.pounit object at 0x3ff7faf81d0>]) 396s E + where [<translate.storage.pypo.pounit object at 0x3ff7f27d5e0>, <translate.storage.pypo.pounit object at 0x3ff7f27d190>, <translate.storage.pypo.pounit object at 0x3ff7faf81d0>] = <translate.storage.pypo.pofile object at 0x3ff7eeb2990>.units 396s 396s tests/translate/convert/test_pot2po.py:25: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s <translate.storage.pypo.pofile object at 0x3ff7eeb2990> 396s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 396s 396s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x3ff80a3f200> 396s 396s @mark.xfail(reason="Not Implemented - review if this is even correct") 396s def test_lines_cut_differently(self): 396s """Checks that the correct formatting is preserved when pot an po lines differ.""" 396s potsource = ( 396s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 396s ) 396s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 396s newpo = self.convertpot(potsource, posource) 396s newpounit = self.singleunit(newpo) 396s > assert str(newpounit) == posource 396s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 396s E 396s E #: simple.label 396s E - msgid "Line" 396s E + msgid "Line split " 396s E ? +++++++ 396s E - " split differently" 396s E ? ------- 396s E + "differently" 396s E msgstr "Lyne verskillend gesny" 396s 396s tests/translate/convert/test_pot2po.py:201: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s #: simple.label 396s msgid "Line split " 396s "differently" 396s msgstr "Lyne verskillend gesny" 396s 396s ________________________ TestYAML2PO.test_no_duplicates ________________________ 396s 396s self = <translate.storage.yaml.YAMLFile object at 0x3ff7eba08c0> 396s input = '\nfoo: bar\nfoo: baz\n' 396s 396s def parse(self, input): 396s """Parse the given file or file source string.""" 396s if hasattr(input, "name"): 396s self.filename = input.name 396s elif not getattr(self, "filename", ""): 396s self.filename = "" 396s if hasattr(input, "read"): 396s src = input.read() 396s input.close() 396s input = src 396s if isinstance(input, bytes): 396s input = input.decode("utf-8") 396s try: 396s > self._original = self.yaml.load(input) 396s 396s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 396s return constructor.get_single_data() 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 396s return self.construct_document(node) 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 396s for _dummy in generator: 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 396s self.construct_mapping(node, data, deep=True) 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 396s if self.check_mapping_key(node, key_node, maptyp, key, value): 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x3ff7eba05f0> 396s 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'))]) 396s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 396s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 396s 396s def check_mapping_key(self, node, key_node, mapping, key, value): 396s # type: (Any, Any, Any, Any, Any) -> bool 396s """return True if key is unique""" 396s if key in mapping: 396s if not self.allow_duplicate_keys: 396s mk = mapping.get(key) 396s args = [ 396s 'while constructing a mapping', 396s node.start_mark, 396s 'found duplicate key "{}" with value "{}" ' 396s '(original value: "{}")'.format(key, value, mk), 396s key_node.start_mark, 396s """ 396s To suppress this check see: 396s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 396s """, 396s """\ 396s Duplicate keys will become an error in future releases, and are errors 396s by default when using the new API. 396s """, 396s ] 396s if self.allow_duplicate_keys is None: 396s warnings.warn(DuplicateKeyFutureWarning(*args)) 396s else: 396s > raise DuplicateKeyError(*args) 396s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 396s E in "<unicode string>", line 2, column 1: 396s E foo: bar 396s E ^ (line: 2) 396s E found duplicate key "foo" with value "baz" (original value: "bar") 396s E in "<unicode string>", line 3, column 1: 396s E foo: baz 396s E ^ (line: 3) 396s E 396s E To suppress this check see: 396s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 396s 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 396s 396s During handling of the above exception, another exception occurred: 396s 396s self = <tests.translate.convert.test_yaml2po.TestYAML2PO object at 0x3ff80a192b0> 396s 396s @pytest.mark.xfail(reason="This is invalid YAML document") 396s def test_no_duplicates(self): 396s """Check converting drops duplicates.""" 396s input_string = """ 396s foo: bar 396s foo: baz 396s """ 396s > target_store = self._convert_to_store(input_string) 396s 396s tests/translate/convert/test_yaml2po.py:112: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 396s return self._convert(*args, **kwargs)[0] 396s tests/translate/convert/test_yaml2po.py:28: in _convert 396s converter = self.ConverterClass( 396s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 396s self.source_store = self.SourceStoreClass(input_file) 396s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 396s self.parse(inputfile) 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s self = <translate.storage.yaml.YAMLFile object at 0x3ff7eba08c0> 396s input = '\nfoo: bar\nfoo: baz\n' 396s 396s def parse(self, input): 396s """Parse the given file or file source string.""" 396s if hasattr(input, "name"): 396s self.filename = input.name 396s elif not getattr(self, "filename", ""): 396s self.filename = "" 396s if hasattr(input, "read"): 396s src = input.read() 396s input.close() 396s input = src 396s if isinstance(input, bytes): 396s input = input.decode("utf-8") 396s try: 396s self._original = self.yaml.load(input) 396s except YAMLError as e: 396s message = getattr(e, "problem", getattr(e, "message", str(e))) 396s if hasattr(e, "problem_mark"): 396s message += f" {e.problem_mark}" 396s > raise base.ParseError(message) 396s 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)' 396s 396s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 396s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 396s 396s self = <translate.storage.yaml.YAMLFile object at 0x3ff7eba38f0> 396s input = '\nfoo: bar\nfoo: baz\n' 396s 396s def parse(self, input): 396s """Parse the given file or file source string.""" 396s if hasattr(input, "name"): 396s self.filename = input.name 396s elif not getattr(self, "filename", ""): 396s self.filename = "" 396s if hasattr(input, "read"): 396s src = input.read() 396s input.close() 396s input = src 396s if isinstance(input, bytes): 396s input = input.decode("utf-8") 396s try: 396s > self._original = self.yaml.load(input) 396s 396s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 396s return constructor.get_single_data() 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 396s return self.construct_document(node) 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 396s for _dummy in generator: 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 396s self.construct_mapping(node, data, deep=True) 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 396s if self.check_mapping_key(node, key_node, maptyp, key, value): 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x3ff7eba2b10> 396s 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'))]) 396s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 396s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 396s 396s def check_mapping_key(self, node, key_node, mapping, key, value): 396s # type: (Any, Any, Any, Any, Any) -> bool 396s """return True if key is unique""" 396s if key in mapping: 396s if not self.allow_duplicate_keys: 396s mk = mapping.get(key) 396s args = [ 396s 'while constructing a mapping', 396s node.start_mark, 396s 'found duplicate key "{}" with value "{}" ' 396s '(original value: "{}")'.format(key, value, mk), 396s key_node.start_mark, 396s """ 396s To suppress this check see: 396s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 396s """, 396s """\ 396s Duplicate keys will become an error in future releases, and are errors 396s by default when using the new API. 396s """, 396s ] 396s if self.allow_duplicate_keys is None: 396s warnings.warn(DuplicateKeyFutureWarning(*args)) 396s else: 396s > raise DuplicateKeyError(*args) 396s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 396s E in "<unicode string>", line 2, column 1: 396s E foo: bar 396s E ^ (line: 2) 396s E found duplicate key "foo" with value "baz" (original value: "bar") 396s E in "<unicode string>", line 3, column 1: 396s E foo: baz 396s E ^ (line: 3) 396s E 396s E To suppress this check see: 396s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 396s 396s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 396s 396s During handling of the above exception, another exception occurred: 396s 396s self = <tests.translate.convert.test_yaml2po.TestYAML2POCommand object at 0x3ff806a4ad0> 396s 396s @pytest.mark.xfail(reason="This is invalid YAML document") 396s def test_no_duplicates(self): 396s """Check converting drops duplicates.""" 396s input_string = """ 396s foo: bar 396s foo: baz 396s """ 396s > target_store = self._convert_to_store(input_string) 396s 396s tests/translate/convert/test_yaml2po.py:112: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 396s return self._convert(*args, **kwargs)[0] 396s tests/translate/convert/test_yaml2po.py:28: in _convert 396s converter = self.ConverterClass( 396s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 396s self.source_store = self.SourceStoreClass(input_file) 396s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 396s self.parse(inputfile) 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s self = <translate.storage.yaml.YAMLFile object at 0x3ff7eba38f0> 396s input = '\nfoo: bar\nfoo: baz\n' 396s 396s def parse(self, input): 396s """Parse the given file or file source string.""" 396s if hasattr(input, "name"): 396s self.filename = input.name 396s elif not getattr(self, "filename", ""): 396s self.filename = "" 396s if hasattr(input, "read"): 396s src = input.read() 396s input.close() 396s input = src 396s if isinstance(input, bytes): 396s input = input.decode("utf-8") 396s try: 396s self._original = self.yaml.load(input) 396s except YAMLError as e: 396s message = getattr(e, "problem", getattr(e, "message", str(e))) 396s if hasattr(e, "problem_mark"): 396s message += f" {e.problem_mark}" 396s > raise base.ParseError(message) 396s 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)' 396s 396s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 396s __________________________ test_acceleratedvariables ___________________________ 396s 396s @mark.xfail(reason="Accelerated variables needs a better implementation") 396s def test_acceleratedvariables(): 396s """Test for accelerated variables.""" 396s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 396s mozillachecker = checks.MozillaChecker() 396s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 396s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 396s 396s tests/translate/filters/test_checks.py:206: AttributeError 396s ___________________________ test_musttranslatewords ____________________________ 396s 396s @mark.xfail(reason="FIXME: All fails() tests are not working") 396s def test_musttranslatewords(): 396s """Tests stopwords.""" 396s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 396s assert passes( 396s stdchecker.musttranslatewords, 396s "This uses Mozilla of course", 396s "hierdie gebruik le mozille natuurlik", 396s ) 396s stdchecker = checks.StandardChecker( 396s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 396s ) 396s assert passes( 396s stdchecker.musttranslatewords, 396s "This uses Mozilla of course", 396s "hierdie gebruik le mozille natuurlik", 396s ) 396s > assert fails( 396s stdchecker.musttranslatewords, 396s "This uses Mozilla of course", 396s "hierdie gebruik Mozilla natuurlik", 396s ) 396s E AssertionError: assert False 396s E + where False = fails(<bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x3ff7ebd9d60>>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 396s E + where <bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x3ff7ebd9d60>> = <translate.filters.checks.StandardChecker object at 0x3ff7ebd9d60>.musttranslatewords 396s 396s tests/translate/filters/test_checks.py:612: AssertionError 396s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 396s 396s @mark.xfail(reason="Bug #3408") 396s def test_persian_single_and_double_quote_fail_at_the_same_time(): 396s """Test Persian single and double quote failures in string with single quotes.""" 396s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 396s 396s # With single quote check. 396s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 396s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 396s E assert False 396s E + where False = fails(<bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x3ff7eb9f350>>, "Path: '%S'", 'مسیر: "%S"\u200e') 396s E + where <bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x3ff7eb9f350>> = <translate.filters.checks.StandardChecker object at 0x3ff7eb9f350>.singlequoting 396s 396s tests/translate/filters/test_checks.py:1271: AssertionError 396s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 396s 396s @mark.xfail(reason="Bug #3506") 396s def test_bengali_mozilla_inverted_xmltags(): 396s """Test Bengali Mozilla XML tags.""" 396s bn_mozilla_checker = checks.MozillaChecker( 396s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 396s ) 396s 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.""" 396s str_bn = """এর প্রচলন ঘটাতে আমরা <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> প্রতিষ্ঠায় <a href="%(cofound_url)s" rel="external">সহযোগী</a> ছিলাম।ন।""" 396s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 396s E assert False 396s E + where False = passes(<bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x3ff7fdf44a0>>, '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> ছিলাম।ন।') 396s E + where <bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x3ff7fdf44a0>> = <translate.filters.checks.MozillaChecker object at 0x3ff7fdf44a0>.xmltags 396s 396s tests/translate/filters/test_checks.py:2065: AssertionError 396s _______________________________ test_word_khmer ________________________________ 396s 396s @mark.xfail( 396s reason="ZWS is not considered a space in Python 2.6+. Khmer " 396s "should extend words() to include \\u200b in addition to " 396s "other word breakers." 396s ) 396s def test_word_khmer(): 396s language = common.Common 396s # Let's test Khmer with zero width space (\u200b) 396s words = language.words("ផ្ដល់\u200bយោបល់") 396s print("ផ្ដល់\u200bយោបល់") 396s print(language.words("ផ្ដល់<200b>យោបល់")) 396s print(["ផ្ដល់", "យោបល់"]) 396s > assert words == ["ផ្ដល់", "យោបល់"] 396s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 396s E 396s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 396s E Right contains one more item: 'យោបល់' 396s E 396s E Full diff: 396s E [ 396s E + 'ផ្ដល់\u200bយោបល់',... 396s E 396s E ...Full output truncated (3 lines hidden), use '-vv' to show 396s 396s tests/translate/lang/test_common.py:47: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s ផ្ដល់​យោបល់ 396s ['ផ្ដល់<200b>យោបល់'] 396s ['ផ្ដល់', 'យោបល់'] 396s __________________ TestConverters.test_to_general_placeables ___________________ 396s 396s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x3ff7e8ce090> 396s 396s @mark.xfail(reason="Test needs fixing, disabled for now") 396s def test_to_general_placeables(self): 396s basetree = base.to_base_placeables(self.elem) 396s gentree = general.to_general_placeables(basetree) 396s > assert gentree == self.elem 396s E assert <StringElem([...(['</a>'])>])> == <StringElem([...(['</a>'])>])> 396s E 396s E Full diff: 396s E - <StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 396s E ? ^^^ 396s E + <StringElem([<StringElem(['Ģët '])>, <XMLEntityPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 396s E ? ^^^^^^ 396s 396s tests/translate/storage/placeables/test_base.py:210: AssertionError 396s ___________________ TestConverters.test_to_xliff_placeables ____________________ 396s 396s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x3ff7e8cebd0> 396s 396s @mark.xfail(reason="Test needs fixing, disabled for now") 396s def test_to_xliff_placeables(self): 396s basetree = base.to_base_placeables(self.elem) 396s xliff_from_base = xliff.to_xliff_placeables(basetree) 396s > assert str(xliff_from_base) != str(self.elem) 396s 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>' 396s 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>'])>])>) 396s 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>'])>])>) 396s 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 0x3ff7e8cebd0>.elem 396s 396s tests/translate/storage/placeables/test_base.py:216: AssertionError 396s _____________________ test_quotefordtd_unimplemented_cases _____________________ 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_quotefordtd_unimplemented_cases(): 396s """Test unimplemented quoting DTD cases.""" 396s > assert dtd.quotefordtd("Between <p> and </p>") == ( 396s '"Between <p> and </p>"' 396s ) 396s E assert '"Between <p> and </p>"' == '"Between <...d </p>"' 396s E 396s E - "Between <p> and </p>" 396s E + "Between <p> and </p>" 396s 396s tests/translate/storage/test_dtd.py:72: AssertionError 396s ___________________ test_unquotefromdtd_unimplemented_cases ____________________ 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_unquotefromdtd_unimplemented_cases(): 396s """Test unimplemented unquoting DTD cases.""" 396s > assert dtd.unquotefromdtd('"<p> and </p>"') == "<p> and </p>" 396s E AssertionError: assert '<p> and </p>' == '<p> and </p>' 396s E 396s E - <p> and </p> 396s E + <p> and </p> 396s 396s tests/translate/storage/test_dtd.py:103: AssertionError 396s ________________________ TestDTD.test_comment_following ________________________ 396s 396s self = <tests.translate.storage.test_dtd.TestDTD object at 0x3ff7e654b90> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_comment_following(self): 396s """Check that comments that appear after and entity are not pushed onto another line.""" 396s dtdsource = '<!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->' 396s dtdregen = self.dtdregen(dtdsource) 396s > assert dtdsource == dtdregen 396s E assert '<!ENTITY tex...keyboards -->' == '<!-- + is ab...dkey2 "="> \n' 396s E 396s E + <!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards --> 396s E - <!-- + is above this key on many keyboards --> 396s E - <!ENTITY textZoomEnlargeCmd.commandkey2 "="> 396s 396s tests/translate/storage/test_dtd.py:344: AssertionError 396s _________________________ TestDTD.test_invalid_quoting _________________________ 396s 396s self = <tests.translate.storage.test_dtd.TestDTD object at 0x3ff7e657e90> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_invalid_quoting(self): 396s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 396s # TODO: we should rather raise an error 396s dtdsource = '<!ENTITY test.me "bananas for sale""room">\n' 396s assert ( 396s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 396s ) 396s dtdfile = self.dtdparse(dtdsource) 396s assert len(dtdfile.units) == 1 396s dtdunit = dtdfile.units[0] 396s assert dtdunit.definition == '"bananas for sale"' 396s > assert bytes(dtdfile) == b'<!ENTITY test.me "bananas for sale">\n' 396s E assert b'' == b'<!ENTITY te... for sale">\n' 396s E 396s E Full diff: 396s E - (b'<!ENTITY test.me "bananas for sale">\n') 396s E + b'' 396s 396s tests/translate/storage/test_dtd.py:364: AssertionError 396s __________________________ TestOtFile.test_extensions __________________________ 396s 396s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x3ff7fb47920> 396s 396s @mark.xfail( 396s reason="This doesn't work, due to two store classes handling different " 396s "extensions, but factory listing it as one supported file type" 396s ) 396s def test_extensions(self): 396s > super().test_extensions() 396s 396s tests/translate/storage/test_omegat.py:20: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x3ff7fb47920> 396s 396s def test_extensions(self): 396s """Test that the factory knows the extensions for this class.""" 396s supported = factory.supported_files() 396s supported_dict = { 396s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 396s } 396s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 396s return 396s detail = supported_dict[ 396s self.StoreClass.Name 396s ] # will start to get problematic once translated 396s print("Factory:", detail[0]) 396s print("StoreClass:", self.StoreClass.Extensions) 396s for ext in detail[0]: 396s > assert ext in self.StoreClass.Extensions 396s E AssertionError: assert 'tab' in ['utf8'] 396s E + where ['utf8'] = <class 'translate.storage.omegat.OmegaTFile'>.Extensions 396s E + where <class 'translate.storage.omegat.OmegaTFile'> = <tests.translate.storage.test_omegat.TestOtFile object at 0x3ff7fb47920>.StoreClass 396s 396s tests/translate/storage/test_base.py:386: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s Factory: ['utf8', 'tab'] 396s StoreClass: ['utf8'] 396s _________________________ TestPOFile.test_kde_plurals __________________________ 396s 396s self = <tests.translate.storage.test_po.TestPOFile object at 0x3ff7ec494f0> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_kde_plurals(self): 396s """Tests kde-style plurals. (Bug: 191).""" 396s posource = r"""msgid "_n Singular\n" 396s "Plural" 396s msgstr "Een\n" 396s "Twee\n" 396s "Drie" 396s """ 396s pofile = self.poparse(posource) 396s assert len(pofile.units) == 1 396s unit = pofile.units[0] 396s > assert unit.hasplural() 396s E assert False 396s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x3ff7d17fbf0>>() 396s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x3ff7d17fbf0>> = <translate.storage.pypo.pounit object at 0x3ff7d17fbf0>.hasplural 396s 396s tests/translate/storage/test_po.py:374: AssertionError 396s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 396s 396s self = <tests.translate.storage.test_po.TestPOFile object at 0x3ff7ec498b0> 396s 396s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 396s def test_makeobsolete_untranslated(self): 396s """Tests making an untranslated unit obsolete.""" 396s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 396s pofile = self.poparse(posource) 396s unit = pofile.units[0] 396s print(bytes(pofile)) 396s assert not unit.isobsolete() 396s unit.makeobsolete() 396s > assert str(unit) == "" 396s E assert '#~ msgid "te...~ msgstr ""\n' == '' 396s E 396s E + #~ msgid "test" 396s E + #~ msgstr "" 396s 396s tests/translate/storage/test_po.py:449: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 396s ________________________ TestXWikiFullPage.test_remove _________________________ 396s 396s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x3ff7fce9e20> 396s 396s @mark.xfail(reason="removal not working in full page") 396s def test_remove(self): 396s > super().test_remove() 396s 396s tests/translate/storage/test_properties.py:1614: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x3ff7fce9e20> 396s 396s def test_remove(self): 396s """Tests removing a unit with a source string.""" 396s store = self.StoreClass() 396s unit = store.addsourceunit("Test String") 396s # Some storages (MO, OmegaT) serialize only translated units 396s unit.target = "Test target" 396s assert headerless_len(store.units) == 1 396s withunit = bytes(store) 396s print(withunit) 396s store.removeunit(unit) 396s assert headerless_len(store.units) == 0 396s withoutunit = bytes(store) 396s print(withoutunit) 396s > assert withoutunit != withunit 396s 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' 396s 396s tests/translate/storage/test_base.py:278: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s 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' 396s 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' 396s ________________________ TestPYPOFile.test_kde_plurals _________________________ 396s 396s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x3ff7ec52d20> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_kde_plurals(self): 396s """Tests kde-style plurals. (Bug: 191).""" 396s posource = r"""msgid "_n Singular\n" 396s "Plural" 396s msgstr "Een\n" 396s "Twee\n" 396s "Drie" 396s """ 396s pofile = self.poparse(posource) 396s assert len(pofile.units) == 1 396s unit = pofile.units[0] 396s > assert unit.hasplural() 396s E assert False 396s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x3ff76fda1e0>>() 396s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x3ff76fda1e0>> = <translate.storage.pypo.pounit object at 0x3ff76fda1e0>.hasplural 396s 396s tests/translate/storage/test_po.py:374: AssertionError 396s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 396s 396s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x3ff7ec539b0> 396s 396s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 396s def test_makeobsolete_untranslated(self): 396s """Tests making an untranslated unit obsolete.""" 396s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 396s pofile = self.poparse(posource) 396s unit = pofile.units[0] 396s print(bytes(pofile)) 396s assert not unit.isobsolete() 396s unit.makeobsolete() 396s > assert str(unit) == "" 396s E assert '#~ msgid "te...~ msgstr ""\n' == '' 396s E 396s E + #~ msgid "test" 396s E + #~ msgstr "" 396s 396s tests/translate/storage/test_po.py:449: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 396s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 396s 396s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x3ff7ec53ce0> 396s 396s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 396s def test_mixed_newlines_typecomment(self): 396s """Checks that mixed newlines in typecomments are properly parsed.""" 396s # This was generated by translate-tookit prior to 396s # issue that test_dos_newlines_write is covering was fixed. 396s posource = b"""#, fuzzy 396s msgid "test me"\r 396s msgstr ""\r 396s """ 396s > pofile = self.poparse(posource) 396s 396s tests/translate/storage/test_pypo.py:620: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s tests/translate/storage/test_po.py:214: in poparse 396s return self.StoreClass(dummyfile) 396s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 396s super().__init__(inputfile, **kwargs) 396s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 396s self.parse(inputfile) 396s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 396s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s parse_state = <translate.storage.poparser.ParseState object at 0x3ff76fd8dd0> 396s store = <translate.storage.pypo.pofile object at 0x3ff76fda450> 396s 396s def parse_units(parse_state, store): 396s unit = parse_header(parse_state, store) 396s while unit: 396s unit.infer_state() 396s store.addunit(unit) 396s unit = parse_unit(parse_state) 396s if not parse_state.eof: 396s > raise PoParseError(parse_state) 396s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 396s 396s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 396s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 396s 396s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x3ff7ed86210> 396s 396s @pytest.mark.xfail(reason="Not Implemented") 396s def test_note_sanity(self): 396s > super().test_note_sanity() 396s 396s tests/translate/storage/test_subtitles.py:13: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x3ff7ed86210> 396s 396s def test_note_sanity(self): 396s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 396s unit = self.unit 396s 396s unit.addnote("Test note 1", origin="translator") 396s unit.addnote("Test note 2", origin="translator") 396s unit.addnote("Test note 3", origin="translator") 396s expected_notes = "Test note 1\nTest note 2\nTest note 3" 396s actual_notes = unit.getnotes(origin="translator") 396s > assert actual_notes == expected_notes 396s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 396s E 396s E - Test note 1 396s E - Test note 2 396s E - Test note 3 396s 396s tests/translate/storage/test_base.py:180: AssertionError 396s __________________________ TestCount.test_plurals_kde __________________________ 396s 396s self = <tests.translate.tools.test_pocount.TestCount object at 0x3ff7f942ea0> 396s 396s @mark.xfail(reason="Support commented out pending removal") 396s def test_plurals_kde(self): 396s """Test that we correcly count old style KDE plurals.""" 396s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 396s 396s tests/translate/tools/test_pocount.py:91: 396s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 396s 396s source = '_n: Singular\\n\nPlural', expectedsource = 2 396s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 396s 396s @staticmethod 396s def count(source, expectedsource, target=None, expectedtarget=None): 396s """Simple helper to check the respective word counts.""" 396s poelement = po.pounit(source) 396s if target is not None: 396s poelement.target = target 396s wordssource, wordstarget = pocount.wordsinunit(poelement) 396s print( 396s 'Source (expected=%d; actual=%d): "%s"' 396s % (expectedsource, wordssource, source) 396s ) 396s > assert wordssource == expectedsource 396s E assert 3 == 2 396s 396s tests/translate/tools/test_pocount.py:33: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s Source (expected=2; actual=3): "_n: Singular\n 396s Plural" 396s _________________________ TestPOMerge.test_escape_tabs _________________________ 396s 396s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x3ff7f902600> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_escape_tabs(self): 396s """Ensure that input tabs are escaped in the output, like gettext does.""" 396s # The strings below contains the tab character, not spaces. 396s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 396s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 396s expectedpo = r"""msgid "First\tSecond" 396s msgstr "Eerste\tTweede" 396s """ 396s pofile = self.mergestore(templatepo, mergepo) 396s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 396s > assert bytes(pofile).decode("utf-8") == expectedpo 396s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 396s E 396s E - msgid "First\tSecond" 396s E ? ^^ 396s E + msgid "First Second" 396s E ? ^ 396s E msgstr "Eerste\tTweede" 396s 396s tests/translate/tools/test_pomerge.py:349: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s Expected: 396s msgid "First\tSecond" 396s msgstr "Eerste\tTweede" 396s 396s 396s Merged: 396s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 396s __________________ TestPretranslate.test_merging_msgid_change __________________ 396s 396s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x3ff7f900500> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_merging_msgid_change(self): 396s """ 396s tests that if the msgid changes but the location stays the same that 396s we merge. 396s """ 396s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 396s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 396s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 396s newpo = self.pretranslatepo(input_source, template_source) 396s print(bytes(newpo)) 396s > assert bytes(newpo).decode("utf-8") == poexpected 396s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 396s E 396s E #: simple.label 396s E #: simple.accesskey 396s E - #, fuzzy 396s E msgid "Its &hard coding a newline.\n" 396s E - msgstr "&Hart gekoeerde nuwe lyne\n" 396s E + msgstr "" 396s 396s tests/translate/tools/test_pretranslate.py:130: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 396s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 396s 396s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x3ff7f9f4110> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_merging_accelerator_changes(self): 396s """ 396s test that a change in the accelerator localtion still allows 396s merging. 396s """ 396s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 396s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 396s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 396s newpo = self.pretranslatepo(input_source, template_source) 396s print(bytes(newpo)) 396s > assert bytes(newpo).decode("utf-8") == poexpected 396s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 396s E 396s E #: someline.c 396s E msgid "A&bout" 396s E - msgstr "&Info" 396s E ? ----- 396s E + msgstr "" 396s 396s tests/translate/tools/test_pretranslate.py:185: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 396s _________________ TestPretranslate.test_lines_cut_differently __________________ 396s 396s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x3ff7f9f4050> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_lines_cut_differently(self): 396s """ 396s Checks that the correct formatting is preserved when pot an po lines 396s differ. 396s """ 396s input_source = ( 396s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 396s ) 396s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 396s newpo = self.pretranslatepo(input_source, template_source) 396s newpounit = self.singleunit(newpo) 396s > assert str(newpounit) == template_source 396s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 396s E 396s E #: simple.label 396s E - msgid "Line" 396s E + msgid "Line split " 396s E ? +++++++ 396s E - " split differently" 396s E ? ------- 396s E + "differently" 396s E msgstr "Lyne verskillend gesny" 396s 396s tests/translate/tools/test_pretranslate.py:199: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s #: simple.label 396s msgid "Line split " 396s "differently" 396s msgstr "Lyne verskillend gesny" 396s 396s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 396s 396s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x3ff7f9f6030> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_merging_msgid_change(self): 396s """ 396s tests that if the msgid changes but the location stays the same that 396s we merge. 396s """ 396s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 396s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 396s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 396s newpo = self.pretranslatepo(input_source, template_source) 396s print(bytes(newpo)) 396s > assert bytes(newpo).decode("utf-8") == poexpected 396s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 396s E 396s E #: simple.label 396s E #: simple.accesskey 396s E - #, fuzzy 396s E msgid "Its &hard coding a newline.\n" 396s E - msgstr "&Hart gekoeerde nuwe lyne\n" 396s E + msgstr "" 396s 396s tests/translate/tools/test_pretranslate.py:130: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 396s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 396s 396s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x3ff7f9f4410> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_merging_accelerator_changes(self): 396s """ 396s test that a change in the accelerator localtion still allows 396s merging. 396s """ 396s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 396s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 396s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 396s newpo = self.pretranslatepo(input_source, template_source) 396s print(bytes(newpo)) 396s > assert bytes(newpo).decode("utf-8") == poexpected 396s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 396s E 396s E #: someline.c 396s E msgid "A&bout" 396s E - msgstr "&Info" 396s E ? ----- 396s E + msgstr "" 396s 396s tests/translate/tools/test_pretranslate.py:185: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 396s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 396s 396s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x3ff7f9f54c0> 396s 396s @mark.xfail(reason="Not Implemented") 396s def test_lines_cut_differently(self): 396s """ 396s Checks that the correct formatting is preserved when pot an po lines 396s differ. 396s """ 396s input_source = ( 396s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 396s ) 396s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 396s newpo = self.pretranslatepo(input_source, template_source) 396s newpounit = self.singleunit(newpo) 396s > assert str(newpounit) == template_source 396s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 396s E 396s E #: simple.label 396s E - msgid "Line" 396s E + msgid "Line split " 396s E ? +++++++ 396s E - " split differently" 396s E ? ------- 396s E + "differently" 396s E msgstr "Lyne verskillend gesny" 396s 396s tests/translate/tools/test_pretranslate.py:199: AssertionError 396s ----------------------------- Captured stdout call ----------------------------- 396s #: simple.label 396s msgid "Line split " 396s "differently" 396s msgstr "Lyne verskillend gesny" 396s 396s =============================== warnings summary =============================== 396s tests/translate/storage/test_cpo.py:15 396s Warning: 396s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 396s ImportError('gettext PO library not found') 396s In pytest 9.1 this warning will become an error by default. 396s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 396s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 396s 396s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 396s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ZSvJAW/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 396s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 396s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 396s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 396s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 396s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 396s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 396s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 396s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 396s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 396s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 396s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 396s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 396s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 396s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 396s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 396s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 396s Warning: Could not find accesskey for key.accesskey 396s 396s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 396s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 396s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 396s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 396s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 396s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ZSvJAW/autopkgtest_tmp/tests/translate/convert/test.idml'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 396s Warning: unclosed file <_io.BufferedReader name='translation.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 396s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 396s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 396s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 396s Warning: Could not find accesskey for prop.accesskey 396s 396s tests/translate/convert/test_po2tmx.py: 26 warnings 396s tests/translate/filters/test_pofilter.py: 13 warnings 396s tests/translate/storage/test_tbx.py: 17 warnings 396s tests/translate/storage/test_tmx.py: 24 warnings 396s 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' 396s 396s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 396s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 396s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 396s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 396s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 396s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 396s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 396s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 396s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 396s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 396s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 396s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 396s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ZSvJAW/autopkgtest_tmp/tests/translate/convert/test.odt'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 396s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 396s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 396s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 396s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 396s Enable tracemalloc to get traceback where the object was allocated. 396s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 396s 396s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 396s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 396s 396s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 396s Warning: DTD file '' does not validate 396s 396s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 396s --------------------------- snapshot report summary ---------------------------- 396s 23 snapshots passed. 396s =========================== short test summary info ============================ 396s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 396s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 396s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 396s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 396s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 396s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 396s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 396s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 396s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 396s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 396s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 396s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 396s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 396s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 396s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 396s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 396s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 396s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 396s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 396s 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. 396s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 396s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 396s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 396s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 396s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 396s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 396s 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 396s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 396s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 396s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 396s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 396s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 396s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 396s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 396s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 396s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 396s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 396s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 396s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 396s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 396s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 396s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 396s ========== 3273 passed, 3 skipped, 39 xfailed, 127 warnings in 27.24s ========== 397s autopkgtest [03:07:12]: test python3-translate-commands: -----------------------] 398s autopkgtest [03:07:13]: test python3-translate-commands: - - - - - - - - - - results - - - - - - - - - - 398s python3-translate-commands PASS 398s autopkgtest [03:07:13]: @@@@@@@@@@@@@@@@@@@@ summary 398s translate-toolkit PASS 398s python3-translate PASS 398s python3-translate-commands PASS 410s nova [W] Using flock in scalingstack-bos01-s390x 410s Creating nova instance adt-oracular-s390x-translate-toolkit-20240608-030035-juju-7f2275-prod-proposed-migration-environment-2-098217ce-7a24-451a-a62a-720bfe74ddd7 from image adt/ubuntu-oracular-s390x-server-20240607.img (UUID 7eeb2415-a1eb-49f2-b205-8690074843ed)... 410s nova [W] Using flock in scalingstack-bos01-s390x 410s Creating nova instance adt-oracular-s390x-translate-toolkit-20240608-030035-juju-7f2275-prod-proposed-migration-environment-2-098217ce-7a24-451a-a62a-720bfe74ddd7 from image adt/ubuntu-oracular-s390x-server-20240607.img (UUID 7eeb2415-a1eb-49f2-b205-8690074843ed)...